forked from lxm_front/jsonlint-mod
23 lines
8.1 KiB
JavaScript
23 lines
8.1 KiB
JavaScript
|
|
var jsonlint=(function(){var require=true,module=false;var exports={};var grammar=(function(){var parser={trace:function trace(){},yy:{},symbols_:{"JSONString":2,"STRING":3,"JSONNumber":4,"NUMBER":5,"JSONNullLiteral":6,"NULL":7,"JSONBooleanLiteral":8,"TRUE":9,"FALSE":10,"JSONText":11,"JSONObject":12,"JSONArray":13,"JSONValue":14,"{":15,"}":16,"JSONMemberList":17,"JSONMember":18,":":19,",":20,"[":21,"]":22,"JSONElementList":23,"$accept":0,"$end":1},terminals_:{"3":"STRING","5":"NUMBER","7":"NULL","9":"TRUE","10":"FALSE","15":"{","16":"}","19":":","20":",","21":"[","22":"]"},productions_:[0,[2,1],[4,1],[6,1],[8,1],[8,1],[11,1],[11,1],[14,1],[14,1],[14,1],[14,1],[14,1],[14,1],[12,2],[12,3],[18,3],[17,1],[17,3],[13,2],[13,3],[23,1],[23,3]],performAction:function anonymous(yytext,yyleng,yylineno,yy){var $$=arguments[5],$0=arguments[5].length;switch(arguments[4]){case 1:this.$=yytext;break;case 2:this.$=Number(yytext);break;case 3:this.$=null;break;case 4:this.$=true;break;case 5:this.$=false;break;case 6:return this.$=$$[$0-1+1-1];break;case 7:return this.$=$$[$0-1+1-1];break;case 8:this.$=$$[$0-1+1-1];break;case 9:this.$=$$[$0-1+1-1];break;case 10:this.$=$$[$0-1+1-1];break;case 11:this.$=$$[$0-1+1-1];break;case 12:this.$=$$[$0-1+1-1];break;case 13:this.$=$$[$0-1+1-1];break;case 14:this.$={};break;case 15:this.$=$$[$0-3+2-1];break;case 16:this.$=[$$[$0-3+1-1],$$[$0-3+3-1]];break;case 17:this.$={};this.$[$$[$0-1+1-1][0]]=$$[$0-1+1-1][1];break;case 18:this.$=$$[$0-3+1-1];$$[$0-3+1-1][$$[$0-3+3-1][0]]=$$[$0-3+3-1][1];break;case 19:this.$=[];break;case 20:this.$=$$[$0-3+2-1];break;case 21:this.$=[$$[$0-1+1-1]];break;case 22:this.$=$$[$0-3+1-1];$$[$0-3+1-1].push($$[$0-3+3-1]);break;default:;}},table:[{"11":1,"12":2,"13":3,"15":[1,4],"21":[1,5]},{"1":[3]},{"1":[2,6]},{"1":[2,7]},{"16":[1,6],"17":7,"18":8,"2":9,"3":[1,10]},{"22":[1,11],"23":12,"14":13,"6":14,"8":15,"2":16,"4":17,"12":18,"13":19,"7":[1,20],"9":[1,21],"10":[1,22],"3":[1,10],"5":[1,23],"15":[1,4],"21":[1,5]},{"1":[2,14],"22":[2,14],"20":[2,14],"16":[2,14]},{"16":[1,24],"20":[1,25]},{"16":[2,17],"20":[2,17]},{"19":[1,26]},{"19":[2,1],"22":[2,1],"20":[2,1],"16":[2,1]},{"1":[2,19],"22":[2,19],"20":[2,19],"16":[2,19]},{"22":[1,27],"20":[1,28]},{"22":[2,21],"20":[2,21]},{"22":[2,8],"20":[2,8],"16":[2,8]},{"22":[2,9],"20":[2,9],"16":[2,9]},{"22":[2,10],"20":[2,10],"16":[2,10]},{"22":[2,11],"20":[2,11],"16":[2,11]},{"22":[2,12],"20":[2,12],"16":[2,12]},{"22":[2,13],"20":[2,13],"16":[2,13]},{"22":[2,3],"20":[2,3],"16":[2,3]},{"22":[2,4],"20":[2,4],"16":[2,4]},{"22":[2,5],"20":[2,5],"16":[2,5]},{"22":[2,2],"20":[2,2],"16":[2,2]},{"1":[2,15],"22":[2,15],"20":[2,15],"16":[2,15]},{"18":29,"2":9,"3":[1,10]},{"14":30,"6":14,"8":15,"2":16,"4":17,"12":18,"13":19,"7":[1,20],"9":[1,21],"10":[1,22],"3":[1,10],"5":[1,23],"15":[1,4],"21":[1,5]},{"1":[2,20],"22":[2,20],"20":[2,20],"16":[2,20]},{"14":31,"6":14,"8":15,"2":16,"4":17,"12":18,"13":19,"7":[1,20],"9":[1,21],"10":[1,22],"3":[1,10],"5":[1,23],"15":[1,4],"21":[1,5]},{"16":[2,18],"20":[2,18]},{"16":[2,16],"20":[2,16]},{"22":[2,22],"20":[2,22]}],parseError:function parseError(str,hash){throw new Error(str);},parse:function parse(input){var self=this,stack=[0],vstack=[null],table=this.table,yytext="",yylineno=0,yyleng=0,shifts=0,reductions=0;this.lexer.setInput(input);this.lexer.yy=this.yy;var parseError=this.yy.parseError=this.yy.parseError||this.parseError;function lex(){var token;token=self.lexer.lex()||1;if(typeof token!=="number"){token=self.symbols_[token];}
|
|
return token;}
|
|
var symbol,state,action,a,r,yyval={},p,len,ip=0,newState,expected;symbol=lex();while(true){state=stack[stack.length-1];action=table[state]&&table[state][symbol];if(typeof action==="undefined"||!action.length||!action[0]){expected=[];for(p in table[state]){if(this.terminals_[p]&&p!=1){expected.push("'"+this.terminals_[p]+"'");}}
|
|
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});}}
|
|
if(action[0]instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);}
|
|
a=action;switch(a[0]){case 1:shifts++;stack.push(symbol);++ip;yyleng=this.lexer.yyleng;yytext=this.lexer.yytext;yylineno=this.lexer.yylineno;symbol=lex();vstack.push(null);stack.push(a[1]);break;case 2:reductions++;len=this.productions_[a[1]][1];yyval.$=vstack[vstack.length-len];r=this.performAction.call(yyval,yytext,yyleng,yylineno,this.yy,a[1],vstack);if(typeof r!=="undefined"){return r;}
|
|
if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len);}
|
|
stack.push(this.productions_[a[1]][0]);vstack.push(yyval.$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:this.reductionCount=reductions;this.shiftCount=shifts;return true;default:;}}
|
|
return true;}};var lexer=(function(){var lexer=({EOF:"",parseError:function parseError(str,hash){if(this.yy.parseError){this.yy.parseError(str,hash);}else{throw new Error(str);}},setInput:function(input){this._input=input;this._more=this._less=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";return this;},input:function(){var ch=this._input[0];this.yytext+=ch;this.yyleng++;this.match+=ch;this.matched+=ch;var lines=ch.match(/\n/);if(lines){this.yylineno++;}
|
|
this._input=this._input.slice(1);return ch;},unput:function(ch){this._input=ch+this._input;return this;},more:function(){this._more=true;return this;},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"");},upcomingInput:function(){var next=this.match;if(next.length<20){next+=this._input.substr(0,20-next.length);}
|
|
return(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"");},showPosition:function(){var pre=this.pastInput();var c=(new Array(pre.length+1)).join("-");return pre+this.upcomingInput()+"\n"+c+"^";},next:function(){if(this.done){return this.EOF;}
|
|
if(!this._input){this.done=true;}
|
|
var token,match,lines;if(!this._more){this.yytext="";this.match="";}
|
|
for(var i=0;i<this.rules.length;i++){match=this._input.match(this.rules[i]);if(match){lines=match[0].match(/\n/g);if(lines){this.yylineno+=lines.length;}
|
|
this.yytext+=match[0];this.match+=match[0];this.matches=match;this.yyleng=this.yytext.length;this._more=false;this._input=this._input.slice(match[0].length);this.matched+=match[0];token=this.performAction.call(this,this.yy,this,i);if(token){return token;}else{return;}}}
|
|
if(this._input==this.EOF){return this.EOF;}else{this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno});}},lex:function(){var r=this.next();if(typeof r!=="undefined"){return r;}else{return this.lex();}}});lexer.performAction=function anonymous(yy,yy_){switch(arguments[2]){case 0:break;case 1:return 5;break;case 2:yy_.yytext=yy_.yytext.substr(1,yy_.yyleng-2);return 3;break;case 3:return 15;break;case 4:return 16;break;case 5:return 21;break;case 6:return 22;break;case 7:return 20;break;case 8:return 19;break;case 9:return 9;break;case 10:return 10;break;case 11:return 7;break;case 12:return"INVALID";break;default:;}};lexer.rules=[/^\s+/,/^-?([0-9]|[1-9][0-9]+)(\.[0-9]+)?([eE][-+]?[0-9]+)?\b\b/,/^"(\\["bfnrt\/\\]|\\u[a-fA-F0-9]{4}|[^\0-\x08\x0a-\x1f"\\])*"/,/^\{/,/^\}/,/^\[/,/^\]/,/^,/,/^:/,/^true\b/,/^false\b/,/^null\b/,/^./];return lexer;})()
|
|
parser.lexer=lexer;return parser;})();if(typeof require!=='undefined'){exports.parser=grammar;exports.parse=function(){return grammar.parse.apply(grammar,arguments);}
|
|
exports.main=function commonjsMain(args){var cwd=require("file").path(require("file").cwd());if(!args[1]){throw new Error("Usage: "+args[0]+" FILE");}
|
|
var source=cwd.join(args[1]).read({charset:"utf-8"});this.parse(source);}
|
|
if(require.main===module){exports.main(require("system").args);}}
|
|
return exports;})()
|