Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
 /// <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));
 }
Exemplo n.º 3
0
 /// <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)
 {
 }