UNPKG

@fauton/cfg

Version:

A package to work with context free grammars and LL1 parsers

24 lines (23 loc) 1.02 kB
"use strict"; 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;