1 #ifndef LEXERSTATEMENTPARSER_HPP
2 #define LEXERSTATEMENTPARSER_HPP
3 #include <soulng/cppcode/Statement.hpp>
4 #include <soulng/lexer/Token.hpp>
5 #include <soulng/parser/Match.hpp>
6 #include <soulng/parser/Value.hpp>
7
8
9
10 class LexerFileLexer;
11
12 struct LexerStatementParser
13 {
14 static soulng::parser::Match Statement(LexerFileLexer& lexer);
15 static soulng::parser::Match LabeledStatement(LexerFileLexer& lexer);
16 static soulng::parser::Match EmptyStatement(LexerFileLexer& lexer);
17 static soulng::parser::Match CompoundStatement(LexerFileLexer& lexer);
18 static soulng::parser::Match SelectionStatement(LexerFileLexer& lexer);
19 static soulng::parser::Match IfStatement(LexerFileLexer& lexer);
20 static soulng::parser::Match SwitchStatement(LexerFileLexer& lexer);
21 static soulng::parser::Match IterationStatement(LexerFileLexer& lexer);
22 static soulng::parser::Match WhileStatement(LexerFileLexer& lexer);
23 static soulng::parser::Match DoStatement(LexerFileLexer& lexer);
24 static soulng::parser::Match RangeForStatement(LexerFileLexer& lexer);
25 static soulng::parser::Match ForRangeDeclaration(LexerFileLexer& lexer);
26 static soulng::parser::Match ForStatement(LexerFileLexer& lexer);
27 static soulng::parser::Match ForInitStatement(LexerFileLexer& lexer);
28 static soulng::parser::Match JumpStatement(LexerFileLexer& lexer);
29 static soulng::parser::Match BreakStatement(LexerFileLexer& lexer);
30 static soulng::parser::Match ContinueStatement(LexerFileLexer& lexer);
31 static soulng::parser::Match ReturnStatement(LexerFileLexer& lexer);
32 static soulng::parser::Match GotoStatement(LexerFileLexer& lexer);
33 static soulng::parser::Match DeclarationStatement(LexerFileLexer& lexer);
34 static soulng::parser::Match Condition(LexerFileLexer& lexer);
35 static soulng::parser::Match TryStatement(LexerFileLexer& lexer);
36 static soulng::parser::Match HandlerSeq(LexerFileLexer& lexer, soulng::cppcode::TryStatement* tryStatement);
37 static soulng::parser::Match Handler(LexerFileLexer& lexer);
38 static soulng::parser::Match ExceptionDeclaration(LexerFileLexer& lexer);
39 static soulng::parser::Match ExpressionStatement(LexerFileLexer& lexer);
40 };
41
42 #endif // LEXERSTATEMENTPARSER_HPP