public override int VisitExpr_DIVMULT(MINICParser.Expr_DIVMULTContext context) { int serial = ms_serialCounter++; string s = ""; switch (context.op.Type) { case MINICParser.MULT: s = "Expr_MULT_" + serial; // Preorder action outFile.WriteLine("\"{0}\"->\"{1}\";", m_labels.Peek(), s); break; case MINICParser.DIV: s = "Expr_DIV_" + serial; // Preorder action outFile.WriteLine("\"{0}\"->\"{1}\";", m_labels.Peek(), s); break; default: break; } m_labels.Push(s); base.VisitChildren(context); m_labels.Pop(); return(0); }
public override int VisitExpr_DIVMULT(MINICParser.Expr_DIVMULTContext context) { ASTComposite m_parent = m_parents.Peek(); if (context.op.Type == MINICParser.MULT) { CASTExpressionMultiplication newnode = new CASTExpressionMultiplication(context.GetText(), m_parents.Peek(), 2); m_parent.AddChild(newnode, m_parentContext.Peek()); m_parents.Push(newnode); this.VisitElementInContext(context.expression(0), m_parentContext, contextType.CT_EXPRESSION_MULTIPLICATION_LEFT); this.VisitElementInContext(context.expression(1), m_parentContext, contextType.CT_EXPRESSION_MULTIPLICATION_RIGHT); } else if (context.op.Type == MINICParser.DIV) { CASTExpressionDivision newnode = new CASTExpressionDivision(context.GetText(), m_parents.Peek(), 2); m_parent.AddChild(newnode, m_parentContext.Peek()); m_parents.Push(newnode); this.VisitElementInContext(context.expression(0), m_parentContext, contextType.CT_EXPRESSION_DIVISION_LEFT); this.VisitElementInContext(context.expression(1), m_parentContext, contextType.CT_EXPRESSION_DIVISION_RIGHT); } m_parents.Pop(); return(0); }