From cc77e29166d590a126ebaeaeee4c11b4c2d68811 Mon Sep 17 00:00:00 2001 From: deathcap Date: Sat, 9 Jan 2016 16:29:21 -0800 Subject: [PATCH 1/3] Add script to generate parser using jison --- jison_generate.js | 13 +++++++++++++ package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 jison_generate.js diff --git a/jison_generate.js b/jison_generate.js new file mode 100644 index 0000000..3696a9f --- /dev/null +++ b/jison_generate.js @@ -0,0 +1,13 @@ +'use strict'; + +var Parser = require('jison').Parser; +var fs = require('fs'); +var path = require('path'); + +var options = { +}; + +var grammar = fs.readFileSync(path.join(__dirname, 'grammar.jison'), 'utf8'); +var parser = new Parser(grammar); +var parserSource = parser.generate(options); +fs.writeFileSync(path.join(__dirname, 'grammar.js'), parserSource, 'utf8'); diff --git a/package.json b/package.json index 34fdfd5..c920d10 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "jison": "~0.4.2" }, "scripts": { - "prepublish": "jison grammar.jison", + "prepublish": "node jison_generate.js", "test": "mocha --reporter spec" } } From b81190e1248b0bba01a3896c04b223835ba48910 Mon Sep 17 00:00:00 2001 From: deathcap Date: Sat, 9 Jan 2016 16:48:30 -0800 Subject: [PATCH 2/3] Disable unused moduleMain code for browserify compatibility The jison parser generator by default will generate a command-line interface built into the parser. node-mojangson only uses the parser object and not the command-line interface, and has no way to access it, so it can be safely disabled -- since it causes compatibility issues with some browserify transforms (and is unused), see: https://github.com/zaach/jison/issues/300 https://github.com/substack/static-eval/pull/12 --- jison_generate.js | 1 + 1 file changed, 1 insertion(+) diff --git a/jison_generate.js b/jison_generate.js index 3696a9f..6ce1412 100644 --- a/jison_generate.js +++ b/jison_generate.js @@ -5,6 +5,7 @@ var fs = require('fs'); var path = require('path'); var options = { + mainModule: function() {} }; var grammar = fs.readFileSync(path.join(__dirname, 'grammar.jison'), 'utf8'); From fe5c63375b374c8a5e17d44a507cf227532baac0 Mon Sep 17 00:00:00 2001 From: deathcap Date: Sat, 9 Jan 2016 17:36:47 -0800 Subject: [PATCH 3/3] Update jison to use --moduleMain argument to exclude CLI tool --- jison_generate.js | 14 -------------- package.json | 4 ++-- 2 files changed, 2 insertions(+), 16 deletions(-) delete mode 100644 jison_generate.js diff --git a/jison_generate.js b/jison_generate.js deleted file mode 100644 index 6ce1412..0000000 --- a/jison_generate.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -var Parser = require('jison').Parser; -var fs = require('fs'); -var path = require('path'); - -var options = { - mainModule: function() {} -}; - -var grammar = fs.readFileSync(path.join(__dirname, 'grammar.jison'), 'utf8'); -var parser = new Parser(grammar); -var parserSource = parser.generate(options); -fs.writeFileSync(path.join(__dirname, 'grammar.js'), parserSource, 'utf8'); diff --git a/package.json b/package.json index c920d10..d89d452 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,10 @@ }, "devDependencies": { "mocha": "~2.2.1", - "jison": "~0.4.2" + "jison": "deathcap/jison#modulemain" }, "scripts": { - "prepublish": "node jison_generate.js", + "prepublish": "jison grammar.jison --moduleMain 'function (){}'", "test": "mocha --reporter spec" } }