Example #1
0
        internal static SqlExpressionParseResult ParseExpression(IContext context, string text)
        {
            var messages    = new List <SqlParseMessage>();
            var plSqlParser = MakeParser(text, message => messages.Add(message));

            //var plSqlParser = MakeParser(text, null);
            var parseResult = plSqlParser.expressionUnit();

            var visitor = new PlSqlExpressionVisitor(context);
            var result  = visitor.Visit(parseResult);

            var errors = messages.Where(x => x.Level == SqlParseMessageLevel.Error).Select(x => x.Message).ToArray();

            if (errors.Length > 0)
            {
                return(SqlExpressionParseResult.Fail(errors));
            }

            return(SqlExpressionParseResult.Success(result));
        }