コード例 #1
0
ファイル: DfaTests.cs プロジェクト: magne/dfalex.net
        private int AddToNfa <T>(Nfa <T> nfa, IMatchable pattern, T match)
        {
            var start  = nfa.AddState();
            var accept = nfa.AddState(match);

            var state = pattern.AddToNfa(nfa, accept);

            nfa.AddEpsilon(start, state);

            return(start);
        }
コード例 #2
0
ファイル: Pattern.cs プロジェクト: magne/dfalex.net
            public override int AddToNfa <TResult>(Nfa <TResult> nfa, int targetState)
            {
                var startState = pattern.AddToNfa(nfa, targetState);

                if (pattern.MatchesEmpty)
                {
                    return(startState);
                }

                var skipState = nfa.AddState();

                nfa.AddEpsilon(skipState, targetState, lazy ? NfaTransitionPriority.Normal : NfaTransitionPriority.Low);
                nfa.AddEpsilon(skipState, startState, lazy ? NfaTransitionPriority.Low : NfaTransitionPriority.Normal);
                return(skipState);
            }
コード例 #3
0
ファイル: Pattern.cs プロジェクト: magne/dfalex.net
 public override int AddToNfa <TResult>(Nfa <TResult> nfa, int targetState)
 {
     return(tomatch.AddToNfa(nfa, targetState));
 }
コード例 #4
0
ファイル: Pattern.cs プロジェクト: magne/dfalex.net
 public override int AddToNfa <TResult>(Nfa <TResult> nfa, int targetState)
 {
     targetState = then.AddToNfa(nfa, targetState);
     targetState = first.AddToNfa(nfa, targetState);
     return(targetState);
 }