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,34 @@
import { GbnfTerminal } from "../GbnfTerminal.js";
import { grammarNoValue } from "./gbnfConsts.js";
export class GbnfOr extends GbnfTerminal {
values;
useRawGrammar;
constructor(values, useRawGrammar = false) {
super();
this.values = values;
this.useRawGrammar = useRawGrammar;
}
getGrammar(grammarGenerator) {
const mappedValues = this.values
.map((v) => (this.useRawGrammar
? v.getGrammar(grammarGenerator)
: v.resolve(grammarGenerator)))
.filter((value) => value !== "" && value !== grammarNoValue);
if (mappedValues.length === 0)
return grammarNoValue;
else if (mappedValues.length === 1)
return mappedValues[0];
return "( " + mappedValues.join(" | ") + " )";
}
resolve(grammarGenerator, resolveAsRootGrammar = false) {
const mappedValues = this.values
.map((v) => v.resolve(grammarGenerator))
.filter((value) => value !== "" && value !== grammarNoValue);
if (mappedValues.length === 0)
return grammarNoValue;
else if (mappedValues.length === 1)
return mappedValues[0];
return super.resolve(grammarGenerator, resolveAsRootGrammar);
}
}
//# sourceMappingURL=GbnfOr.js.map