示例#1
0
        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));
 }