public MulNode Mulibly() { MulNode mulNode = new MulNode(); Match(TokenType.MUL); return(mulNode); }
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); }
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); }
public abstract T Visit(MulNode node);