const peggy = require('peggy') const fs = require('fs') const path = require('path') const grammarPath = path.join(__dirname, 'lucene.peggy') const outputPath = path.join(__dirname, 'generated-parser.js') const grammar = fs.readFileSync(grammarPath, 'utf8') const parserSource = peggy.generate(grammar, { output: 'source', format: 'commonjs', }) const moduleSource = ` const { transformKeyValue, transformExclusion, transformOrGroup, transformKeyValueOrGroup, transformFuzzy } = require('./transform-functions'); ${parserSource} function transformQuery(input) { try { const parsed = peg$parse(input, { transformKeyValue, transformExclusion, transformOrGroup, transformKeyValueOrGroup, transformFuzzy, }) return parsed // This would actually involve transforming the parsed structure into a string, omitted for brevity. } catch (error) { console.error('Parsing error', error) return '' // Error handling } } module.exports = { transformQuery }; ` fs.writeFileSync(outputPath, moduleSource) console.log(`Parser generated at: ${outputPath}`)