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