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 }