|
@@ -3,25 +3,27 @@ module.exports = function(grunt) {
|
|
|
var PEG = require('pegjs');
|
|
|
|
|
|
/**
|
|
|
- Full config looks like this:
|
|
|
+ Full config looks like this:
|
|
|
pegjs: {
|
|
|
my_parser: {
|
|
|
- src: 'parser.pegjs', // REQUIRED
|
|
|
- dest: 'parser.js', // REQUIRED
|
|
|
- trackLineAndColumn: true, // optional (default: false)
|
|
|
- cache: true, // optional (default: false)
|
|
|
- export_var: 'smalltalk.parser' // optional (default: module.exports)
|
|
|
+ options: { // optional
|
|
|
+ trackLineAndColumn: true, // default: false
|
|
|
+ cache: true, // default: false
|
|
|
+ export_var: 'smalltalk.parser' // default: module.exports
|
|
|
+ },
|
|
|
+ src: 'parser.pegjs',
|
|
|
+ dest: 'parser.js',
|
|
|
}
|
|
|
},
|
|
|
*/
|
|
|
grunt.registerMultiTask('peg', 'Generate JavaScript parser from PEG.js grammar description', function() {
|
|
|
- var pegOptions = {
|
|
|
- cache: this.data.cache || false,
|
|
|
- trackLineAndColumn: this.data.trackLineAndColumn || false
|
|
|
- };
|
|
|
- var export_var = this.data.export_var || 'module.exports';
|
|
|
- var parser = PEG.buildParser(grunt.file.read(this.data.src), pegOptions);
|
|
|
- var content = export_var + ' = ' + parser.toSource() + ';\n';
|
|
|
+ var options = this.options({
|
|
|
+ cache: false,
|
|
|
+ trackLineAndColumn: false,
|
|
|
+ export_var: 'module.exports'
|
|
|
+ });
|
|
|
+ var parser = PEG.buildParser(grunt.file.read(this.data.src), options);
|
|
|
+ var content = options.export_var + ' = ' + parser.toSource() + ';\n';
|
|
|
grunt.file.write(this.data.dest, content);
|
|
|
});
|
|
|
};
|