ebnf2railroad
Version:
EBNF to Railroad diagram
32 lines (28 loc) • 869 B
JavaScript
const { ebnfOptimizer } = require("./ast/ebnf-transform");
const ungroup = require("./ast/optimizers/ungroup");
const deduplicateChoices = require("./ast/optimizers/deduplicate-choices");
const unwrapOptional = require("./ast/optimizers/unwrap-optional");
const optionalChoices = require("./ast/optimizers/optional-choices");
const choiceWithSkip = require("./ast/optimizers/choice-with-skip");
const repetition = require("./ast/optimizers/repetition");
const choiceClustering = require("./ast/optimizers/choice-clustering");
const optimizeAST = ebnfOptimizer([
ungroup,
deduplicateChoices,
unwrapOptional,
optionalChoices,
choiceWithSkip,
repetition,
choiceClustering,
]);
const optimizeText = ebnfOptimizer([
ungroup,
deduplicateChoices,
unwrapOptional,
repetition,
optionalChoices,
]);
module.exports = {
optimizeAST,
optimizeText,
};