org.antlr.tool
Class FASerializer

java.lang.Object
  extended by org.antlr.tool.FASerializer

public class FASerializer
extends java.lang.Object

An aspect of FA (finite automata) that knows how to dump them to serialized strings.


Field Summary
protected  Grammar grammar
           
protected  java.util.Set markedStates
          To prevent infinite recursion when walking state machines, record which states we've visited.
protected  int stateCounter
          Each state we walk will get a new state number for serialization purposes.
protected  java.util.Map stateNumberTranslator
          Rather than add a new instance variable to NFA and DFA just for serializing machines, map old state numbers to new state numbers by a State object -> Integer new state number HashMap.
 
Constructor Summary
FASerializer(Grammar grammar)
          This aspect is associated with a grammar; used to get token names
 
Method Summary
 java.lang.String serialize(State s)
           
 java.lang.String serialize(State s, boolean renumber)
          Return a string representation of a state machine.
protected  void walkFANormalizingStateNumbers(State s)
          In stateNumberTranslator, get a map from State to new, normalized state number.
protected  void walkSerializingFA(java.util.List lines, State s)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

markedStates

protected java.util.Set markedStates
To prevent infinite recursion when walking state machines, record which states we've visited. Make a new set every time you start walking in case you reuse this object. Multiple threads will trash this shared variable. Use a different FASerializer per thread.


stateCounter

protected int stateCounter
Each state we walk will get a new state number for serialization purposes. This is the variable that tracks state numbers.


stateNumberTranslator

protected java.util.Map stateNumberTranslator
Rather than add a new instance variable to NFA and DFA just for serializing machines, map old state numbers to new state numbers by a State object -> Integer new state number HashMap.


grammar

protected Grammar grammar
Constructor Detail

FASerializer

public FASerializer(Grammar grammar)
This aspect is associated with a grammar; used to get token names

Method Detail

serialize

public java.lang.String serialize(State s)

serialize

public java.lang.String serialize(State s,
                                  boolean renumber)
Return a string representation of a state machine. Two identical NFAs or DFAs will have identical serialized representations. The state numbers inside the state are not used; instead, a new number is computed and because the serialization will walk the two machines using the same specific algorithm, then the state numbers will be identical. Accept states are distinguished from regular states.


walkFANormalizingStateNumbers

protected void walkFANormalizingStateNumbers(State s)
In stateNumberTranslator, get a map from State to new, normalized state number. Used by walkSerializingFA to make sure any two identical state machines will serialize the same way.


walkSerializingFA

protected void walkSerializingFA(java.util.List lines,
                                 State s)


Copyright © 2011. All Rights Reserved.