rittenhop-ghost/versions/5.94.2/node_modules/nearley/bin/nearleyc.js

39 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

#!/usr/bin/env node
var fs = require('fs');
var nearley = require('../lib/nearley.js');
var opts = require('commander');
var Compile = require('../lib/compile.js');
var StreamWrapper = require('../lib/stream.js');
var version = require('../package.json').version;
opts.version(version, '-v, --version')
.arguments('<file.ne>')
.option('-o, --out [filename.js]', 'File to output to (defaults to stdout)', false)
.option('-e, --export [name]', 'Variable to set parser to', 'grammar')
.option('-q, --quiet', 'Suppress linter')
.option('--nojs', 'Do not compile postprocessors')
.parse(process.argv);
var input = opts.args[0] ? fs.createReadStream(opts.args[0]) : process.stdin;
var output = opts.out ? fs.createWriteStream(opts.out) : process.stdout;
var parserGrammar = nearley.Grammar.fromCompiled(require('../lib/nearley-language-bootstrapped.js'));
var parser = new nearley.Parser(parserGrammar);
var generate = require('../lib/generate.js');
var lint = require('../lib/lint.js');
input
.pipe(new StreamWrapper(parser))
.on('finish', function() {
parser.feed('\n');
var c = Compile(
parser.results[0],
Object.assign({version: version}, opts)
);
if (!opts.quiet) lint(c, {'out': process.stderr, 'version': version});
output.write(generate(c, opts.export));
});