1
2
3
4
5
6 #ifndef SNGCM_PARSER_PARSING_CONTEXT_HPP
7 #define SNGCM_PARSER_PARSING_CONTEXT_HPP
8 #include <sngcm/cmparser/ParserApi.hpp>
9 #include <stack>
10
11 struct ParsingContext
12 {
13 ParsingContext();
14 void PushParsingExpressionStatement(bool enable);
15 void PopParsingExpressionStatement();
16 void PushParsingLvalue(bool enable);
17 void PopParsingLvalue();
18 void BeginParsingArguments();
19 void EndParsingArguments();
20 void PushParsingIsOrAs(bool enable);
21 void PopParsingIsOrAs();
22 void BeginParsingTypeExpr();
23 void EndParsingTypeExpr();
24 void BeginParsingConcept();
25 void EndParsingConcept();
26 void BeginParsingTemplateId();
27 void EndParsingTemplateId();
28 bool parsingExpressionStatement;
29 bool parsingLvalue;
30 bool parsingArguments;
31 bool parsingIsOrAs;
32 bool parsingTypeExpr;
33 bool parsingConcept;
34 bool parsingTemplateId;
35 private:
36 std::stack<bool> parsingExpressionStatementStack;
37 std::stack<bool> parsingLvalueStack;
38 std::stack<bool> parsingArgumentsStack;
39 std::stack<bool> parsingIsOrAsStack;
40 std::stack<bool> parsingTypeExprStack;
41 std::stack<bool> parsingConceptStack;
42 std::stack<bool> parsingTemplateIdStack;
43 };
44
45 #endif // SNGCM_PARSER_PARSING_CONTEXT_HPP