/// <summary> /// Parses the given input according to Sylvre grammar and generates a Sylvre program. /// </summary> /// <param name="input">The input Sylvre code to be parsed.</param> /// <returns>The generated Sylvre program.</returns> public static SylvreProgram ParseSylvreInput(string input) { ICharStream inputStream = CharStreams.fromstring(input); ITokenSource lexer = new SylvreLexer(inputStream); ITokenStream tokens = new CommonTokenStream(lexer); var parser = new SylvreParser(tokens); parser.RemoveErrorListeners(); var errorListener = new ParserErrorListener(); parser.AddErrorListener(errorListener); SylvreParser.ProgramContext programContext = parser.program(); return(new SylvreProgram(programContext, errorListener.ParseErrors)); }
/// <summary> /// Visit a parse tree produced by <see cref="SylvreParser.program"/>. /// <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 VisitProgram([NotNull] SylvreParser.ProgramContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="SylvreParser.program"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitProgram([NotNull] SylvreParser.ProgramContext context) { }