1 #ifndef REGEXPARSER_HPP
2 #define REGEXPARSER_HPP
3 #include <sng2html/sng2html/RegEx.hpp>
4 #include <sng2html/sng2html/LexerContext.hpp>
5 #include <sng2html/sng2html/TokenValueParsers.hpp>
6 #include <soulng/lexer/Token.hpp>
7 #include <soulng/parser/Match.hpp>
8 #include <soulng/parser/Value.hpp>
9
10
11
12 class RegExLexer;
13
14 struct RegExParser
15 {
16 static std::unique_ptr<sng2html::sng2html::RegExpression> Parse(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
17 static soulng::parser::Match RegularExpression(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
18 static soulng::parser::Match Alternative(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
19 static soulng::parser::Match Catenation(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
20 static soulng::parser::Match Repetition(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
21 static soulng::parser::Match Primary(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
22 static soulng::parser::Match Class(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
23 static soulng::parser::Match Range(RegExLexer& lexer, sng2html::sng2html::LexerContext* lexerContext);
24 static soulng::parser::Match Char(RegExLexer& lexer);
25 static soulng::parser::Match ExpressionReference(RegExLexer& lexer);
26 };
27
28 #endif // REGEXPARSER_HPP