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