diff --git a/Cakefile b/Cakefile index 267b85f7..ae815b1a 100644 --- a/Cakefile +++ b/Cakefile @@ -56,9 +56,7 @@ task 'build:full', 'rebuild the source twice, and run the tests', -> task 'build:parser', 'rebuild the Jison parser (run build first)', -> require 'jison' parser = require('./lib/grammar').parser - js = parser.generate() - js = js.replace /else {\s+parseError/m, 'else { if (symbol === 1) symbol = "EOF"; parseError' - fs.writeFile 'lib/parser.js', js + fs.writeFile 'lib/parser.js', parser.generate() task 'build:ultraviolet', 'build and install the Ultraviolet syntax highlighter', -> diff --git a/lib/parser.js b/lib/parser.js index a2e53bc8..3ded185d 100755 --- a/lib/parser.js +++ b/lib/parser.js @@ -561,7 +561,10 @@ parse: function parse(input) { if (this.lexer.showPosition) { parseError.call(this, 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+'\nExpecting '+expected.join(', '), {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, expected: expected}); - } else { if (symbol === 1) symbol = "EOF"; parseError.call(this, 'Parse error on line '+(yylineno+1)+": Unexpected '"+(this.terminals_[symbol] || symbol)+"'", + } else { + var errStr = symbol == 1 /*EOF*/ ? "end of input" : + ("'"+(this.terminals_[symbol] || symbol)+"'"); + parseError.call(this, 'Parse error on line '+(yylineno+1)+": Unexpected "+errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, expected: expected}); } }