public MulNode Mulibly()
        {
            MulNode mulNode = new MulNode();

            Match(TokenType.MUL);
            return(mulNode);
        }
Esempio n. 2
0
        public override Node VisitArithmetic([NotNull] TigerParser.ArithmeticContext context)
        {
            ArithmeticNode node;

            switch (context.op.Text)
            {
            case "*":
                node = new MulNode(context);
                break;

            case "/":
                node = new DivNode(context);
                break;

            case "+":
                node = new PlusNode(context);
                break;

            case "-":
                node = new MinusNode(context);
                break;

            default:
                throw new NotSupportedException();
            }

            node.Children.Add(Visit(context.expr(0))); // LEFT EXPRESSION
            node.Children.Add(Visit(context.expr(1))); // RIGHT EXPRESSION
            return(node);
        }
Esempio n. 3
0
        public override ASTNode VisitArithmetic([NotNull] CoolParser.ArithmeticContext context)
        {
            ArithmeticOperation operators;

            switch (context.op.Text)
            {
            case "*":
                operators = new MulNode(context);
                break;

            case "/":
                operators = new DivNode(context);
                break;

            case "+":
                operators = new AddNode(context);
                break;

            case "-":
                operators = new SubNode(context);
                break;

            default:
                throw new NotSupportedException();
            }

            operators.LeftOperand  = Visit(context.expression(0)) as ExpressionNode;     // LEFT EXPRESSION
            operators.RightOperand = Visit(context.expression(1)) as ExpressionNode;     //RIGHT EXPRESSION

            return(operators);
        }
        public override ASTNode VisitArithmetic([NotNull] CoolParser.ArithmeticContext context)
        {
            BinaryOperatorNode boNode = null;

            if (context.op.Text == "+")
            {
                boNode = new SumNode(context.Start.Line, context.Start.Column);
            }
            if (context.op.Text == "-")
            {
                boNode = new SubNode(context.Start.Line, context.Start.Column);
            }
            if (context.op.Text == "*")
            {
                boNode = new MulNode(context.Start.Line, context.Start.Column);
            }
            if (context.op.Text == "/")
            {
                boNode = new DivNode(context.Start.Line, context.Start.Column);
            }

            boNode.LeftOperand  = Visit(context.expr(0)) as ExpressionNode;
            boNode.RightOperand = Visit(context.expr(1)) as ExpressionNode;

            return(boNode);
        }
        public override ASTN VisitMuldiv([NotNull] MuldivContext context)
        {
            ExprNode       Leftexpr  = (VisitExpr(context.left) as ExprNode);
            ExprNode       Rigthexpr = (VisitExpr(context.right) as ExprNode);
            AritmethicNode node;

            if (context.op.Type == MUL)
            {
                node = new MulNode(context);
            }
            else
            {
                node = new DivNode(context);
            }

            node.Leftexpr  = Leftexpr;
            node.Rigthexpr = Rigthexpr;

            return(node);
        }
Esempio n. 6
0
 public abstract T Visit(MulNode node);