antlr4ng
Version:
Alternative JavaScript/TypeScript runtime for ANTLR4
54 lines (53 loc) • 2.23 kB
TypeScript
import { ATN } from "./ATN.js";
/**
* 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.
*/
export declare class ATNSerializer {
atn: ATN;
private readonly data;
private sets;
private readonly nonGreedyStates;
private readonly precedenceStates;
constructor(atn: ATN);
static getSerialized(atn: ATN): number[];
private static serializeSets;
/**
* 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.
*/
serialize(): number[];
private addPreamble;
private addLexerActions;
private addDecisionStartStates;
private addEdges;
private addSets;
private addModeStartStates;
private addRuleStatesAndLexerTokenTypes;
private addPrecedenceStates;
private addNonGreedyStates;
}