You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
992 B
JavaScript
43 lines
992 B
JavaScript
'use strict';
|
|
|
|
const util = require("util");
|
|
const fs = require("fs");
|
|
const createBetterPegTracer = require("better-peg-tracer");
|
|
const pegjsBacktrace = require("pegjs-backtrace");
|
|
const pegjsPermutationTracer = require("pegjs-permutation-tracer");
|
|
|
|
const parse = require("./");
|
|
const stringify = require("./lib/stringify");
|
|
|
|
function fullInspect(obj) {
|
|
return util.inspect(obj, {colors: true, depth: null, customInspect: false})
|
|
}
|
|
|
|
let trace, file;
|
|
|
|
if (process.argv[2] === "--trace") {
|
|
trace = true;
|
|
file = process.argv[3];
|
|
} else {
|
|
trace = false;
|
|
file = process.argv[2];
|
|
}
|
|
|
|
let contents = fs.readFileSync(file).toString();
|
|
let tracer = pegjsPermutationTracer(contents);
|
|
|
|
try {
|
|
let tree = parse(contents, {
|
|
tracer: trace ? createBetterPegTracer(contents) : undefined
|
|
// tracer: trace ? tracer : undefined
|
|
});
|
|
|
|
console.log(fullInspect(tree));
|
|
|
|
console.log("----");
|
|
console.log(stringify(tree));
|
|
} catch (err) {
|
|
console.log(fullInspect(err))
|
|
tracer.printPermutations(194);
|
|
}
|