public override ASTNode VisitComparisson([NotNull] CoolParser.ComparissonContext context) { ComparisonOperation operators; switch (context.op.Text) { case "<=": operators = new LessEqual(context); break; case "<": operators = new Less(context); break; case "=": operators = new EqualNode(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 VisitComparisson([NotNull] CoolParser.ComparissonContext context) { BinaryOperatorNode coNode = null; if (context.op.Text == "<") { coNode = new LessNode(context.Start.Line, context.Start.Column); } if (context.op.Text == "=") { coNode = new EqualNode(context.Start.Line, context.Start.Column); } if (context.op.Text == "<=") { coNode = new LessEqualNode(context.Start.Line, context.Start.Column); } coNode.LeftOperand = Visit(context.expr(0)) as ExpressionNode; coNode.RightOperand = Visit(context.expr(1)) as ExpressionNode; return(coNode); }
/// <summary> /// Visit a parse tree produced by the <c>comparisson</c> /// labeled alternative in <see cref="CoolParser.expr"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitComparisson([NotNull] CoolParser.ComparissonContext context) { return(VisitChildren(context)); }