public override void VisitLeave(ZeroOrMore expression) { IsMatchPredicate local = _matchStack.Pop(); _matchStack.Push( delegate(IInputIterator iterator) { Int32 savePosition = iterator.Index; while (local(iterator)) { if (savePosition == iterator.Index) { //Exception ex = new InfiniteLoopDetectedException(); //ex.Data.Add("Iterator.Index", iterator.Index); //var rulewriter = new WriteRuleVisitor(); //expression.Accept(rulewriter); //ex.Data.Add("Expression", rulewriter.GrammarOutput); //throw ex; break; } savePosition = iterator.Index; } iterator.Index = savePosition; return true; } ); }
public override void VisitEnter(ZeroOrMore expression) { }
public override void VisitExecute(ZeroOrMore expression) { }
public override void VisitLeave(ZeroOrMore expression) { terminal.Peek().Append(")*"); }
public override void VisitEnter(ZeroOrMore expression) { terminal.Peek().Append("("); }
public abstract void VisitExecute(ZeroOrMore expression);
public abstract void VisitEnter(ZeroOrMore expression);
public abstract void VisitLeave(ZeroOrMore expression);