@fauton/cfg
Version:
A package to work with context free grammars and LL1 parsers
24 lines (23 loc) • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.simplifyCfg = void 0;
const removeEmptyProduction_1 = require("./removeEmptyProduction");
const removeNullProduction_1 = require("./removeNullProduction");
const removeUnitProduction_1 = require("./removeUnitProduction");
const removeUselessProduction_1 = require("./removeUselessProduction");
const populateCfg_1 = require("./utils/populateCfg");
/**
*
* @param inputCfg Input cfg to simplify
* @returns
*/
function simplifyCfg(inputCfg) {
const cfg = (0, populateCfg_1.populateCfg)(inputCfg);
(0, removeNullProduction_1.removeNullProduction)(cfg);
(0, removeUnitProduction_1.removeUnitProduction)(cfg);
const reducedVariables = (0, removeUselessProduction_1.removeUselessProduction)(cfg);
cfg.variables = reducedVariables;
const nonEmptyVariables = (0, removeEmptyProduction_1.removeEmptyProduction)(cfg);
cfg.variables = nonEmptyVariables;
}
exports.simplifyCfg = simplifyCfg;