UNPKG

antlr4ng

Version:

Alternative JavaScript/TypeScript runtime for ANTLR4

54 lines (53 loc) 2.23 kB
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; }