/// <summary> /// Parses the given date. /// </summary> /// <param name="date">The date in string format including "hash tags" (e.g. #01-01-1900#)</param> /// <returns>The root of the parse tree.</returns> public VBADateParser.DateLiteralContext Parse(string date) { var stream = new AntlrInputStream(date); var lexer = new VBADateLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new VBADateParser(tokens); parser.AddErrorListener(new ExceptionErrorListener()); VBADateParser.CompilationUnitContext tree = null; try { parser.Interpreter.PredictionMode = PredictionMode.Sll; tree = parser.compilationUnit(); } catch (Exception ex) { Logger.Warn(ex, "SLL mode failed for {0}. Retrying using LL.", date); tokens.Reset(); parser.Reset(); parser.Interpreter.PredictionMode = PredictionMode.Ll; tree = parser.compilationUnit(); } return(tree.dateLiteral()); }
/// <summary> /// Visit a parse tree produced by <see cref="VBADateParser.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] VBADateParser.CompilationUnitContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="VBADateParser.compilationUnit"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitCompilationUnit([NotNull] VBADateParser.CompilationUnitContext context) { }