'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); }