1 #ifndef LEXEREXPRESSIONPARSER_HPP
2 #define LEXEREXPRESSIONPARSER_HPP
3 #include <soulng/cppcode/Expression.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 LexerExpressionParser
13 {
14 static soulng::parser::Match CppExpression(LexerFileLexer& lexer);
15 static soulng::parser::Match ConstantExpression(LexerFileLexer& lexer);
16 static soulng::parser::Match AssignmentExpression(LexerFileLexer& lexer);
17 static soulng::parser::Match AssignmentOp(LexerFileLexer& lexer);
18 static soulng::parser::Match ConditionalExpression(LexerFileLexer& lexer);
19 static soulng::parser::Match ThrowExpression(LexerFileLexer& lexer);
20 static soulng::parser::Match LogicalOrExpression(LexerFileLexer& lexer);
21 static soulng::parser::Match LogicalAndExpression(LexerFileLexer& lexer);
22 static soulng::parser::Match InclusiveOrExpression(LexerFileLexer& lexer);
23 static soulng::parser::Match ExclusiveOrExpression(LexerFileLexer& lexer);
24 static soulng::parser::Match AndExpression(LexerFileLexer& lexer);
25 static soulng::parser::Match EqualityExpression(LexerFileLexer& lexer);
26 static soulng::parser::Match EqOp(LexerFileLexer& lexer);
27 static soulng::parser::Match RelationalExpression(LexerFileLexer& lexer);
28 static soulng::parser::Match RelOp(LexerFileLexer& lexer);
29 static soulng::parser::Match ShiftExpression(LexerFileLexer& lexer);
30 static soulng::parser::Match ShiftOp(LexerFileLexer& lexer);
31 static soulng::parser::Match AdditiveExpression(LexerFileLexer& lexer);
32 static soulng::parser::Match AddOp(LexerFileLexer& lexer);
33 static soulng::parser::Match MultiplicativeExpression(LexerFileLexer& lexer);
34 static soulng::parser::Match MulOp(LexerFileLexer& lexer);
35 static soulng::parser::Match PmExpression(LexerFileLexer& lexer);
36 static soulng::parser::Match PmOp(LexerFileLexer& lexer);
37 static soulng::parser::Match CastExpression(LexerFileLexer& lexer);
38 static soulng::parser::Match UnaryExpression(LexerFileLexer& lexer);
39 static soulng::parser::Match UnaryOperator(LexerFileLexer& lexer);
40 static soulng::parser::Match PostfixExpression(LexerFileLexer& lexer);
41 static soulng::parser::Match PostCastExpression(LexerFileLexer& lexer);
42 static soulng::parser::Match ExpressionList(LexerFileLexer& lexer, soulng::cppcode::CppObject* owner);
43 static soulng::parser::Match PrimaryExpression(LexerFileLexer& lexer);
44 static soulng::parser::Match IdExpression(LexerFileLexer& lexer);
45 static soulng::parser::Match TypeSpecifierOrTypeName(LexerFileLexer& lexer);
46 static soulng::parser::Match NewExpression(LexerFileLexer& lexer);
47 static soulng::parser::Match NewPlacement(LexerFileLexer& lexer, soulng::cppcode::CppObject* owner);
48 static soulng::parser::Match NewTypeId(LexerFileLexer& lexer);
49 static soulng::parser::Match NewDeclarator(LexerFileLexer& lexer);
50 static soulng::parser::Match NewInitializer(LexerFileLexer& lexer, soulng::cppcode::CppObject* owner);
51 static soulng::parser::Match DirectNewDeclarator(LexerFileLexer& lexer);
52 static soulng::parser::Match DeleteExpression(LexerFileLexer& lexer);
53 static soulng::parser::Match OperatorFunctionId(LexerFileLexer& lexer);
54 static soulng::parser::Match Operator(LexerFileLexer& lexer);
55 };
56
57 #endif // LEXEREXPRESSIONPARSER_HPP