node-query/node_modules/grunt-jsdoc/node_modules/jsdoc/node_modules/catharsis/lib/parser.js

4 lines
162 KiB
JavaScript
Raw Normal View History

2014-10-20 16:56:45 -04:00
module.exports=function(){function peg$subclass(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor}function SyntaxError(expected,found,offset,line,column){function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return"\\x"+hex(ch)}).replace(/[\u0180-\u0FFF]/g,function(ch){return"\\u0"+hex(ch)}).replace(/[\u1080-\uFFFF]/g,function(ch){return"\\u"+hex(ch)})}var expectedDesc,foundDesc;switch(expected.length){case 0:expectedDesc="end of input";break;case 1:expectedDesc=expected[0];break;default:expectedDesc=expected.slice(0,-1).join(", ")+" or "+expected[expected.length-1]}foundDesc=found?'"'+stringEscape(found)+'"':"end of input";return"Expected "+expectedDesc+" but "+foundDesc+" found."}this.expected=expected;this.found=found;this.offset=offset;this.line=line;this.column=column;this.name="SyntaxError";this.message=buildMessage(expected,found)}peg$subclass(SyntaxError,Error);function parse(input){var options=arguments.length>1?arguments[1]:{},peg$startRuleFunctions={TypeExpression:peg$parseTypeExpression},peg$startRuleFunction=peg$parseTypeExpression,peg$c0=null,peg$c1="",peg$c2=function(r,unk){var result=unk;if(r.repeatable){result=repeatable(result)}return result},peg$c3="?",peg$c4='"?"',peg$c5="!",peg$c6='"!"',peg$c7=function(r,prefix,expr){var result=expr;if(r.repeatable){result=repeatable(result)}return nullable(result,prefix)},peg$c8=function(expr,postfix){return nullable(expr,postfix)},peg$c9=function(prefix,expr){return nullable(expr,prefix)},peg$c10=function(expr){return repeatable(expr)},peg$c11=function(lit,opt){var result=lit;if(opt.optional){result.optional=true}return result},peg$c12=function(lit){return repeatable(lit)},peg$c13="*",peg$c14='"*"',peg$c15=function(){return{type:Types.AllLiteral}},peg$c16=function(){return{type:Types.NullLiteral}},peg$c17=function(){return{type:Types.UndefinedLiteral}},peg$c18="...",peg$c19='"..."',peg$c20=function(){return{repeatable:true}},peg$c21="=",peg$c22='"="',peg$c23=function(){return{optional:true}},peg$c24="[]",peg$c25='"[]"',peg$c26=function(name){var result;if(!options.jsdoc){return null}result={type:Types.TypeApplication,expression:{type:Types.NameExpression,name:"Array"},applications:[name]};result.applications[0].type=Types.NameExpression;return result},peg$c27=function(exp,appl,opt){var result={};var nameExp={type:Types.NameExpression,name:exp.name};if(appl.length){result.type=Types.TypeApplication;result.expression=nameExp;result.applications=appl}else{result=nameExp}if(opt.optional){result.optional=true}return result},peg$c28=function(name){if(!options.jsdoc){return null}return name},peg$c29=function(t){return repeatable(t)},peg$c30=function(exp,opt){var result={type:Types.NameExpression,name:exp.name,reservedWord:true};if(opt.optional){result.optional=true}return result},peg$c31=".",peg$c32='"."',peg$c33="<",peg$c34='"<"',peg$c35=">",peg$c36='">"',peg$c37=function(sep,l){return l},peg$c38=[],peg$c39=",",peg$c40='","',peg$c41=function(expr,list){var result=[expr];for(var i=0,l=list.length;i<l;i++){result.push(list[i][3])}return result},peg$c42=function(){var result;if(!options.jsdoc){return null}result={type:Types.TypeApplication,expression:{type:Types.NameExpression,name:"Array"},applications:[{type:Types.FunctionType,params:[]}]};return result},peg$c43=function(sig,opt){if(!sig&&!options.jsdoc){return null}else if(typeof sig!=="object"){sig={params:[]}}var result={type:Types.FunctionType};Object.keys(sig).forEach(function(key){result[key]=sig[key]});if(opt.optional){result.optional=true}return result},peg$c44="(",peg$c45='"("',peg$c46=")",peg$c47='")"',peg$c48=":",peg$c49='":"',peg$c50=function(sig,returns){var result={};result.params=sig.params||[];if(sig["
},peg$c265=function(seq){return seq},peg$c266="\n",peg$c267='"\\n"',peg$c268="\r",peg$c269='"\\r"',peg$c270="\u2028",peg$c271='"\\u2028"',peg$c272="\u2029",peg$c273='"\\u2029"',peg$c274="\r\n",peg$c275='"\\r\\n"',peg$c276=function(){return"0"},peg$c277=/^['"\\bfnrtv]/,peg$c278="['\"\\\\bfnrtv]",peg$c279="x",peg$c280='"x"',peg$c281="any character",peg$c282="whitespace",peg$c283="empty",peg$c284=/^[\t\x0B\f \xA0\uFEFF]/,peg$c285="[\\t\\x0B\\f \\xA0\\uFEFF]",peg$currPos=0,peg$reportedPos=0,peg$cachedPos=0,peg$cachedPosDetails={line:1,column:1,seenCR:false},peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0,peg$result;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions)){throw new Error("Can't start parsing from rule \""+options.startRule+'".')}peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}function text(){return input.substring(peg$reportedPos,peg$currPos)}function offset(){return peg$reportedPos}function line(){return peg$computePosDetails(peg$reportedPos).line}function column(){return peg$computePosDetails(peg$reportedPos).column}function peg$computePosDetails(pos){function advance(details,pos){var p,ch;for(p=0;p<pos;p++){ch=input.charAt(p);if(ch==="\n"){if(!details.seenCR){details.line++}details.column=1;details.seenCR=false}else if(ch==="\r"||ch==="\u2028"||ch==="\u2029"){details.line++;details.column=1;details.seenCR=true}else{details.column++;details.seenCR=false}}}if(peg$cachedPos!==pos){if(peg$cachedPos>pos){peg$cachedPos=0;peg$cachedPosDetails={line:1,column:1,seenCR:false}}peg$cachedPos=pos;advance(peg$cachedPosDetails,peg$cachedPos)}return peg$cachedPosDetails}function peg$fail(expected){if(peg$currPos<peg$maxFailPos){return}if(peg$currPos>peg$maxFailPos){peg$maxFailPos=peg$currPos;peg$maxFailExpected=[]}peg$maxFailExpected.push(expected)}function peg$cleanupExpected(expected){var i=0;expected.sort();while(i<expected.length){if(expected[i-1]===expected[i]){expected.splice(i,1)}else{i++}}}function peg$parseTypeExpression(){var s0,s1,s2,s3,s4;s0=peg$parseTypeUnionLegacySyntax();if(s0===null){s0=peg$currPos;s1=peg$parseRepeatable();if(s1===null){s1=peg$c1}if(s1!==null){s2=peg$parseUnknownLiteral();if(s2!==null){s3=peg$currPos;peg$silentFails++;s4=peg$parseBasicTypeExpression();peg$silentFails--;if(s4===null){s3=peg$c1}else{peg$currPos=s3;s3=peg$c0}if(s3!==null){peg$reportedPos=s0;s1=peg$c2(s1,s2);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}if(s0===null){s0=peg$currPos;s1=peg$parseRepeatable();if(s1===null){s1=peg$c1}if(s1!==null){if(input.charCodeAt(peg$currPos)===63){s2=peg$c3;peg$currPos++}else{s2=null;if(peg$silentFails===0){peg$fail(peg$c4)}}if(s2===null){if(input.charCodeAt(peg$currPos)===33){s2=peg$c5;peg$currPos++}else{s2=null;if(peg$silentFails===0){peg$fail(peg$c6)}}}if(s2!==null){s3=peg$parseBasicTypeExpressionNonRepeatable();if(s3!==null){peg$reportedPos=s0;s1=peg$c7(s1,s2,s3);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}if(s0===null){s0=peg$currPos;s1=peg$parseBasicTypeExpression();if(s1!==null){if(input.charCodeAt(peg$currPos)===63){s2=peg$c3;peg$currPos++}else{s2=null;if(peg$silentFails===0){peg$fail(peg$c4)}}if(s2===null){if(input.charCodeAt(peg$currPos)===33){s2=peg$c5;peg$currPos++}else{s2=null;if(peg$silentFails===0){peg$fail(peg$c6)}}}if(s2===null){s2=peg$c1}if(s2!==null){peg$reportedPos=s0;s1=peg$c8(s1,s2);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}}}}return s0}function peg$parseBasicTypeExpression(){var s0;s0=peg$parseTypeUnion();if(s0===null){s0=peg$parseRestrictedTypeExpression()}return s0}function peg$parseRestrictedTypeExpression(){var s0;s0=peg$parseFunctionType();if(s0===null){s0=peg$parseRecordType();if(s0===null){s0=peg$parseLiteralType();if(s0===null){s0=peg$parseNameExpressionType()}}}return s0}function peg$parseBasicTypeExpressionNonRepeatable(){var s0;s0=peg$parseTypeUnionNonRepeatable()
}function peg$parseNameExpression(){var s0,s1,s2;s0=peg$currPos;s1=peg$parseDoubleStringLiteral();if(s1!==null){peg$reportedPos=s0;s1=peg$c87(s1)}if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}if(s0===null){s0=peg$currPos;s1=peg$parseSingleStringLiteral();if(s1!==null){peg$reportedPos=s0;s1=peg$c88(s1)}if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}if(s0===null){s0=peg$currPos;s1=peg$parseIdentifier();if(s1!==null){s2=peg$parsePropertyChain();if(s2===null){s2=peg$c1}if(s2!==null){peg$reportedPos=s0;s1=peg$c89(s1,s2);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}}}return s0}function peg$parseReservedWordNameExpression(){var s0,s1;s0=peg$currPos;s1=peg$parseReservedWord();if(s1!==null){peg$reportedPos=s0;s1=peg$c90(s1)}if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}return s0}function peg$parsePropertyIdentifier(){var s0,s1;s0=peg$parseIdentifier();if(s0===null){s0=peg$currPos;s1=peg$parseDoubleStringLiteral();if(s1!==null){peg$reportedPos=s0;s1=peg$c91(s1)}if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}if(s0===null){s0=peg$currPos;s1=peg$parseSingleStringLiteral();if(s1!==null){peg$reportedPos=s0;s1=peg$c92(s1)}if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}if(s0===null){s0=peg$parseNumericLiteral();if(s0===null){s0=peg$parseKeyword();if(s0===null){s0=peg$parseFutureReservedWord()}}}}}return s0}function peg$parsePropertyChain(){var s0,s1,s2;s0=peg$currPos;s1=[];s2=peg$parsePropertyChainItem();if(s2!==null){while(s2!==null){s1.push(s2);s2=peg$parsePropertyChainItem()}}else{s1=peg$c0}if(s1!==null){s1=input.substring(s0,peg$currPos)}s0=s1;return s0}function peg$parsePropertyChainItem(){var s0,s1,s2,s3;s0=peg$currPos;if(input.charCodeAt(peg$currPos)===46){s1=peg$c31;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c32)}}if(s1===null){if(input.charCodeAt(peg$currPos)===35){s1=peg$c93;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c94)}}if(s1===null){if(input.charCodeAt(peg$currPos)===126){s1=peg$c95;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c96)}}if(s1===null){if(input.charCodeAt(peg$currPos)===58){s1=peg$c48;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c49)}}if(s1===null){if(input.charCodeAt(peg$currPos)===47){s1=peg$c97;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c98)}}}}}}if(s1!==null){s2=peg$currPos;peg$silentFails++;if(input.charCodeAt(peg$currPos)===60){s3=peg$c33;peg$currPos++}else{s3=null;if(peg$silentFails===0){peg$fail(peg$c34)}}peg$silentFails--;if(s3===null){s2=peg$c1}else{peg$currPos=s2;s2=peg$c0}if(s2!==null){s3=peg$parsePropertyIdentifier();if(s3!==null){peg$reportedPos=s0;s1=peg$c99(s1,s3);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}return s0}function peg$parseNamespaceExpression(){var s0;s0=peg$parseNameExpression();if(s0===null){s0=peg$parseStringLiteral()}return s0}function peg$parseIdentifier(){var s0,s1,s2;s0=peg$currPos;s1=peg$currPos;peg$silentFails++;s2=peg$parseReservedWord();peg$silentFails--;if(s2===null){s1=peg$c1}else{peg$currPos=s1;s1=peg$c0}if(s1!==null){s2=peg$parseIdentifierName();if(s2!==null){peg$reportedPos=s0;s1=peg$c100(s2);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}return s0}function peg$parseIdentifierName(){var s0,s1,s2,s3,s4;s0=peg$currPos;s1=peg$currPos;s2=peg$parseIdentifierStart();if(s2!==null){s3=[];s4=peg$parseIdentifierPart();while(s4!==null){s3.push(s4);s4=peg$parseIdentifierPart()}if(s3!==null){s4=peg$parseIdentifierEnd();if(s4===null){s4=peg$c1}if(s4!==null){s2=[s2,s3,s4];s1=s2}else{peg$currPos=s1;s1=peg$c0}}else{peg$currPos=s1;s1=peg$c0}}else{peg$currPos=s1;s1=peg$c0}if(s1!==null){s1=input.substring(s0,peg$currPos)}s0=s1;return s0}function peg$parseIdentifierStart(){var s0;s0=peg$parseUnicodeLetter();if(s0===null){if(input.charCodeAt(peg$currPos)===36){s0=peg$c101;peg$currPos++}else{s0=null;if(peg$silentFails===0){peg$fail(peg$c102)}}if(s0===null){if(input.charCodeAt(peg$
peg$silentFails++;s0=[];s1=peg$parseWhitespace();while(s1!==null){s0.push(s1);s1=peg$parseWhitespace()}peg$silentFails--;if(s0===null){s1=null;if(peg$silentFails===0){peg$fail(peg$c282)}}return s0}function peg$parse__(){var s0,s1;peg$silentFails++;s0=peg$c1;peg$silentFails--;if(s0===null){s1=null;if(peg$silentFails===0){peg$fail(peg$c283)}}return s0}function peg$parseWhitespace(){var s0;if(peg$c284.test(input.charAt(peg$currPos))){s0=input.charAt(peg$currPos);peg$currPos++}else{s0=null;if(peg$silentFails===0){peg$fail(peg$c285)}}if(s0===null){s0=peg$parseUnicodeZs()}return s0}var Types=require("./types");function repeatable(obj){obj.repeatable=true;return obj}function nullable(obj,modifier){if(modifier){obj.nullable=modifier==="?"?true:false}return obj}peg$result=peg$startRuleFunction();if(peg$result!==null&&peg$currPos===input.length){return peg$result}else{peg$cleanupExpected(peg$maxFailExpected);peg$reportedPos=Math.max(peg$currPos,peg$maxFailPos);throw new SyntaxError(peg$maxFailExpected,peg$reportedPos<input.length?input.charAt(peg$reportedPos):null,peg$reportedPos,peg$computePosDetails(peg$reportedPos).line,peg$computePosDetails(peg$reportedPos).column)}}return{SyntaxError:SyntaxError,parse:parse}}();