org.eclipse.xtext.util.formallang
Class NfaToProduction

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

public class NfaToProduction
extends java.lang.Object

Author:
Moritz Eysholdt - Initial contribution and API

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

Constructor Detail

NfaToProduction

public NfaToProduction()
Method Detail

createAlternative

protected <T> boolean createAlternative(NfaToProduction.StateAliasNfa<T> states)

createGroup

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

createGroups

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

createMany

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

createNfa

protected <STATE,TOKEN> NfaToProduction.StateAliasNfa<TOKEN> createNfa(Nfa<STATE> nfa,
                                                                       com.google.common.base.Function<STATE,TOKEN> state2token)

createOptional

protected <T> boolean createOptional(NfaToProduction.StateAliasNfa<T> states)

findSplitState

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

isPreferredSplitState

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

nfaToGrammar

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

nfaToGrammar

public <ELEMENT,STATE> ELEMENT nfaToGrammar(Nfa<STATE> nfa,
                                            ProductionFactory<ELEMENT,STATE> grammarFactory)

splitState

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

toAlias

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