public VBAConditionalCompilationParser.CompilationUnitContext Parse(string moduleName, string unprocessedCode) { var stream = new AntlrInputStream(unprocessedCode); var lexer = new VBALexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new VBAConditionalCompilationParser(tokens); parser.AddErrorListener(new ExceptionErrorListener()); VBAConditionalCompilationParser.CompilationUnitContext tree = null; try { parser.Interpreter.PredictionMode = PredictionMode.Sll; tree = parser.compilationUnit(); } catch (Exception ex) { _logger.Warn(ex, "SLL mode failed in module {0}. Retrying using LL.", moduleName); tokens.Reset(); parser.Reset(); parser.Interpreter.PredictionMode = PredictionMode.Ll; tree = parser.compilationUnit(); } return(tree); }
public override IExpression VisitCompilationUnit([NotNull] VBAConditionalCompilationParser.CompilationUnitContext context) { return(Visit(context.ccBlock())); }
/// <summary> /// Exit a parse tree produced by <see cref="VBAConditionalCompilationParser.compilationUnit"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitCompilationUnit([NotNull] VBAConditionalCompilationParser.CompilationUnitContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="VBAConditionalCompilationParser.compilationUnit"/>. /// <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 VisitCompilationUnit([NotNull] VBAConditionalCompilationParser.CompilationUnitContext context) { return(VisitChildren(context)); }