예제 #1
0
        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));
        }
예제 #2
0
        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);
        }