public override TReturn VisitExpression([NotNull] SQEParser.ExpressionContext context) { generator.Initialize(); var mex = context.mainExpr(); TReturn mainExpression = mex != null?Visit(mex) : null; return(generator.VisitMainExp(mainExpression)); }
public static TResult GenerateCommand <TReturn, TResult>(IQueryGenerator <TReturn, TResult> qg, string input) where TReturn : class { SQEParser.ExpressionContext expressionContext = ProcessInput(input); var visitor = new AbstractTreeVisitor <TReturn, TResult>(qg); visitor.Visit(expressionContext); return(qg.GetResult()); }
private static SQEParser.ExpressionContext ProcessInput(string input) { AntlrInputStream inputStream = new AntlrInputStream(input); var lexer = new SQELexer(inputStream); CommonTokenStream commonTokenStream = new CommonTokenStream(lexer); var parser = new SQEParser(commonTokenStream); parser.RemoveErrorListeners(); parser.AddErrorListener(new PrimitiveErrorListener()); SQEParser.ExpressionContext expressionContext = parser.expression(); return(expressionContext); }
/// <summary> /// Visit a parse tree produced by <see cref="SQEParser.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 VisitExpression([NotNull] SQEParser.ExpressionContext context) { return(VisitChildren(context)); }