1 #ifndef PPPARSER_HPP
2 #define PPPARSER_HPP
3 #include <sngcpp/pp/PP.hpp>
4 #include <soulng/lexer/Token.hpp>
5 #include <soulng/parser/Match.hpp>
6 #include <soulng/parser/Value.hpp>
7
8
9
10 class PPLexer;
11
12 struct PPLineParser
13 {
14 static void Parse(PPLexer& lexer, sngcpp::pp::PP* pp);
15 static soulng::parser::Match PPLine(PPLexer& lexer, sngcpp::pp::PP* pp);
16 static soulng::parser::Match Define(PPLexer& lexer, sngcpp::pp::PP* pp);
17 static soulng::parser::Match Include(PPLexer& lexer, sngcpp::pp::PP* pp);
18 static soulng::parser::Match If(PPLexer& lexer, sngcpp::pp::PP* pp);
19 static soulng::parser::Match Ifdef(PPLexer& lexer, sngcpp::pp::PP* pp);
20 static soulng::parser::Match Ifndef(PPLexer& lexer, sngcpp::pp::PP* pp);
21 static soulng::parser::Match Elif(PPLexer& lexer, sngcpp::pp::PP* pp);
22 static soulng::parser::Match Else(PPLexer& lexer, sngcpp::pp::PP* pp);
23 static soulng::parser::Match Endif(PPLexer& lexer, sngcpp::pp::PP* pp);
24 static soulng::parser::Match Other(PPLexer& lexer, sngcpp::pp::PP* pp);
25 static soulng::parser::Match PPToken(PPLexer& lexer, std::std::vector<soulng::lexer::Token>*tokens);
26 };
27
28 #endif // PPPARSER_HPP