public NFAModel CreateFiniteAutomatonModel(NFAConverter converter) { NFAModel nfa = converter.Convert(Definition); Debug.Assert(nfa.TailState != null); nfa.TailState.TokenIndex = Tag.Index; return(nfa); }
private void ConvertLexcionToNFA() { //Compact transition char set CompactCharSetManager = m_lexicon.CreateCompactCharSetManager(); NFAConverter converter = new NFAConverter(CompactCharSetManager); NFAState entryState = new NFAState(); NFAModel lexerNFA = new NFAModel(); lexerNFA.AddState(entryState); foreach (var token in m_lexicon.GetTokens()) { NFAModel tokenNFA = token.CreateFiniteAutomatonModel(converter); entryState.AddEdge(tokenNFA.EntryEdge); lexerNFA.AddStates(tokenNFA.States); } }