'use strict'; module.exports = function(body, options = {}) { let expressionParser, parserOptions; if (options.tracer != null) { const pegjs = require("pegjs"); const fs = require("fs"); const path = require("path"); let grammar = fs.readFileSync(path.join(__dirname, "../src/expression.pegjs"), {encoding: "utf8"}); expressionParser = pegjs.generate(grammar, { trace: true, format: "commonjs", dependencies: { "reorderOperatorExpressions": path.join(__dirname, "./reorder-operator-expressions") } }); parserOptions = { tracer: options.tracer }; } else { expressionParser = require("./expression"); parserOptions = {}; } return expressionParser.parse(body, parserOptions); }