public override void EnterDecision(int decisionNumber, bool couldBacktrack)
{
lastRealTokenTouchedInDecision = null;
stats.numDecisionEvents++;
int startingLookaheadIndex = parser.TokenStream.Index;
ITokenStream input = parser.TokenStream;
if (dump)
{
Console.WriteLine("enterDecision canBacktrack=" + couldBacktrack + " " + decisionNumber +
" backtrack depth " + backtrackDepth +
" @ " + input.Get(input.Index) +
" rule " + LocationDescription());
}
string g = currentGrammarFileName.Peek();
DecisionDescriptor descriptor = decisions.Get(g, decisionNumber);
if (descriptor == null)
{
descriptor = new DecisionDescriptor();
decisions.Put(g, decisionNumber, descriptor);
descriptor.decision = decisionNumber;
descriptor.fileName = currentGrammarFileName.Peek();
descriptor.ruleName = currentRuleName.Peek();
descriptor.line = currentLine.Peek();
descriptor.pos = currentPos.Peek();
descriptor.couldBacktrack = couldBacktrack;
}
descriptor.n++;
DecisionEvent d = new DecisionEvent();
decisionStack.Push(d);
d.decision = descriptor;
d.startTime = DateTime.Now;
d.startIndex = startingLookaheadIndex;
}