1 #ifndef EXPRESSION_HPP
 2 #define EXPRESSION_HPP
 3 #include <sngcpp/parser/ParserApi.hpp>
 4 #include <sngcpp/ast/Expression.hpp>
 5 #include <sngcpp/parser/ParsingContext.hpp>
 6 #include <soulng/lexer/Token.hpp>
 7 #include <soulng/parser/Match.hpp>
 8 #include <soulng/parser/Value.hpp>
 9 
10 // this file has been automatically generated from 'D:/work/soulng-project/sngcpp/parser/Expression.parser' using soulng parser generator spg version 3.0.0
11 
12 class CppLexer;
13 
14 struct ExpressionParser 
15 {
16     static std::unique_ptr<sngcpp::ast::Node> Parse(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
17     static soulng::parser::Match Expression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
18     static soulng::parser::Match ConstantExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
19     static soulng::parser::Match AssignmentExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
20     static soulng::parser::Match AssignmentOperator(CppLexer& lexer);
21     static soulng::parser::Match ConditionalExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
22     static soulng::parser::Match ThrowExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
23     static soulng::parser::Match LogicalOrExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
24     static soulng::parser::Match LogicalAndExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
25     static soulng::parser::Match InclusiveOrExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
26     static soulng::parser::Match ExclusiveOrExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
27     static soulng::parser::Match AndExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
28     static soulng::parser::Match EqualityExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
29     static soulng::parser::Match EqualityOperator(CppLexer& lexer);
30     static soulng::parser::Match RelationalExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
31     static soulng::parser::Match RelationalOperator(CppLexer& lexer);
32     static soulng::parser::Match ShiftExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
33     static soulng::parser::Match ShiftOperator(CppLexer& lexer);
34     static soulng::parser::Match AdditiveExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
35     static soulng::parser::Match AdditiveOperator(CppLexer& lexer);
36     static soulng::parser::Match MultiplicativeExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
37     static soulng::parser::Match MultiplicativeOperator(CppLexer& lexer);
38     static soulng::parser::Match PMExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
39     static soulng::parser::Match PMOperator(CppLexer& lexer);
40     static soulng::parser::Match CastExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
41     static soulng::parser::Match UnaryExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
42     static soulng::parser::Match UnaryOperator(CppLexer& lexer);
43     static soulng::parser::Match NewExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
44     static soulng::parser::Match NewPlacement(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
45     static soulng::parser::Match NewInitializer(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
46     static soulng::parser::Match ExpressionList(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
47     static soulng::parser::Match ArgumentList(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
48     static soulng::parser::Match DeleteExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
49     static soulng::parser::Match PostfixExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
50     static soulng::parser::Match PrimaryExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
51     static soulng::parser::Match CppCastExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
52     static soulng::parser::Match TypeIdExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
53     static soulng::parser::Match IdExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
54     static soulng::parser::Match UnqualifiedId(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
55     static soulng::parser::Match QualifiedId(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
56     static soulng::parser::Match OperatorFunctionId(CppLexer& lexer);
57     static soulng::parser::Match Operator(CppLexer& lexer);
58     static soulng::parser::Match ConversionFunctionId(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
59     static soulng::parser::Match LambdaExpression(CppLexer& lexersngcpp::cppparser::ParsingContext* ctx);
60     static soulng::parser::Match LambdaCaptures(CppLexer& lexersngcpp::ast::LambdaExpressionNode* lambdaExpression);
61     static soulng::parser::Match CaptureDefault(CppLexer& lexer);
62     static soulng::parser::Match Captures(CppLexer& lexersngcpp::ast::LambdaExpressionNode* lambdaExpression);
63     static soulng::parser::Match Capture(CppLexer& lexer);
64 };
65 
66 #endif // EXPRESSION_HPP