Package org.antlr.v4.runtime.atn
Class ATNSerializer
- java.lang.Object
-
- org.antlr.v4.runtime.atn.ATNSerializer
-
public class ATNSerializer extends java.lang.Object
This class represents a target neutral serializer for ATNs. An ATN is converted to a list of integers that can be converted back to and ATN. We compute the list of integers and then generate an array into the target language for a particular lexer or parser. Java is a special case where we must generate strings instead of arrays, but that is handled outside of this class. SeeATNDeserializer.encodeIntsWith16BitWords(IntegerList)
andSerializedJavaATN
.
-
-
Field Summary
Fields Modifier and Type Field Description ATN
atn
private IntegerList
data
private IntegerList
nonGreedyStates
private IntegerList
precedenceStates
private java.util.Map<IntervalSet,java.lang.Boolean>
sets
Note that we use a LinkedHashMap as a set to mainintain insertion order while deduplicating entries with the same key.
-
Constructor Summary
Constructors Constructor Description ATNSerializer(ATN atn)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addDecisionStartStates()
private int
addEdges()
private void
addEdges(int nedges, java.util.Map<IntervalSet,java.lang.Integer> setIndices)
private void
addLexerActions()
private void
addModeStartStates()
private void
addNonGreedyStates()
private void
addPreamble()
private void
addPrecedenceStates()
private void
addRuleStatesAndLexerTokenTypes()
private java.util.Map<IntervalSet,java.lang.Integer>
addSets()
static IntegerList
getSerialized(ATN atn)
IntegerList
serialize()
Serialize state descriptors, edge descriptors, and decision→state map into list of ints.private static void
serializeSets(IntegerList data, java.util.Collection<IntervalSet> sets)
-
-
-
Field Detail
-
atn
public ATN atn
-
data
private final IntegerList data
-
sets
private final java.util.Map<IntervalSet,java.lang.Boolean> sets
Note that we use a LinkedHashMap as a set to mainintain insertion order while deduplicating entries with the same key.
-
nonGreedyStates
private final IntegerList nonGreedyStates
-
precedenceStates
private final IntegerList precedenceStates
-
-
Constructor Detail
-
ATNSerializer
public ATNSerializer(ATN atn)
-
-
Method Detail
-
serialize
public IntegerList serialize()
Serialize state descriptors, edge descriptors, and decision→state map into list of ints. Likely out of date, but keeping as it could be helpful: SERIALIZED_VERSION UUID (2 longs) grammar-type, (ANTLRParser.LEXER, ...) max token type, num states, state-0-type ruleIndex, state-1-type ruleIndex, ... state-i-type ruleIndex optional-arg ... num rules, rule-1-start-state rule-1-args, rule-2-start-state rule-2-args, ... (args are token type,actionIndex in lexer else 0,0) num modes, mode-0-start-state, mode-1-start-state, ... (parser has 0 modes) num unicode-bmp-sets bmp-set-0-interval-count intervals, bmp-set-1-interval-count intervals, ... num unicode-smp-sets smp-set-0-interval-count intervals, smp-set-1-interval-count intervals, ... num total edges, src, trg, edge-type, edge arg1, optional edge arg2 (present always), ... num decisions, decision-0-start-state, decision-1-start-state, ... Convenient to pack into unsigned shorts to make as Java string.
-
addPreamble
private void addPreamble()
-
addLexerActions
private void addLexerActions()
-
addDecisionStartStates
private void addDecisionStartStates()
-
addEdges
private void addEdges(int nedges, java.util.Map<IntervalSet,java.lang.Integer> setIndices)
-
addSets
private java.util.Map<IntervalSet,java.lang.Integer> addSets()
-
addModeStartStates
private void addModeStartStates()
-
addRuleStatesAndLexerTokenTypes
private void addRuleStatesAndLexerTokenTypes()
-
addPrecedenceStates
private void addPrecedenceStates()
-
addNonGreedyStates
private void addNonGreedyStates()
-
addEdges
private int addEdges()
-
serializeSets
private static void serializeSets(IntegerList data, java.util.Collection<IntervalSet> sets)
-
getSerialized
public static IntegerList getSerialized(ATN atn)
-
-