UNPKG

antlr4ng

Version:

Alternative JavaScript/TypeScript runtime for ANTLR4

59 lines (57 loc) 1.44 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/dfa/DFASerializer.ts var DFASerializer = class { static { __name(this, "DFASerializer"); } dfa; vocabulary; constructor(dfa, vocabulary) { this.dfa = dfa; this.vocabulary = vocabulary; } toString() { if (!this.dfa.s0) { return ""; } let buf = ""; const states = this.dfa.getStates(); for (const s of states) { let n = 0; n = s.edges.length; for (let i = 0; i < n; i++) { const t = s.edges[i]; if (t && t.stateNumber !== 2147483647) { buf += this.getStateString(s); const label = this.getEdgeLabel(i); buf += "-"; buf += label; buf += "->"; buf += this.getStateString(t); buf += "\n"; } } } return buf; } getEdgeLabel(i) { const name = this.vocabulary.getDisplayName(i - 1); return `${name}`; } getStateString(s) { const n = s.stateNumber; const baseStateStr = (s.isAcceptState ? ":" : "") + "s" + n + (s.requiresFullContext ? "^" : ""); if (s.isAcceptState) { if (s.predicates !== null) { return `${baseStateStr}=>${s.predicates.toString()}`; } return `${baseStateStr}=>${s.prediction}`; } else { return `${baseStateStr}`; } } }; export { DFASerializer };