antlr-ng
Version:
Next generation ANTLR Tool
126 lines (125 loc) • 2.41 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { format } from "../../support/helpers.js";
import { Target } from "../Target.js";
class PHPTarget extends Target {
static {
__name(this, "PHPTarget");
}
static reservedWords = /* @__PURE__ */ new Set([
"abstract",
"and",
"array",
"as",
"break",
"callable",
"case",
"catch",
"class",
"clone",
"const",
"continue",
"declare",
"default",
"die",
"do",
"echo",
"else",
"elseif",
"empty",
"enddeclare",
"endfor",
"endforeach",
"endif",
"endswitch",
"endwhile",
"eval",
"exit",
"extends",
"final",
"finally",
"for",
"foreach",
"function",
"global",
"goto",
"if",
"implements",
"include",
"include_once",
"instanceof",
"insteadof",
"interface",
"isset",
"list",
"namespace",
"new",
"or",
"print",
"private",
"protected",
"public",
"require",
"require_once",
"return",
"static",
"switch",
"throw",
"trait",
"try",
"unset",
"use",
"var",
"while",
"xor",
"yield",
"__halt_compiler",
"__CLASS__",
"__DIR__",
"__FILE__",
"__FUNCTION__",
"__LINE__",
"__METHOD__",
"__NAMESPACE__",
"__TRAIT__",
"rule",
"parserRule"
]);
static targetCharValueEscape = /* @__PURE__ */ new Map([
// https://www.php.net/manual/en/language.types.string.php
[11, "v"],
[27, "e"],
[36, "$"]
]);
constructor(gen) {
super(gen);
}
getTargetCharValueEscape() {
return new Map([...Target.defaultCharValueEscape, ...PHPTarget.targetCharValueEscape]);
}
supportsOverloadedMethods() {
return false;
}
getTargetStringLiteralFromANTLRStringLiteral(generator, literal, addQuotes, escapeSpecial) {
let targetStringLiteral = super.getTargetStringLiteralFromANTLRStringLiteral(
generator,
literal,
addQuotes,
escapeSpecial
);
targetStringLiteral = targetStringLiteral.replaceAll("$", "\\$");
return targetStringLiteral;
}
isATNSerializedAsInts() {
return true;
}
get reservedWords() {
return PHPTarget.reservedWords;
}
escapeChar(v) {
return format("\\u{%X}", v);
}
}
export {
PHPTarget
};