antlr-ng
Version:
Next generation ANTLR Tool
50 lines (49 loc) • 1.61 kB
JavaScript
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
};