示例#1
0
        public override int VisitExpr_PLUSMINUS(MINICParser.Expr_PLUSMINUSContext context)
        {
            int    serial = ms_serialCounter++;
            string s      = "";

            switch (context.op.Type)
            {
            case MINICParser.PLUS:
                s = "Expr_PLUS_" + serial;
                // Preorder action
                outFile.WriteLine("\"{0}\"->\"{1}\";", m_labels.Peek(), s);
                break;

            case MINICParser.MINUS:
                s = "Expr_MINUS_" + 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_PLUSMINUS(MINICParser.Expr_PLUSMINUSContext context)
        {
            ASTComposite m_parent = m_parents.Peek();

            if (context.op.Type == MINICParser.MINUS)
            {
                CASTExpressionSubtraction newnode = new CASTExpressionSubtraction(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_SUBTRACTION_LEFT);
                this.VisitElementInContext(context.expression(1), m_parentContext, contextType.CT_EXPRESSION_SUBTRACTION_RIGHT);
            }
            else if (context.op.Type == MINICParser.PLUS)
            {
                CASTExpressionAddition newnode = new CASTExpressionAddition(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_ADDITION_LEFT);
                this.VisitElementInContext(context.expression(1), m_parentContext, contextType.CT_EXPRESSION_ADDITION_RIGHT);
            }



            m_parents.Pop();
            return(0);
        }