1 #ifndef PARSERFILEPARSER_HPP
2 #define PARSERFILEPARSER_HPP
3 #include <sng2html/sng2html/ParserFile.hpp>
4 #include <soulng/lexer/Token.hpp>
5 #include <soulng/parser/Match.hpp>
6 #include <soulng/parser/Value.hpp>
7
8
9
10 class ParserFileLexer;
11
12 struct ParserFileParser
13 {
14 static std::unique_ptr<sng2html::sng2html::ParserFile> Parse(ParserFileLexer& lexer);
15 static soulng::parser::Match ParserFile(ParserFileLexer& lexer);
16 static soulng::parser::Match Declaration(ParserFileLexer& lexer, sng2html::sng2html::ParserFile* parserFile);
17 static soulng::parser::Match IncludeDeclaration(ParserFileLexer& lexer);
18 static soulng::parser::Match IncludePrefix(ParserFileLexer& lexer);
19 static soulng::parser::Match UsingNamespaceDeclaration(ParserFileLexer& lexer);
20 static soulng::parser::Match ParserDeclaration(ParserFileLexer& lexer);
21 static soulng::parser::Match Api(ParserFileLexer& lexer);
22 static soulng::parser::Match Statement(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
23 static soulng::parser::Match MainStatement(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
24 static soulng::parser::Match UsingStatement(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
25 static soulng::parser::Match UsingQualifiedId(ParserFileLexer& lexer);
26 static soulng::parser::Match LexerStatement(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
27 static soulng::parser::Match RuleInfoStatement(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
28 static soulng::parser::Match RuleInfo(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
29 static soulng::parser::Match RuleStatement(ParserFileLexer& lexer, sng2html::sng2html::GrammarParser* grammarParser);
30 static soulng::parser::Match ParametersAndVariables(ParserFileLexer& lexer, sng2html::sng2html::RuleParser* rule);
31 static soulng::parser::Match ParamOrVariable(ParserFileLexer& lexer);
32 static soulng::parser::Match ReturnType(ParserFileLexer& lexer);
33 static soulng::parser::Match RuleBody(ParserFileLexer& lexer);
34 static soulng::parser::Match Alternative(ParserFileLexer& lexer);
35 static soulng::parser::Match Sequence(ParserFileLexer& lexer);
36 static soulng::parser::Match Difference(ParserFileLexer& lexer);
37 static soulng::parser::Match List(ParserFileLexer& lexer);
38 static soulng::parser::Match Postfix(ParserFileLexer& lexer);
39 static soulng::parser::Match Primary(ParserFileLexer& lexer);
40 static soulng::parser::Match RuleCall(ParserFileLexer& lexer);
41 static soulng::parser::Match Nonterminal(ParserFileLexer& lexer);
42 static soulng::parser::Match Primitive(ParserFileLexer& lexer);
43 static soulng::parser::Match Grouping(ParserFileLexer& lexer);
44 };
45
46 #endif // PARSERFILEPARSER_HPP