mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00
updating Jison
This commit is contained in:
parent
97fd126a7f
commit
ecfa212189
3 changed files with 21 additions and 10 deletions
|
@ -3,7 +3,7 @@ var parser = (function(){
|
|||
var parser = {trace: function trace() { },
|
||||
yy: {},
|
||||
symbols_: {"Root":2,"TERMINATOR":3,"Expressions":4,"Block":5,"Expression":6,"Value":7,"Call":8,"Code":9,"Operation":10,"Assign":11,"If":12,"Try":13,"Throw":14,"Return":15,"While":16,"For":17,"Switch":18,"Extends":19,"Splat":20,"Existence":21,"Comment":22,"INDENT":23,"OUTDENT":24,"Identifier":25,"IDENTIFIER":26,"AlphaNumeric":27,"NUMBER":28,"STRING":29,"Literal":30,"JS":31,"REGEX":32,"BREAK":33,"CONTINUE":34,"TRUE":35,"FALSE":36,"YES":37,"NO":38,"ON":39,"OFF":40,"ASSIGN":41,"AssignObj":42,"RETURN":43,"COMMENT":44,"!":45,"!!":46,"-":47,"+":48,"NOT":49,"~":50,"--":51,"++":52,"DELETE":53,"TYPEOF":54,"*":55,"/":56,"%":57,"<<":58,">>":59,">>>":60,"&":61,"|":62,"^":63,"<=":64,"<":65,">":66,">=":67,"==":68,"!=":69,"IS":70,"ISNT":71,"&&":72,"||":73,"AND":74,"OR":75,"?":76,"-=":77,"+=":78,"/=":79,"*=":80,"%=":81,"||=":82,"&&=":83,"?=":84,"INSTANCEOF":85,"IN":86,"PARAM_START":87,"ParamList":88,"PARAM_END":89,"FuncGlyph":90,"->":91,"=>":92,"Param":93,",":94,"PARAM":95,".":96,"Array":97,"Object":98,"Parenthetical":99,"Range":100,"This":101,"Accessor":102,"Invocation":103,"PROPERTY_ACCESS":104,"PROTOTYPE_ACCESS":105,"SOAK_ACCESS":106,"Index":107,"Slice":108,"INDEX_START":109,"INDEX_END":110,"{":111,"AssignList":112,"}":113,"NEW":114,"Super":115,"EXTENDS":116,"Arguments":117,"CALL_START":118,"ArgList":119,"CALL_END":120,"SUPER":121,"@":122,"[":123,"]":124,"SimpleArgs":125,"TRY":126,"Catch":127,"FINALLY":128,"CATCH":129,"THROW":130,"(":131,")":132,"WHILE":133,"FOR":134,"ForVariables":135,"ForSource":136,"OF":137,"WHEN":138,"BY":139,"SWITCH":140,"Whens":141,"ELSE":142,"When":143,"LEADING_WHEN":144,"IfStart":145,"IF":146,"ElsIfs":147,"IfBlock":148,"ElsIf":149,"UNLESS":150,"$accept":0,"$end":1},
|
||||
terminals_: ["$end","TERMINATOR","INDENT","OUTDENT","IDENTIFIER","NUMBER","STRING","JS","REGEX","BREAK","CONTINUE","TRUE","FALSE","YES","NO","ON","OFF","ASSIGN","RETURN","COMMENT","!","!!","-","+","NOT","~","--","++","DELETE","TYPEOF","*","/","%","<<",">>",">>>","&","|","^","<=","<",">",">=","==","!=","IS","ISNT","&&","||","AND","OR","?","-=","+=","/=","*=","%=","||=","&&=","?=","INSTANCEOF","IN","PARAM_START","PARAM_END","->","=>",",","PARAM",".","PROPERTY_ACCESS","PROTOTYPE_ACCESS","SOAK_ACCESS","INDEX_START","INDEX_END","{","}","NEW","EXTENDS","CALL_START","CALL_END","SUPER","@","[","]","TRY","FINALLY","CATCH","THROW","(",")","WHILE","FOR","OF","WHEN","BY","SWITCH","ELSE","LEADING_WHEN","IF","ElsIf","UNLESS"],
|
||||
terminals_: {"3":"TERMINATOR","23":"INDENT","24":"OUTDENT","26":"IDENTIFIER","28":"NUMBER","29":"STRING","31":"JS","32":"REGEX","33":"BREAK","34":"CONTINUE","35":"TRUE","36":"FALSE","37":"YES","38":"NO","39":"ON","40":"OFF","41":"ASSIGN","43":"RETURN","44":"COMMENT","45":"!","46":"!!","47":"-","48":"+","49":"NOT","50":"~","51":"--","52":"++","53":"DELETE","54":"TYPEOF","55":"*","56":"/","57":"%","58":"<<","59":">>","60":">>>","61":"&","62":"|","63":"^","64":"<=","65":"<","66":">","67":">=","68":"==","69":"!=","70":"IS","71":"ISNT","72":"&&","73":"||","74":"AND","75":"OR","76":"?","77":"-=","78":"+=","79":"/=","80":"*=","81":"%=","82":"||=","83":"&&=","84":"?=","85":"INSTANCEOF","86":"IN","87":"PARAM_START","89":"PARAM_END","91":"->","92":"=>","94":",","95":"PARAM","96":".","104":"PROPERTY_ACCESS","105":"PROTOTYPE_ACCESS","106":"SOAK_ACCESS","109":"INDEX_START","110":"INDEX_END","111":"{","113":"}","114":"NEW","116":"EXTENDS","118":"CALL_START","120":"CALL_END","121":"SUPER","122":"@","123":"[","124":"]","126":"TRY","128":"FINALLY","129":"CATCH","130":"THROW","131":"(","132":")","133":"WHILE","134":"FOR","137":"OF","138":"WHEN","139":"BY","140":"SWITCH","142":"ELSE","144":"LEADING_WHEN","146":"IF","149":"ElsIf","150":"UNLESS"},
|
||||
productions_: [0,[2,0],[2,1],[2,1],[2,2],[4,1],[4,3],[4,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[5,3],[5,2],[25,1],[27,1],[27,1],[30,1],[30,1],[30,1],[30,1],[30,1],[30,1],[30,1],[30,1],[30,1],[30,1],[30,1],[11,3],[42,3],[42,3],[42,1],[15,2],[15,1],[22,1],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[21,2],[9,5],[9,2],[90,1],[90,1],[88,1],[88,3],[93,1],[93,4],[20,4],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,2],[7,2],[102,2],[102,2],[102,2],[102,1],[102,1],[107,3],[98,3],[112,0],[112,1],[112,3],[112,3],[112,4],[112,3],[8,1],[8,2],[8,1],[19,3],[103,2],[103,2],[117,3],[115,4],[101,1],[101,2],[100,6],[100,7],[108,6],[108,7],[97,3],[119,0],[119,1],[119,2],[119,3],[119,3],[119,4],[119,4],[119,2],[125,1],[125,3],[13,3],[13,4],[13,5],[127,3],[14,2],[99,3],[16,3],[16,2],[16,3],[17,4],[17,4],[135,1],[135,3],[136,2],[136,2],[136,3],[136,3],[18,5],[18,7],[141,1],[141,2],[143,3],[143,4],[143,3],[145,3],[145,2],[148,1],[148,3],[147,4],[147,2],[12,1],[12,3],[12,3]],
|
||||
performAction: function anonymous(yytext,yyleng,yylineno,yy) {
|
||||
|
||||
|
@ -441,8 +441,13 @@ parse: function parse(input) {
|
|||
for (p in table[state]) if (this.terminals_[p] && p != 1) {
|
||||
expected.push("'"+this.terminals_[p]+"'");
|
||||
}
|
||||
parseError('Parse error on line '+(yylineno+1)+'. Expecting: '+expected.join(', ')+"\n"+(this.lexer.showPosition && this.lexer.showPosition()),
|
||||
{text: this.lexer.match, token: symbol, line: this.lexer.yylineno});
|
||||
if (this.lexer.showPosition) {
|
||||
parseError('Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+'\nExpecting '+expected.join(', '),
|
||||
{text: this.lexer.match, token: this.terminals_[symbol], line: this.lexer.yylineno, expected: expected});
|
||||
} else {
|
||||
parseError('Parse error on line '+(yylineno+1)+": Unexpected '"+this.terminals_[symbol]+"'",
|
||||
{text: this.lexer.match, token: this.terminals_[symbol], line: this.lexer.yylineno, expected: expected});
|
||||
}
|
||||
}
|
||||
|
||||
this.trace('action:',action);
|
||||
|
|
11
vendor/jison/lib/jison.js
vendored
11
vendor/jison/lib/jison.js
vendored
|
@ -919,7 +919,7 @@ lrGeneratorMixin.createParser = function createParser () {
|
|||
table: this.table,
|
||||
productions_: this.productions_,
|
||||
symbols_: this.symbols_,
|
||||
terminals_: this.terminals,
|
||||
terminals_: this.terminals_,
|
||||
performAction: this.performAction
|
||||
});
|
||||
|
||||
|
@ -984,8 +984,13 @@ parser.parse = function parse (input) {
|
|||
for (p in table[state]) if (this.terminals_[p] && p != 1) {
|
||||
expected.push("'"+this.terminals_[p]+"'");
|
||||
}
|
||||
parseError('Parse error on line '+(yylineno+1)+'. Expecting: '+expected.join(', ')+"\n"+(this.lexer.showPosition && this.lexer.showPosition()),
|
||||
{text: this.lexer.match, token: symbol, line: this.lexer.yylineno});
|
||||
if (this.lexer.showPosition) {
|
||||
parseError('Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+'\nExpecting '+expected.join(', '),
|
||||
{text: this.lexer.match, token: this.terminals_[symbol], line: this.lexer.yylineno, expected: expected});
|
||||
} else {
|
||||
parseError('Parse error on line '+(yylineno+1)+": Unexpected '"+this.terminals_[symbol]+"'",
|
||||
{text: this.lexer.match, token: this.terminals_[symbol], line: this.lexer.yylineno, expected: expected});
|
||||
}
|
||||
}
|
||||
|
||||
this.trace('action:',action);
|
||||
|
|
9
vendor/jison/tests/parser/api.js
vendored
9
vendor/jison/tests/parser/api.js
vendored
|
@ -219,10 +219,11 @@ exports["test custom parse error method"] = function () {
|
|||
result = hash;
|
||||
throw str;
|
||||
};
|
||||
assert["throws"](function () {parser.parse("agb")});
|
||||
assert.equal(result.text, "b", "parse error text should equal b");
|
||||
assert["throws"](function () {parser.parse("agz")});
|
||||
assert.equal(result.line, 0, "lexical error should have correct line");
|
||||
|
||||
assert["throws"](function () {parser.parse("aga")});
|
||||
assert.strictEqual(result.text, "a", "parse error text should equal b");
|
||||
assert.strictEqual(typeof result.token, 'string', "parse error token should be a string");
|
||||
assert.strictEqual(result.line, 0, "hash should include line number");
|
||||
};
|
||||
|
||||
exports["test jison grammar as string"] = function () {
|
||||
|
|
Loading…
Add table
Reference in a new issue