FsmFragment IExprVisitor <FsmFragment> .VisitCheckNot(CheckNot checkNot) { var childFsm = _checkerFsmBuilder(checkNot.Child); var from = _fsm.CreateState(); var to = _fsm.CreateState(); _fsm.CreateTransition(from, to, new FsmTransitionCondition(null, null, childFsm, false)); return(new FsmFragment(from, to)); }
ParsingState IExprVisitor <ParsingState> .VisitCheckNot(CheckNot checkNot) { ParsingState nextState; if (_currState.InvocationCount == 0) { nextState = _currState.EnterChild(checkNot.Child); } else { nextState = _currState.ExitChild(!_currState.LastMatchSuccessed.Value, _currState.Parent.Pos - _currState.Pos); } return(nextState); }