Beispiel #1
0
        public override object VisitBoolean_expression([NotNull] KoraliumParser.Boolean_expressionContext context)
        {
            if (context.exclamationexpr != null || context.notexpr != null)
            {
                KoraliumParser.Boolean_expressionContext expr = context.exclamationexpr ?? context.notexpr;

                var booleanExpression = Visit(expr) as BooleanExpression;
                return(new NotExpression()
                {
                    BooleanExpression = booleanExpression
                });
            }

            //Check if there is an expression inside
            if (context.inner != null)
            {
                return(Visit(context.inner));
            }

            var booleanBinaryTypeNode = context.boolean_binary_type();

            if (booleanBinaryTypeNode != null)
            {
                return(new BooleanBinaryExpression()
                {
                    Left = Visit(context.left) as BooleanExpression,
                    Right = Visit(context.right) as BooleanExpression,
                    Type = ParseBinaryType(booleanBinaryTypeNode)
                });
            }

            var predicateNode = context.predicate();

            if (predicateNode != null)
            {
                return(Visit(predicateNode) as BooleanExpression);
            }

            var scalarExpression = context.scalar_expression();

            if (scalarExpression != null)
            {
                var scalar = Visit(scalarExpression) as ScalarExpression;
                return(new BooleanScalarExpression()
                {
                    ScalarExpression = scalar
                });
            }


            throw new NotImplementedException();
        }
 /// <summary>
 /// Exit a parse tree produced by <see cref="KoraliumParser.boolean_expression"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitBoolean_expression([NotNull] KoraliumParser.Boolean_expressionContext context)
 {
 }
Beispiel #3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="KoraliumParser.boolean_expression"/>.
 /// <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 VisitBoolean_expression([NotNull] KoraliumParser.Boolean_expressionContext context)
 {
     return(VisitChildren(context));
 }