org.eclipse.xtext.util.formallang
Class NfaToGrammar

java.lang.Object
  extended by org.eclipse.xtext.util.formallang.NfaToGrammar

public class NfaToGrammar
extends java.lang.Object

Author:
Moritz Eysholdt - Initial contribution and API

Nested Class Summary
protected static class NfaToGrammar.AbstractElementAlias<T>
           
protected static class NfaToGrammar.AliasGrammarProvider<TOKEN>
           
protected static class NfaToGrammar.AlternativeAlias<T>
           
protected static class NfaToGrammar.ElementAlias<T>
           
protected static class NfaToGrammar.GroupAlias<T>
           
protected static class NfaToGrammar.StateAlias<TOKEN>
           
protected static class NfaToGrammar.StatesToDot<T>
           
 
Constructor Summary
NfaToGrammar()
           
 
Method Summary
protected
<T> void
collectStates(NfaToGrammar.StateAlias<T> state, java.util.Set<NfaToGrammar.StateAlias<T>> visited)
           
protected
<T> boolean
createAlternative(NfaToGrammar.StateAlias<T> state, java.util.Set<NfaToGrammar.StateAlias<T>> visited)
           
protected
<T> void
createGroup(NfaToGrammar.StateAlias<T> first, NfaToGrammar.StateAlias<T> second)
           
protected
<T> boolean
createGroups(NfaToGrammar.StateAlias<T> state, java.util.Set<NfaToGrammar.StateAlias<T>> visited)
           
protected
<T> boolean
createMany(NfaToGrammar.StateAlias<T> state, java.util.Set<NfaToGrammar.StateAlias<T>> visited)
           
protected
<T> boolean
createOptional(NfaToGrammar.StateAlias<T> state, java.util.Set<NfaToGrammar.StateAlias<T>> visited)
           
protected
<T> Pair<java.lang.Integer,NfaToGrammar.StateAlias<T>>
findSplitState(NfaToGrammar.StateAlias<T> state, java.lang.Integer depth, java.util.Set<NfaToGrammar.StateAlias<T>> visited)
           
protected
<T> java.util.Set<NfaToGrammar.StateAlias<T>>
getAllStates(NfaToGrammar.StateAlias<T> state)
           
protected
<T> boolean
isPreferredSplitState(Pair<java.lang.Integer,NfaToGrammar.StateAlias<T>> state1, Pair<java.lang.Integer,NfaToGrammar.StateAlias<T>> state2)
           
<ELEMENT,STATE,TOKEN>
ELEMENT
nfaToGrammar(Nfa<STATE> nfa, com.google.common.base.Function<STATE,TOKEN> state2token, IGrammarFactory<ELEMENT,TOKEN> grammarFactory)
           
protected
<T> void
splitState(NfaToGrammar.StateAlias<T> state)
           
protected
<STATE,TOKEN>
NfaToGrammar.StateAlias<TOKEN>
toAlias(Nfa<STATE> nfa, com.google.common.base.Function<STATE,TOKEN> state2token, STATE state, java.util.Map<STATE,NfaToGrammar.StateAlias<TOKEN>> cache)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NfaToGrammar

public NfaToGrammar()
Method Detail

collectStates

protected <T> void collectStates(NfaToGrammar.StateAlias<T> state,
                                 java.util.Set<NfaToGrammar.StateAlias<T>> visited)

createAlternative

protected <T> boolean createAlternative(NfaToGrammar.StateAlias<T> state,
                                        java.util.Set<NfaToGrammar.StateAlias<T>> visited)

createGroup

protected <T> void createGroup(NfaToGrammar.StateAlias<T> first,
                               NfaToGrammar.StateAlias<T> second)

createGroups

protected <T> boolean createGroups(NfaToGrammar.StateAlias<T> state,
                                   java.util.Set<NfaToGrammar.StateAlias<T>> visited)

createMany

protected <T> boolean createMany(NfaToGrammar.StateAlias<T> state,
                                 java.util.Set<NfaToGrammar.StateAlias<T>> visited)

createOptional

protected <T> boolean createOptional(NfaToGrammar.StateAlias<T> state,
                                     java.util.Set<NfaToGrammar.StateAlias<T>> visited)

findSplitState

protected <T> Pair<java.lang.Integer,NfaToGrammar.StateAlias<T>> findSplitState(NfaToGrammar.StateAlias<T> state,
                                                                                java.lang.Integer depth,
                                                                                java.util.Set<NfaToGrammar.StateAlias<T>> visited)

getAllStates

protected <T> java.util.Set<NfaToGrammar.StateAlias<T>> getAllStates(NfaToGrammar.StateAlias<T> state)

isPreferredSplitState

protected <T> boolean isPreferredSplitState(Pair<java.lang.Integer,NfaToGrammar.StateAlias<T>> state1,
                                            Pair<java.lang.Integer,NfaToGrammar.StateAlias<T>> state2)

nfaToGrammar

public <ELEMENT,STATE,TOKEN> ELEMENT nfaToGrammar(Nfa<STATE> nfa,
                                                  com.google.common.base.Function<STATE,TOKEN> state2token,
                                                  IGrammarFactory<ELEMENT,TOKEN> grammarFactory)

splitState

protected <T> void splitState(NfaToGrammar.StateAlias<T> state)

toAlias

protected <STATE,TOKEN> NfaToGrammar.StateAlias<TOKEN> toAlias(Nfa<STATE> nfa,
                                                               com.google.common.base.Function<STATE,TOKEN> state2token,
                                                               STATE state,
                                                               java.util.Map<STATE,NfaToGrammar.StateAlias<TOKEN>> cache)