First upload version 0.0.1

This commit is contained in:
Neyra
2026-02-05 15:27:49 +08:00
commit 8e9b7201ed
4182 changed files with 593136 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
export class GbnfTerminal {
_ruleName = null;
/** To be used only by `getRuleName` */
generateRuleName(grammarGenerator) {
return grammarGenerator.generateRuleName();
}
getRuleName(grammarGenerator) {
if (this._ruleName != null)
return this._ruleName;
const ruleName = this.generateRuleName(grammarGenerator);
this._ruleName = ruleName;
return ruleName;
}
getGrammarFromResolve(grammarGenerator) {
return this.getGrammar(grammarGenerator);
}
_getRootRuleName(grammarGenerator) {
if (this._ruleName != null)
return this._ruleName;
const ruleName = grammarGenerator.usedRootRuleName
? this.getRuleName(grammarGenerator)
: "root";
this._ruleName = ruleName;
if (ruleName === "root")
grammarGenerator.usedRootRuleName = true;
return ruleName;
}
resolve(grammarGenerator, resolveAsRootGrammar = false) {
if (this._ruleName != null)
return this._ruleName;
const grammar = this.getGrammarFromResolve(grammarGenerator);
const existingRuleName = grammarGenerator.ruleContentToRuleName.get(grammar);
if (existingRuleName != null) {
this._ruleName = existingRuleName;
return existingRuleName;
}
const ruleName = resolveAsRootGrammar
? this._getRootRuleName(grammarGenerator)
: this.getRuleName(grammarGenerator);
if (resolveAsRootGrammar)
return grammar;
if (grammar === ruleName) {
this._ruleName = ruleName;
return ruleName;
}
if (!grammarGenerator.rules.has(ruleName)) {
grammarGenerator.rules.set(ruleName, grammar);
grammarGenerator.ruleContentToRuleName.set(grammar, ruleName);
}
this._ruleName = ruleName;
return ruleName;
}
}
//# sourceMappingURL=GbnfTerminal.js.map