1 using System;
2 using System.Collections;
3
4 public class ParsingContext
5 {
6 public ParsingContext() :
7 parsingExpressionStatement(false), parsingLvalue(false), parsingArguments(false), parsingIsOrAs(false), parsingTypeExpr(false), parsingConcept(false), parsingTemplateId(false)
8 {
9 }
10 public bool parsingExpressionStatement;
11 public bool parsingLvalue;
12 public bool parsingArguments;
13 public bool parsingIsOrAs;
14 public bool parsingTypeExpr;
15 public bool parsingConcept;
16 public bool parsingTemplateId;
17 public void PushParsingExpressionStatement(bool enable)
18 {
19 parsingExpressionStatementStack.Push(parsingExpressionStatement);
20 parsingExpressionStatement = enable;
21 }
22 public void PopParsingExpressionStatement()
23 {
24 parsingExpressionStatement = parsingExpressionStatementStack.Top();
25 parsingExpressionStatementStack.Pop();
26 }
27 public void PushParsingLvalue(bool enable)
28 {
29 parsingLvalueStack.Push(parsingLvalue);
30 parsingLvalue = enable;
31 }
32 public void PopParsingLvalue()
33 {
34 parsingLvalue = parsingLvalueStack.Top();
35 parsingLvalueStack.Pop();
36 }
37 public void BeginParsingArguments()
38 {
39 parsingArgumentsStack.Push(parsingArguments);
40 parsingArguments = true;
41 }
42 public void EndParsingArguments()
43 {
44 parsingArguments = parsingArgumentsStack.Top();
45 parsingArgumentsStack.Pop();
46 }
47 public void PushParsingIsOrAs(bool enable)
48 {
49 parsingIsOrAsStack.Push(parsingIsOrAs);
50 parsingIsOrAs = enable;
51 }
52 public void PopParsingIsOrAs()
53 {
54 parsingIsOrAs = parsingIsOrAsStack.Top();
55 parsingIsOrAsStack.Pop();
56 }
57 public void BeginParsingTypeExpr()
58 {
59 parsingTypeExprStack.Push(parsingTypeExpr);
60 parsingTypeExpr = true;
61 }
62 public void EndParsingTypeExpr()
63 {
64 parsingTypeExpr = parsingTypeExprStack.Top();
65 parsingTypeExprStack.Pop();
66 }
67 public void BeginParsingConcept()
68 {
69 parsingConceptStack.Push(parsingConcept);
70 parsingConcept = true;
71 }
72 public void EndParsingConcept()
73 {
74 parsingConcept = parsingConceptStack.Top();
75 parsingConceptStack.Pop();
76 }
77 public void BeginParsingTemplateId()
78 {
79 parsingTemplateIdStack.Push(parsingTemplateId);
80 parsingTemplateId = true;
81 }
82 public void EndParsingTemplateId()
83 {
84 parsingTemplateId = parsingTemplateIdStack.Top();
85 parsingTemplateIdStack.Pop();
86 }
87 public inline nothrow const Uuid& ModuleId() const
88 {
89 return moduleId;
90 }
91 public nothrow void SetModuleId(const Uuid& moduleId_)
92 {
93 moduleId = moduleId_;
94 }
95 private Stack<bool> parsingExpressionStatementStack;
96 private Stack<bool> parsingLvalueStack;
97 private Stack<bool> parsingArgumentsStack;
98 private Stack<bool> parsingIsOrAsStack;
99 private Stack<bool> parsingTypeExprStack;
100 private Stack<bool> parsingConceptStack;
101 private Stack<bool> parsingTemplateIdStack;
102 private Uuid moduleId;
103 }