UNPKG

@parser-generator/cli

Version:

A Parser Generator that supports LL,SLR,LR1,LALR

62 lines 2.07 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const getopts_1 = __importDefault(require("getopts")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const codegen_1 = require("./codegen"); const options = getopts_1.default(process.argv.slice(2), { alias: { help: "h", file: "f", output: "o", parser: "p", lang: "l" }, default: { parser: "LR1", lang: "TS" } }); if (options.help) { console.log("usage: pgen [-f|--file] [-o|--output] [-p|--parser] [-l|--lang]"); process.exit(0); } let { file, output: outputDir, parser, lang } = options; /* 校验 */ if (file == undefined) { console.log(`The option "file" is required`); process.exit(1); } else if (!fs_1.default.statSync(file).isFile()) { console.log(`The path doesn't exists:` + file); process.exit(1); } if (outputDir == undefined) { console.log(`The option "output" is required`); process.exit(1); } else if (!path_1.default.isAbsolute(outputDir)) { outputDir = path_1.default.resolve(process.cwd(), outputDir); } if (!fs_1.default.statSync(outputDir).isDirectory()) { console.log(`The output path doesn't exists,or isn't a directory:` + outputDir); process.exit(1); } parser = parser.toUpperCase(); let supposedParser = ["LL", "SLR", "LR1", "LALR"]; if (supposedParser.indexOf(parser) == -1) { console.log(`The value "${parser}" is invalid for option "parser",expected is one of ` + supposedParser.join(",")); process.exit(1); } lang = lang.toUpperCase(); let supposedLang = ["TS", "JS"]; if (supposedLang.indexOf(lang) == -1) { console.log(`The value "${parser}" is invalid for option "parser",expected is one of ` + supposedLang.join(",")); process.exit(1); } codegen_1.codegen({ parser, lang, outputDir, file }); //# sourceMappingURL=index.js.map