diff --git a/lib/jison.js b/lib/jison.js index d078056ee..aa41ce54c 100755 --- a/lib/jison.js +++ b/lib/jison.js @@ -939,6 +939,9 @@ lrGeneratorMixin.generate = function parser_generate (opt) { case "amd": code = this.generateAMDModule(opt); break; + case "es": + code = this.generateESModule(opt); + break; default: code = this.generateCommonJSModule(opt); break; @@ -962,6 +965,25 @@ lrGeneratorMixin.generateAMDModule = function generateAMDModule(opt){ return out; }; +lrGeneratorMixin.generateESModule = function generateESModule(opt){ + opt = typal.mix.call({}, this.options, opt); + var module = this.generateModule_(); + var out = module.commonCode + + '\nvar parser = '+ module.moduleCode + + "\n"+this.moduleInclude + + (this.lexer && this.lexer.generateModule ? + '\n' + this.lexer.generateModule() + + '\nparser.lexer = lexer;' : '') + + '\nfunction Parser() { this.yy = {} };' + + '\nParser.prototype = parser;' + + '\nparser.Parser = Parser;' + + '\nexport {parser, Parser};' + ; + + return out; +}; + + lrGeneratorMixin.generateCommonJSModule = function generateCommonJSModule (opt) { opt = typal.mix.call({}, this.options, opt); var moduleName = opt.moduleName || "parser";