UNPKG

antlr-ng

Version:

Next generation ANTLR Tool

50 lines (49 loc) 1.61 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); import { BitSet } from "antlr4ng"; import { ANTLRv4Parser } from "../generated/ANTLRv4Parser.js"; import { LabelType } from "./LabelType.js"; class LabelElementPair { static { __name(this, "LabelElementPair"); } static tokenTypeForTokens = new BitSet(); label; element; type; constructor(g, label, element, labelOp) { this.label = label; this.element = element; if (element.getFirstDescendantWithType(LabelElementPair.tokenTypeForTokens) !== null) { if (labelOp === ANTLRv4Parser.ASSIGN) { this.type = LabelType.TokenLabel; } else { this.type = LabelType.TokenListLabel; } } else if (element.getFirstDescendantWithType(ANTLRv4Parser.RULE_REF) !== null) { if (labelOp === ANTLRv4Parser.ASSIGN) { this.type = LabelType.RuleLabel; } else { this.type = LabelType.RuleListLabel; } } if (g.isLexer()) { if (element.getFirstDescendantWithType(ANTLRv4Parser.STRING_LITERAL) !== null) { if (labelOp === ANTLRv4Parser.ASSIGN) { this.type = LabelType.LexerStringLabel; } } } } toString() { return this.label.getText() + " " + this.type + " " + this.element.toString(); } static { LabelElementPair.tokenTypeForTokens.set(ANTLRv4Parser.TOKEN_REF); LabelElementPair.tokenTypeForTokens.set(ANTLRv4Parser.STRING_LITERAL); LabelElementPair.tokenTypeForTokens.set(ANTLRv4Parser.WILDCARD); } } export { LabelElementPair };