| // From https://github.com/darobin/webidl.js/tree/, under MIT license |
| window.WebIDLParser = (function(){ |
| /* |
| * Generated by PEG.js 0.7.0. |
| * |
| * http://pegjs.majda.cz/ |
| */ |
| |
| function quote(s) { |
| /* |
| * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a |
| * string literal except for the closing quote character, backslash, |
| * carriage return, line separator, paragraph separator, and line feed. |
| * Any character may appear in the form of an escape sequence. |
| * |
| * For portability, we also escape escape all control and non-ASCII |
| * characters. Note that "\0" and "\v" escape sequences are not used |
| * because JSHint does not like the first and IE the second. |
| */ |
| return '"' + s |
| .replace(/\\/g, '\\\\') // backslash |
| .replace(/"/g, '\\"') // closing quote character |
| .replace(/\x08/g, '\\b') // backspace |
| .replace(/\t/g, '\\t') // horizontal tab |
| .replace(/\n/g, '\\n') // line feed |
| .replace(/\f/g, '\\f') // form feed |
| .replace(/\r/g, '\\r') // carriage return |
| .replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape) |
| + '"'; |
| } |
| |
| var result = { |
| /* |
| * Parses the input with a generated parser. If the parsing is successfull, |
| * returns a value explicitly or implicitly specified by the grammar from |
| * which the parser was generated (see |PEG.buildParser|). If the parsing is |
| * unsuccessful, throws |PEG.parser.SyntaxError| describing the error. |
| */ |
| parse: function(input, startRule) { |
| var parseFunctions = { |
| "space": parse_space, |
| "s": parse_s, |
| "w": parse_w, |
| "identifier": parse_identifier, |
| "octal": parse_octal, |
| "hex": parse_hex, |
| "decimal": parse_decimal, |
| "integer": parse_integer, |
| "floatEe": parse_floatEe, |
| "expFloat": parse_expFloat, |
| "leadFloat": parse_leadFloat, |
| "dotFloat": parse_dotFloat, |
| "float": parse_float, |
| "string": parse_string, |
| "other": parse_other, |
| "type": parse_type, |
| "TypeDesc": parse_TypeDesc, |
| "Sequence": parse_Sequence, |
| "ArrayType": parse_ArrayType, |
| "UnionType": parse_UnionType, |
| "TypeList": parse_TypeList, |
| "TypeListRest": parse_TypeListRest, |
| "SimpleType": parse_SimpleType, |
| "PrimitiveType": parse_PrimitiveType, |
| "FloatType": parse_FloatType, |
| "UnsignedIntegerType": parse_UnsignedIntegerType, |
| "ScopedNameList": parse_ScopedNameList, |
| "ScopedNameListRest": parse_ScopedNameListRest, |
| "ScopedName": parse_ScopedName, |
| "AbsoluteScopedName": parse_AbsoluteScopedName, |
| "RelativeScopedName": parse_RelativeScopedName, |
| "ScopedNameRest": parse_ScopedNameRest, |
| "BooleanLiteral": parse_BooleanLiteral, |
| "Nullable": parse_Nullable, |
| "ReturnType": parse_ReturnType, |
| "definitions": parse_definitions, |
| "definition": parse_definition, |
| "partialinterface": parse_partialinterface, |
| "partialdictionary": parse_partialdictionary, |
| "callbackinterface": parse_callbackinterface, |
| "module": parse_module, |
| "implements": parse_implements, |
| "interface": parse_interface, |
| "enum": parse_enum, |
| "callback": parse_callback, |
| "EnumValues": parse_EnumValues, |
| "EnumValuesRest": parse_EnumValuesRest, |
| "Inheritance": parse_Inheritance, |
| "InheritanceInner": parse_InheritanceInner, |
| "InterfaceMemberList": parse_InterfaceMemberList, |
| "InterfaceMember": parse_InterfaceMember, |
| "const": parse_const, |
| "constExpr": parse_constExpr, |
| "attrOrOp": parse_attrOrOp, |
| "Stringifier": parse_Stringifier, |
| "Attribute": parse_Attribute, |
| "GetRaises": parse_GetRaises, |
| "SetRaises": parse_SetRaises, |
| "Operation": parse_Operation, |
| "Qualifiers": parse_Qualifiers, |
| "Special": parse_Special, |
| "OperationRest": parse_OperationRest, |
| "Arguments": parse_Arguments, |
| "ArgumentsRest": parse_ArgumentsRest, |
| "Argument": parse_Argument, |
| "Raises": parse_Raises, |
| "dictionary": parse_dictionary, |
| "DictionaryMemberList": parse_DictionaryMemberList, |
| "DictionaryMember": parse_DictionaryMember, |
| "defaultValue": parse_defaultValue, |
| "typedef": parse_typedef, |
| "exception": parse_exception, |
| "ExceptionMembers": parse_ExceptionMembers, |
| "ExceptionMember": parse_ExceptionMember, |
| "field": parse_field, |
| "ExtendedAttributeList": parse_ExtendedAttributeList, |
| "ExtendedAttributeListInner": parse_ExtendedAttributeListInner, |
| "ExtAttrs": parse_ExtAttrs, |
| "ExtAttrsRest": parse_ExtAttrsRest, |
| "ExtAttr": parse_ExtAttr, |
| "ExtAttrNoArg": parse_ExtAttrNoArg, |
| "ExtAttrNameValue": parse_ExtAttrNameValue, |
| "ExtAttrNamedArgList": parse_ExtAttrNamedArgList, |
| "ExtAttrNamedArgList": parse_ExtAttrNamedArgList, |
| "ExtAttrArgList": parse_ExtAttrArgList |
| }; |
| |
| if (startRule !== undefined) { |
| if (parseFunctions[startRule] === undefined) { |
| throw new Error("Invalid rule name: " + quote(startRule) + "."); |
| } |
| } else { |
| startRule = "definitions"; |
| } |
| |
| var pos = 0; |
| var reportFailures = 0; |
| var rightmostFailuresPos = 0; |
| var rightmostFailuresExpected = []; |
| |
| function padLeft(input, padding, length) { |
| var result = input; |
| |
| var padLength = length - input.length; |
| for (var i = 0; i < padLength; i++) { |
| result = padding + result; |
| } |
| |
| return result; |
| } |
| |
| function escape(ch) { |
| var charCode = ch.charCodeAt(0); |
| var escapeChar; |
| var length; |
| |
| if (charCode <= 0xFF) { |
| escapeChar = 'x'; |
| length = 2; |
| } else { |
| escapeChar = 'u'; |
| length = 4; |
| } |
| |
| return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length); |
| } |
| |
| function matchFailed(failure) { |
| if (pos < rightmostFailuresPos) { |
| return; |
| } |
| |
| if (pos > rightmostFailuresPos) { |
| rightmostFailuresPos = pos; |
| rightmostFailuresExpected = []; |
| } |
| |
| rightmostFailuresExpected.push(failure); |
| } |
| |
| function parse_space() { |
| var result0, result1, result2, result3; |
| var pos0, pos1, pos2; |
| |
| if (input.charCodeAt(pos) === 32) { |
| result0 = " "; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\" \""); |
| } |
| } |
| if (result0 === null) { |
| if (input.charCodeAt(pos) === 9) { |
| result0 = "\t"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\t\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.charCodeAt(pos) === 13) { |
| result0 = "\r"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\r\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.charCodeAt(pos) === 10) { |
| result0 = "\n"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\n\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.charCodeAt(pos) === 12) { |
| result0 = "\f"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\f\""); |
| } |
| } |
| if (result0 === null) { |
| pos0 = pos; |
| if (input.substr(pos, 2) === "//") { |
| result0 = "//"; |
| pos += 2; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"//\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = []; |
| if (/^[^\n]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^\\n]"); |
| } |
| } |
| while (result2 !== null) { |
| result1.push(result2); |
| if (/^[^\n]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^\\n]"); |
| } |
| } |
| } |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 10) { |
| result2 = "\n"; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\n\""); |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos0; |
| } |
| } else { |
| result0 = null; |
| pos = pos0; |
| } |
| } else { |
| result0 = null; |
| pos = pos0; |
| } |
| if (result0 === null) { |
| pos0 = pos; |
| if (input.substr(pos, 2) === "/*") { |
| result0 = "/*"; |
| pos += 2; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"/*\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = []; |
| if (/^[^*]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^*]"); |
| } |
| } |
| if (result2 === null) { |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 42) { |
| result2 = "*"; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"*\""); |
| } |
| } |
| if (result2 !== null) { |
| pos2 = pos; |
| reportFailures++; |
| if (input.charCodeAt(pos) === 47) { |
| result3 = "/"; |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"/\""); |
| } |
| } |
| reportFailures--; |
| if (result3 === null) { |
| result3 = ""; |
| } else { |
| result3 = null; |
| pos = pos2; |
| } |
| if (result3 !== null) { |
| result2 = [result2, result3]; |
| } else { |
| result2 = null; |
| pos = pos1; |
| } |
| } else { |
| result2 = null; |
| pos = pos1; |
| } |
| } |
| while (result2 !== null) { |
| result1.push(result2); |
| if (/^[^*]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^*]"); |
| } |
| } |
| if (result2 === null) { |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 42) { |
| result2 = "*"; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"*\""); |
| } |
| } |
| if (result2 !== null) { |
| pos2 = pos; |
| reportFailures++; |
| if (input.charCodeAt(pos) === 47) { |
| result3 = "/"; |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"/\""); |
| } |
| } |
| reportFailures--; |
| if (result3 === null) { |
| result3 = ""; |
| } else { |
| result3 = null; |
| pos = pos2; |
| } |
| if (result3 !== null) { |
| result2 = [result2, result3]; |
| } else { |
| result2 = null; |
| pos = pos1; |
| } |
| } else { |
| result2 = null; |
| pos = pos1; |
| } |
| } |
| } |
| if (result1 !== null) { |
| if (input.substr(pos, 2) === "*/") { |
| result2 = "*/"; |
| pos += 2; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"*/\""); |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos0; |
| } |
| } else { |
| result0 = null; |
| pos = pos0; |
| } |
| } else { |
| result0 = null; |
| pos = pos0; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| return result0; |
| } |
| |
| function parse_s() { |
| var result0, result1; |
| |
| result1 = parse_space(); |
| if (result1 !== null) { |
| result0 = []; |
| while (result1 !== null) { |
| result0.push(result1); |
| result1 = parse_space(); |
| } |
| } else { |
| result0 = null; |
| } |
| return result0; |
| } |
| |
| function parse_w() { |
| var result0; |
| |
| result0 = parse_s(); |
| result0 = result0 !== null ? result0 : ""; |
| return result0; |
| } |
| |
| function parse_identifier() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (/^[A-Z_a-z]/.test(input.charAt(pos))) { |
| result0 = input.charAt(pos); |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("[A-Z_a-z]"); |
| } |
| } |
| if (result0 !== null) { |
| result1 = []; |
| if (/^[0-9A-Z_a-z]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9A-Z_a-z]"); |
| } |
| } |
| while (result2 !== null) { |
| result1.push(result2); |
| if (/^[0-9A-Z_a-z]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9A-Z_a-z]"); |
| } |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, nmstart, nmchars) { return nmstart + nmchars.join(""); })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_octal() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 48) { |
| result0 = "0"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"0\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = []; |
| if (/^[0-7]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-7]"); |
| } |
| } |
| while (result2 !== null) { |
| result1.push(result2); |
| if (/^[0-7]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-7]"); |
| } |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, value) { return "0" + value.join(""); })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_hex() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 48) { |
| result0 = "0"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"0\""); |
| } |
| } |
| if (result0 !== null) { |
| if (/^[Xx]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[Xx]"); |
| } |
| } |
| if (result1 !== null) { |
| if (/^[0-9A-Fa-f]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9A-Fa-f]"); |
| } |
| } |
| if (result3 !== null) { |
| result2 = []; |
| while (result3 !== null) { |
| result2.push(result3); |
| if (/^[0-9A-Fa-f]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9A-Fa-f]"); |
| } |
| } |
| } |
| } else { |
| result2 = null; |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, x, value) { return "0" + x + value.join(""); })(pos0, result0[1], result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_decimal() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result0 = input.charAt(pos); |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| if (result0 !== null) { |
| result1 = []; |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| while (result2 !== null) { |
| result1.push(result2); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, numStart, numRest) { return numStart + numRest.join(""); })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_integer() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 45) { |
| result0 = "-"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"-\""); |
| } |
| } |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result1 = parse_hex(); |
| if (result1 === null) { |
| result1 = parse_octal(); |
| if (result1 === null) { |
| result1 = parse_decimal(); |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, neg, num) { return neg + num; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_floatEe() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (/^[Ee]/.test(input.charAt(pos))) { |
| result0 = input.charAt(pos); |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("[Ee]"); |
| } |
| } |
| if (result0 !== null) { |
| if (/^[+\-]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[+\\-]"); |
| } |
| } |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| if (result3 !== null) { |
| result2 = []; |
| while (result3 !== null) { |
| result2.push(result3); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| } else { |
| result2 = null; |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, e, sign, exp) { return e + sign + exp.join(""); })(pos0, result0[0], result0[1], result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_expFloat() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| if (result1 !== null) { |
| result0 = []; |
| while (result1 !== null) { |
| result0.push(result1); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| } else { |
| result0 = null; |
| } |
| if (result0 !== null) { |
| result1 = parse_floatEe(); |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, num, fee) { return num.join("") + fee; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_leadFloat() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| if (result1 !== null) { |
| result0 = []; |
| while (result1 !== null) { |
| result0.push(result1); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| } else { |
| result0 = null; |
| } |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 46) { |
| result1 = "."; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\".\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = []; |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| while (result3 !== null) { |
| result2.push(result3); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_floatEe(); |
| result3 = result3 !== null ? result3 : ""; |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, num, dec, fee) { return num.join("") + "." + dec.join("") + fee; })(pos0, result0[0], result0[2], result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_dotFloat() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = []; |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| while (result1 !== null) { |
| result0.push(result1); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 46) { |
| result1 = "."; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\".\""); |
| } |
| } |
| if (result1 !== null) { |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| if (result3 !== null) { |
| result2 = []; |
| while (result3 !== null) { |
| result2.push(result3); |
| if (/^[0-9]/.test(input.charAt(pos))) { |
| result3 = input.charAt(pos); |
| pos++; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("[0-9]"); |
| } |
| } |
| } |
| } else { |
| result2 = null; |
| } |
| if (result2 !== null) { |
| result3 = parse_floatEe(); |
| result3 = result3 !== null ? result3 : ""; |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, num, dec, fee) { return num.join("") + "." + dec.join("") + fee; })(pos0, result0[0], result0[2], result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_float() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 45) { |
| result0 = "-"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"-\""); |
| } |
| } |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result1 = parse_leadFloat(); |
| if (result1 === null) { |
| result1 = parse_dotFloat(); |
| if (result1 === null) { |
| result1 = parse_expFloat(); |
| if (result1 === null) { |
| if (input.substr(pos, 8) === "Infinity") { |
| result1 = "Infinity"; |
| pos += 8; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"Infinity\""); |
| } |
| } |
| } |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, neg, num) { return neg + num; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_string() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 34) { |
| result0 = "\""; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\\"\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = []; |
| if (/^[^""]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^\"\"]"); |
| } |
| } |
| while (result2 !== null) { |
| result1.push(result2); |
| if (/^[^""]/.test(input.charAt(pos))) { |
| result2 = input.charAt(pos); |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^\"\"]"); |
| } |
| } |
| } |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 34) { |
| result2 = "\""; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"\\\"\""); |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, str) { return str.join(""); })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_other() { |
| var result0, result1; |
| var pos0; |
| |
| pos0 = pos; |
| if (/^[^\t\n\r 0-9A-Z_a-z]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^\\t\\n\\r 0-9A-Z_a-z]"); |
| } |
| } |
| if (result1 !== null) { |
| result0 = []; |
| while (result1 !== null) { |
| result0.push(result1); |
| if (/^[^\t\n\r 0-9A-Z_a-z]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[^\\t\\n\\r 0-9A-Z_a-z]"); |
| } |
| } |
| } |
| } else { |
| result0 = null; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, other) { return other.join(""); })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_type() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_TypeDesc(); |
| if (result0 !== null) { |
| result1 = parse_Nullable(); |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type, nullable) { |
| if (!type.sequence) type.sequence = false; |
| type.nullable = nullable; |
| return type; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_TypeDesc() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_Sequence(); |
| if (result0 === null) { |
| result0 = parse_ArrayType(); |
| if (result0 === null) { |
| result0 = parse_SimpleType(); |
| if (result0 === null) { |
| result0 = parse_UnionType(); |
| } |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type) { return type; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Sequence() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 9) === "sequence<") { |
| result0 = "sequence<"; |
| pos += 9; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"sequence<\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_type(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 62) { |
| result2 = ">"; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\">\""); |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type) { return { sequence: true, array: false, idlType: type, members: [] }; })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ArrayType() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_SimpleType(); |
| if (result0 !== null) { |
| if (input.substr(pos, 2) === "[]") { |
| result1 = "[]"; |
| pos += 2; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"[]\""); |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type) { |
| type.array = true; |
| return type; |
| })(pos0, result0[0]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_UnionType() { |
| var result0, result1, result2, result3, result4; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 40) { |
| result0 = "("; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| result2 = parse_TypeList(); |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result4 = ")"; |
| pos++; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result4 !== null) { |
| result0 = [result0, result1, result2, result3, result4]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, members) { return { idlType: "union", members: members, sequence: false, array: false }; })(pos0, result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_TypeList() { |
| var result0, result1, result2, result3, result4, result5, result6; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_type(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| if (input.substr(pos, 2) === "or") { |
| result2 = "or"; |
| pos += 2; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"or\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_type(); |
| if (result4 !== null) { |
| result5 = []; |
| result6 = parse_TypeListRest(); |
| while (result6 !== null) { |
| result5.push(result6); |
| result6 = parse_TypeListRest(); |
| } |
| if (result5 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, first, second, others) { var ret = [first, second]; |
| for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); } |
| return ret; })(pos0, result0[0], result0[4], result0[5]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_TypeListRest() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_s(); |
| if (result0 !== null) { |
| if (input.substr(pos, 2) === "or") { |
| result1 = "or"; |
| pos += 2; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"or\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_s(); |
| if (result2 !== null) { |
| result3 = parse_type(); |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rest) { return rest; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_SimpleType() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_PrimitiveType(); |
| if (result0 === null) { |
| result0 = parse_UnsignedIntegerType(); |
| if (result0 === null) { |
| result0 = parse_FloatType(); |
| if (result0 === null) { |
| result0 = parse_ScopedName(); |
| } |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type) { return { sequence: false, array: false, idlType: type, members: [] }; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_PrimitiveType() { |
| var result0, result1; |
| var pos0, pos1, pos2; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 3) === "any") { |
| result0 = "any"; |
| pos += 3; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"any\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.substr(pos, 6) === "object") { |
| result0 = "object"; |
| pos += 6; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"object\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.substr(pos, 7) === "boolean") { |
| result0 = "boolean"; |
| pos += 7; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"boolean\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.substr(pos, 5) === "octet") { |
| result0 = "octet"; |
| pos += 5; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"octet\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.substr(pos, 9) === "DOMString") { |
| result0 = "DOMString"; |
| pos += 9; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"DOMString\""); |
| } |
| } |
| } |
| } |
| } |
| } |
| if (result0 !== null) { |
| pos2 = pos; |
| reportFailures++; |
| if (/^[A-Za-z0-9]/.test(input.charAt(pos))) { |
| result1 = input.charAt(pos); |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("[A-Za-z0-9]"); |
| } |
| } |
| reportFailures--; |
| if (result1 === null) { |
| result1 = ""; |
| } else { |
| result1 = null; |
| pos = pos2; |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type) { return type; })(pos0, result0[0]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_FloatType() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 12) === "unrestricted") { |
| result0 = "unrestricted"; |
| pos += 12; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"unrestricted\""); |
| } |
| } |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| if (input.substr(pos, 5) === "float") { |
| result2 = "float"; |
| pos += 5; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"float\""); |
| } |
| } |
| if (result2 === null) { |
| if (input.substr(pos, 6) === "double") { |
| result2 = "double"; |
| pos += 6; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"double\""); |
| } |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, unr, kind) { return (unr ? "unrestricted " : "") + (kind); })(pos0, result0[0], result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_UnsignedIntegerType() { |
| var result0, result1, result2, result3, result4; |
| var pos0, pos1, pos2; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 8) === "unsigned") { |
| result0 = "unsigned"; |
| pos += 8; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"unsigned\""); |
| } |
| } |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| pos2 = pos; |
| if (input.substr(pos, 4) === "long") { |
| result2 = "long"; |
| pos += 4; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"long\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| if (input.substr(pos, 4) === "long") { |
| result4 = "long"; |
| pos += 4; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"long\""); |
| } |
| } |
| if (result4 !== null) { |
| result2 = [result2, result3, result4]; |
| } else { |
| result2 = null; |
| pos = pos2; |
| } |
| } else { |
| result2 = null; |
| pos = pos2; |
| } |
| } else { |
| result2 = null; |
| pos = pos2; |
| } |
| if (result2 === null) { |
| if (input.substr(pos, 4) === "long") { |
| result2 = "long"; |
| pos += 4; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"long\""); |
| } |
| } |
| if (result2 === null) { |
| if (input.substr(pos, 5) === "short") { |
| result2 = "short"; |
| pos += 5; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"short\""); |
| } |
| } |
| if (result2 === null) { |
| if (input.substr(pos, 4) === "byte") { |
| result2 = "byte"; |
| pos += 4; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"byte\""); |
| } |
| } |
| } |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, uns, kind) { return (uns ? "unsigned " : "") + (kind.join ? kind.join("") : kind); })(pos0, result0[0], result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ScopedNameList() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ScopedName(); |
| if (result0 !== null) { |
| result1 = []; |
| result2 = parse_ScopedNameListRest(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_ScopedNameListRest(); |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, first, others) { var ret = [first]; |
| for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); } |
| return ret; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ScopedNameListRest() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 44) { |
| result1 = ","; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\",\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_w(); |
| if (result2 !== null) { |
| result3 = parse_ScopedName(); |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rest) { return rest; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ScopedName() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_AbsoluteScopedName(); |
| if (result0 === null) { |
| result0 = parse_RelativeScopedName(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name) { return name; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_AbsoluteScopedName() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 2) === "::") { |
| result0 = "::"; |
| pos += 2; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"::\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_RelativeScopedName(); |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rel) { return "::" + rel; })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_RelativeScopedName() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_identifier(); |
| if (result0 !== null) { |
| result1 = []; |
| result2 = parse_ScopedNameRest(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_ScopedNameRest(); |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, rest) { return name + rest.join(""); })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ScopedNameRest() { |
| var result0, result1; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 2) === "::") { |
| result0 = "::"; |
| pos += 2; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"::\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_identifier(); |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name) { return name.join(""); })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_BooleanLiteral() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| if (input.substr(pos, 4) === "true") { |
| result0 = "true"; |
| pos += 4; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"true\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.substr(pos, 5) === "false") { |
| result0 = "false"; |
| pos += 5; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"false\""); |
| } |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, value) { return value; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Nullable() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| if (input.charCodeAt(pos) === 63) { |
| result0 = "?"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"?\""); |
| } |
| } |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result0 = (function(offset, nullable) { return nullable ? true : false; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ReturnType() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| if (input.substr(pos, 4) === "void") { |
| result0 = "void"; |
| pos += 4; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"void\""); |
| } |
| } |
| if (result0 === null) { |
| result0 = parse_type(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, ret) { return ret; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_definitions() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| result1 = []; |
| result2 = parse_definition(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_definition(); |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, defs) { return defs; })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_definition() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_partialdictionary(); |
| if (result0 === null) { |
| result0 = parse_partialinterface(); |
| if (result0 === null) { |
| result0 = parse_callbackinterface(); |
| if (result0 === null) { |
| result0 = parse_module(); |
| if (result0 === null) { |
| result0 = parse_interface(); |
| if (result0 === null) { |
| result0 = parse_dictionary(); |
| if (result0 === null) { |
| result0 = parse_typedef(); |
| if (result0 === null) { |
| result0 = parse_exception(); |
| if (result0 === null) { |
| result0 = parse_implements(); |
| if (result0 === null) { |
| result0 = parse_enum(); |
| if (result0 === null) { |
| result0 = parse_callback(); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, def) { return def; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_partialinterface() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 7) === "partial") { |
| result2 = "partial"; |
| pos += 7; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"partial\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| if (input.substr(pos, 9) === "interface") { |
| result4 = "interface"; |
| pos += 9; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"interface\""); |
| } |
| } |
| if (result4 !== null) { |
| result5 = parse_s(); |
| if (result5 !== null) { |
| result6 = parse_identifier(); |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result8 = "{"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result10 = parse_InterfaceMemberList(); |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result12 = "}"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result14 = ";"; |
| pos++; |
| } else { |
| result14 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result14 !== null) { |
| result15 = parse_w(); |
| if (result15 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, mem) { return { type: "partialinterface", name: name, members: mem, extAttrs: extAttrs }; })(pos0, result0[0], result0[6], result0[10]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_partialdictionary() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 7) === "partial") { |
| result0 = "partial"; |
| pos += 7; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"partial\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| if (input.substr(pos, 10) === "dictionary") { |
| result2 = "dictionary"; |
| pos += 10; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"dictionary\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result6 = "{"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_DictionaryMemberList(); |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result10 = "}"; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result12 = ";"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, members) { |
| return { |
| type: "partialdictionary", |
| name: name, |
| members: members |
| }; |
| })(pos0, result0[4], result0[8]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_callbackinterface() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 8) === "callback") { |
| result2 = "callback"; |
| pos += 8; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"callback\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| if (input.substr(pos, 9) === "interface") { |
| result4 = "interface"; |
| pos += 9; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"interface\""); |
| } |
| } |
| if (result4 !== null) { |
| result5 = parse_s(); |
| if (result5 !== null) { |
| result6 = parse_identifier(); |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result8 = "{"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result10 = parse_InterfaceMemberList(); |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result12 = "}"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result14 = ";"; |
| pos++; |
| } else { |
| result14 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result14 !== null) { |
| result15 = parse_w(); |
| if (result15 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, mem) { return { type: "callbackinterface", name: name, members: mem, extAttrs: extAttrs }; })(pos0, result0[0], result0[6], result0[10]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_module() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 6) === "module") { |
| result2 = "module"; |
| pos += 6; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"module\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result6 = "{"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_definitions(); |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result10 = "}"; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result12 = ";"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, defs) { return { type: "module", name: name, definitions: defs, extAttrs: extAttrs }; })(pos0, result0[0], result0[4], result0[8]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_implements() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| result2 = parse_ScopedName(); |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| if (input.substr(pos, 10) === "implements") { |
| result4 = "implements"; |
| pos += 10; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"implements\""); |
| } |
| } |
| if (result4 !== null) { |
| result5 = parse_s(); |
| if (result5 !== null) { |
| result6 = parse_ScopedName(); |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result8 = ";"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, target, impl) { return { type: 'implements', target: target, 'implements': impl, extAttrs: extAttrs }; })(pos0, result0[0], result0[2], result0[6]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_interface() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 9) === "interface") { |
| result2 = "interface"; |
| pos += 9; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"interface\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| result6 = parse_Inheritance(); |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result8 = "{"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result10 = parse_InterfaceMemberList(); |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result12 = "}"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result14 = ";"; |
| pos++; |
| } else { |
| result14 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result14 !== null) { |
| result15 = parse_w(); |
| if (result15 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, herit, mem) { return { type: "interface", name: name, inheritance: herit, members: mem, extAttrs: extAttrs }; })(pos0, result0[0], result0[4], result0[6], result0[10]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_enum() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 4) === "enum") { |
| result2 = "enum"; |
| pos += 4; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"enum\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result6 = "{"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_EnumValues(); |
| if (result8 !== null) { |
| result9 = parse_w(); |
| result9 = result9 !== null ? result9 : ""; |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 44) { |
| result10 = ","; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\",\""); |
| } |
| } |
| result10 = result10 !== null ? result10 : ""; |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result12 = "}"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result14 = ";"; |
| pos++; |
| } else { |
| result14 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result14 !== null) { |
| result15 = parse_w(); |
| if (result15 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, values) { return { type: "enum", name: name, values: values, extAttrs: extAttrs }; })(pos0, result0[0], result0[4], result0[8]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_callback() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15, result16, result17; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 8) === "callback") { |
| result2 = "callback"; |
| pos += 8; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"callback\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 61) { |
| result6 = "="; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"=\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_ReturnType(); |
| if (result8 !== null) { |
| result9 = parse_s(); |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result10 = "("; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| result12 = parse_Arguments(); |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result14 = ")"; |
| pos++; |
| } else { |
| result14 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result14 !== null) { |
| result15 = parse_w(); |
| if (result15 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result16 = ";"; |
| pos++; |
| } else { |
| result16 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result16 !== null) { |
| result17 = parse_w(); |
| if (result17 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15, result16, result17]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, ret, args) { return { type: "callback", idlType: ret, name: name, args: args, extAttrs: extAttrs }; })(pos0, result0[0], result0[4], result0[8], result0[12]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_EnumValues() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_string(); |
| if (result0 !== null) { |
| result1 = []; |
| result2 = parse_EnumValuesRest(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_EnumValuesRest(); |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, first, others) { var ret = [first]; |
| for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); } |
| return ret; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_EnumValuesRest() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 44) { |
| result1 = ","; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\",\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_w(); |
| if (result2 !== null) { |
| result3 = parse_string(); |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rest) { return rest; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Inheritance() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_InheritanceInner(); |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result0 = (function(offset, herit) { return herit ? herit : []; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_InheritanceInner() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 58) { |
| result0 = ":"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\":\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| result2 = parse_ScopedNameList(); |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, herit) { return herit; })(pos0, result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_InterfaceMemberList() { |
| var result0, result1; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = []; |
| result1 = parse_InterfaceMember(); |
| while (result1 !== null) { |
| result0.push(result1); |
| result1 = parse_InterfaceMember(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, mem) { return mem ? mem : []; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_InterfaceMember() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_const(); |
| if (result0 === null) { |
| result0 = parse_attrOrOp(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, mem) { return mem; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_const() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| if (input.substr(pos, 5) === "const") { |
| result2 = "const"; |
| pos += 5; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"const\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_type(); |
| if (result4 !== null) { |
| result5 = parse_s(); |
| if (result5 !== null) { |
| result6 = parse_identifier(); |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 61) { |
| result8 = "="; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"=\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result10 = parse_constExpr(); |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result12 = ";"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, type, name, value) { return { type: "const", extAttrs: extAttrs, idlType: type, name: name, value: value }; })(pos0, result0[0], result0[4], result0[6], result0[10]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_constExpr() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_BooleanLiteral(); |
| if (result0 === null) { |
| result0 = parse_float(); |
| if (result0 === null) { |
| result0 = parse_integer(); |
| if (result0 === null) { |
| if (input.substr(pos, 3) === "NaN") { |
| result0 = "NaN"; |
| pos += 3; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"NaN\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.substr(pos, 4) === "null") { |
| result0 = "null"; |
| pos += 4; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"null\""); |
| } |
| } |
| if (result0 === null) { |
| if (input.charCodeAt(pos) === 39) { |
| result0 = "'"; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"'\""); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, value) { return value; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_attrOrOp() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_Stringifier(); |
| if (result0 === null) { |
| result0 = parse_Attribute(); |
| if (result0 === null) { |
| result0 = parse_Operation(); |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, ao) { return ao; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Stringifier() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 11) === "stringifier") { |
| result0 = "stringifier"; |
| pos += 11; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"stringifier\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| result2 = parse_Attribute(); |
| if (result2 === null) { |
| result2 = parse_OperationRest(); |
| if (result2 === null) { |
| if (input.charCodeAt(pos) === 59) { |
| result2 = ";"; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| } |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rest) { |
| if (rest === ";") return { type: "stringifier", stringifier: true }; |
| else { |
| rest.stringifier = true; |
| return rest; |
| } |
| })(pos0, result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Attribute() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14; |
| var pos0, pos1, pos2; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| pos2 = pos; |
| if (input.substr(pos, 8) === "readonly") { |
| result2 = "readonly"; |
| pos += 8; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"readonly\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result2 = [result2, result3]; |
| } else { |
| result2 = null; |
| pos = pos2; |
| } |
| } else { |
| result2 = null; |
| pos = pos2; |
| } |
| result2 = result2 !== null ? result2 : ""; |
| if (result2 !== null) { |
| if (input.substr(pos, 9) === "attribute") { |
| result3 = "attribute"; |
| pos += 9; |
| } else { |
| result3 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"attribute\""); |
| } |
| } |
| if (result3 !== null) { |
| result4 = parse_s(); |
| if (result4 !== null) { |
| result5 = parse_type(); |
| if (result5 !== null) { |
| result6 = parse_s(); |
| if (result6 !== null) { |
| result7 = parse_identifier(); |
| if (result7 !== null) { |
| result8 = parse_w(); |
| if (result8 !== null) { |
| result9 = parse_GetRaises(); |
| result9 = result9 !== null ? result9 : ""; |
| if (result9 !== null) { |
| result10 = parse_w(); |
| if (result10 !== null) { |
| result11 = parse_SetRaises(); |
| result11 = result11 !== null ? result11 : ""; |
| if (result11 !== null) { |
| result12 = parse_w(); |
| if (result12 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result13 = ";"; |
| pos++; |
| } else { |
| result13 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result13 !== null) { |
| result14 = parse_w(); |
| if (result14 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, ro, type, name, gr, sr) { return { type: "attribute", extAttrs: extAttrs, idlType: type, name: name, readonly: (ro ? true : false), getraises: gr, setraises: sr }; })(pos0, result0[0], result0[2], result0[5], result0[7], result0[9], result0[11]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_GetRaises() { |
| var result0, result1, result2, result3, result4; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 9) === "getraises") { |
| result0 = "getraises"; |
| pos += 9; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"getraises\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result2 = "("; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_ScopedNameList(); |
| if (result3 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result4 = ")"; |
| pos++; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result4 !== null) { |
| result0 = [result0, result1, result2, result3, result4]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, list) { return list; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_SetRaises() { |
| var result0, result1, result2, result3, result4; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 9) === "setraises") { |
| result0 = "setraises"; |
| pos += 9; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"setraises\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result2 = "("; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_ScopedNameList(); |
| if (result3 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result4 = ")"; |
| pos++; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result4 !== null) { |
| result0 = [result0, result1, result2, result3, result4]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, list) { return list; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Operation() { |
| var result0, result1, result2, result3, result4; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| result2 = parse_Qualifiers(); |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_OperationRest(); |
| if (result4 !== null) { |
| result0 = [result0, result1, result2, result3, result4]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, quals, rest) { |
| for (var k in quals) rest[k] = quals[k]; |
| if (extAttrs) rest.extAttrs = extAttrs; |
| return rest; |
| })(pos0, result0[0], result0[2], result0[4]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Qualifiers() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.substr(pos, 6) === "static") { |
| result1 = "static"; |
| pos += 6; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"static\""); |
| } |
| } |
| if (result1 === null) { |
| result1 = []; |
| result2 = parse_Special(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_Special(); |
| } |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, quals) { if (typeof quals == "string") return [quals]; |
| return quals; })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Special() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.substr(pos, 6) === "getter") { |
| result1 = "getter"; |
| pos += 6; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"getter\""); |
| } |
| } |
| if (result1 === null) { |
| if (input.substr(pos, 6) === "setter") { |
| result1 = "setter"; |
| pos += 6; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"setter\""); |
| } |
| } |
| if (result1 === null) { |
| if (input.substr(pos, 7) === "creator") { |
| result1 = "creator"; |
| pos += 7; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"creator\""); |
| } |
| } |
| if (result1 === null) { |
| if (input.substr(pos, 7) === "deleter") { |
| result1 = "deleter"; |
| pos += 7; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"deleter\""); |
| } |
| } |
| if (result1 === null) { |
| if (input.substr(pos, 12) === "legacycaller") { |
| result1 = "legacycaller"; |
| pos += 12; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"legacycaller\""); |
| } |
| } |
| } |
| } |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_w(); |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, spe) { return spe; })(pos0, result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_OperationRest() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ReturnType(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| result2 = parse_identifier(); |
| result2 = result2 !== null ? result2 : ""; |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result4 = "("; |
| pos++; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| result6 = parse_Arguments(); |
| result6 = result6 !== null ? result6 : ""; |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result8 = ")"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result10 = parse_Raises(); |
| result10 = result10 !== null ? result10 : ""; |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result12 = ";"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, ret, name, args, exc) { return { type: "operation", idlType: ret, name: name, arguments: (args ? args : []), raises: exc }; })(pos0, result0[0], result0[2], result0[6], result0[10]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Arguments() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_Argument(); |
| if (result0 !== null) { |
| result1 = []; |
| result2 = parse_ArgumentsRest(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_ArgumentsRest(); |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, first, others) { var ret = [first]; |
| for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); } |
| return ret; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ArgumentsRest() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 44) { |
| result1 = ","; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\",\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_w(); |
| if (result2 !== null) { |
| result3 = parse_Argument(); |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rest) { return rest; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Argument() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.substr(pos, 2) === "in") { |
| result2 = "in"; |
| pos += 2; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"in\""); |
| } |
| } |
| result2 = result2 !== null ? result2 : ""; |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| if (input.substr(pos, 8) === "optional") { |
| result4 = "optional"; |
| pos += 8; |
| } else { |
| result4 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"optional\""); |
| } |
| } |
| result4 = result4 !== null ? result4 : ""; |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| result6 = parse_type(); |
| if (result6 !== null) { |
| if (input.substr(pos, 3) === "...") { |
| result7 = "..."; |
| pos += 3; |
| } else { |
| result7 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"...\""); |
| } |
| } |
| result7 = result7 !== null ? result7 : ""; |
| if (result7 !== null) { |
| result8 = parse_s(); |
| if (result8 !== null) { |
| result9 = parse_identifier(); |
| if (result9 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, opt, type, ell, name) { return { name: name, type: type, variadic: (ell ? true : false), optional: (opt ? true : false), extAttrs: extAttrs }; })(pos0, result0[0], result0[4], result0[6], result0[7], result0[9]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_Raises() { |
| var result0, result1, result2, result3, result4, result5, result6; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 6) === "raises") { |
| result0 = "raises"; |
| pos += 6; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"raises\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result2 = "("; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_ScopedNameList(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result6 = ")"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result6 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, list) { return list; })(pos0, result0[4]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_dictionary() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 10) === "dictionary") { |
| result0 = "dictionary"; |
| pos += 10; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"dictionary\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| result2 = parse_identifier(); |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_Inheritance(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result6 = "{"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_DictionaryMemberList(); |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result10 = "}"; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result12 = ";"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, superclass, members) { |
| return { |
| type: "dictionary", |
| name: name, |
| inheritance: superclass, |
| members: members |
| }; |
| })(pos0, result0[2], result0[4], result0[8]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_DictionaryMemberList() { |
| var result0, result1; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = []; |
| result1 = parse_DictionaryMember(); |
| while (result1 !== null) { |
| result0.push(result1); |
| result1 = parse_DictionaryMember(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, mem) { return mem ? mem : []; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_DictionaryMember() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| result2 = parse_type(); |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| result6 = parse_defaultValue(); |
| result6 = result6 !== null ? result6 : ""; |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result8 = ";"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, type, name, defaultValue) { |
| return { |
| type: type, |
| name: name, |
| defaultValue: defaultValue |
| }; |
| })(pos0, result0[0], result0[2], result0[4], result0[6]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_defaultValue() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.charCodeAt(pos) === 61) { |
| result0 = "="; |
| pos++; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"=\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| result2 = parse_constExpr(); |
| if (result2 === null) { |
| result2 = parse_string(); |
| } |
| if (result2 !== null) { |
| result0 = [result0, result1, result2]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, value) { return value; })(pos0, result0[2]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_typedef() { |
| var result0, result1, result2, result3, result4, result5, result6, result7; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| if (input.substr(pos, 7) === "typedef") { |
| result0 = "typedef"; |
| pos += 7; |
| } else { |
| result0 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"typedef\""); |
| } |
| } |
| if (result0 !== null) { |
| result1 = parse_s(); |
| if (result1 !== null) { |
| result2 = parse_type(); |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result6 = ";"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, type, name) { return { type: 'typedef', name: name, idlType: type }; })(pos0, result0[2], result0[4]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_exception() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.substr(pos, 9) === "exception") { |
| result2 = "exception"; |
| pos += 9; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"exception\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| result6 = parse_Inheritance(); |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| if (input.charCodeAt(pos) === 123) { |
| result8 = "{"; |
| pos++; |
| } else { |
| result8 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"{\""); |
| } |
| } |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| result10 = parse_ExceptionMembers(); |
| if (result10 !== null) { |
| result11 = parse_w(); |
| if (result11 !== null) { |
| if (input.charCodeAt(pos) === 125) { |
| result12 = "}"; |
| pos++; |
| } else { |
| result12 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"}\""); |
| } |
| } |
| if (result12 !== null) { |
| result13 = parse_w(); |
| if (result13 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result14 = ";"; |
| pos++; |
| } else { |
| result14 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result14 !== null) { |
| result15 = parse_w(); |
| if (result15 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, name, herit, mem) { |
| return { |
| type: 'exception', |
| name: name, |
| inheritance: herit, |
| members: mem, |
| extAttrs: extAttrs, |
| }; |
| })(pos0, result0[0], result0[4], result0[6], result0[10]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExceptionMembers() { |
| var result0, result1; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = []; |
| result1 = parse_ExceptionMember(); |
| while (result1 !== null) { |
| result0.push(result1); |
| result1 = parse_ExceptionMember(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, mem) { return mem ? mem : []; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExceptionMember() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_const(); |
| if (result0 === null) { |
| result0 = parse_field(); |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, mem) { return mem; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_field() { |
| var result0, result1, result2, result3, result4, result5, result6, result7; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtendedAttributeList(); |
| if (result0 !== null) { |
| result1 = parse_s(); |
| result1 = result1 !== null ? result1 : ""; |
| if (result1 !== null) { |
| result2 = parse_type(); |
| if (result2 !== null) { |
| result3 = parse_s(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 59) { |
| result6 = ";"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\";\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, extAttrs, type, name) { return { type: "field", extAttrs: extAttrs, idlType: type, name: name }; })(pos0, result0[0], result0[2], result0[4]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtendedAttributeList() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_ExtendedAttributeListInner(); |
| result0 = result0 !== null ? result0 : ""; |
| if (result0 !== null) { |
| result0 = (function(offset, ea) { return ea ? ea : []; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtendedAttributeListInner() { |
| var result0, result1, result2, result3, result4, result5, result6; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 91) { |
| result1 = "["; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"[\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_w(); |
| if (result2 !== null) { |
| result3 = parse_ExtAttrs(); |
| if (result3 !== null) { |
| result4 = parse_w(); |
| if (result4 !== null) { |
| if (input.charCodeAt(pos) === 93) { |
| result5 = "]"; |
| pos++; |
| } else { |
| result5 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"]\""); |
| } |
| } |
| if (result5 !== null) { |
| result6 = parse_w(); |
| if (result6 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, ea) { return ea; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrs() { |
| var result0, result1, result2; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_ExtAttr(); |
| if (result0 !== null) { |
| result1 = []; |
| result2 = parse_ExtAttrsRest(); |
| while (result2 !== null) { |
| result1.push(result2); |
| result2 = parse_ExtAttrsRest(); |
| } |
| if (result1 !== null) { |
| result0 = [result0, result1]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, first, others) { var ret = [first]; |
| for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); } |
| return ret; })(pos0, result0[0], result0[1]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrsRest() { |
| var result0, result1, result2, result3; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_w(); |
| if (result0 !== null) { |
| if (input.charCodeAt(pos) === 44) { |
| result1 = ","; |
| pos++; |
| } else { |
| result1 = null; |
| if (reportFailures === 0) { |
| matchFailed("\",\""); |
| } |
| } |
| if (result1 !== null) { |
| result2 = parse_w(); |
| if (result2 !== null) { |
| result3 = parse_ExtAttr(); |
| if (result3 !== null) { |
| result0 = [result0, result1, result2, result3]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, rest) { return rest; })(pos0, result0[3]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttr() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_ExtAttrArgList(); |
| if (result0 === null) { |
| result0 = parse_ExtAttrNamedArgList(); |
| if (result0 === null) { |
| result0 = parse_ExtAttrNameValue(); |
| if (result0 === null) { |
| result0 = parse_ExtAttrNoArg(); |
| } |
| } |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, ea) { return ea; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrNoArg() { |
| var result0; |
| var pos0; |
| |
| pos0 = pos; |
| result0 = parse_identifier(); |
| if (result0 !== null) { |
| result0 = (function(offset, name) {return { name: name }; })(pos0, result0); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrNameValue() { |
| var result0, result1, result2, result3, result4; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_identifier(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 61) { |
| result2 = "="; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"=\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_ScopedName(); |
| if (result4 !== null) { |
| result0 = [result0, result1, result2, result3, result4]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, value) {return { name: name, value: value }; })(pos0, result0[0], result0[4]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrNamedArgList() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_identifier(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 61) { |
| result2 = "="; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"=\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result6 = "("; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_Arguments(); |
| result8 = result8 !== null ? result8 : ""; |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result10 = ")"; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result10 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, value, args) {return { name: name, value: value, arguments: args }; })(pos0, result0[0], result0[4], result0[8]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrNamedArgList() { |
| var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_identifier(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 61) { |
| result2 = "="; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"=\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_identifier(); |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result6 = "("; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result6 !== null) { |
| result7 = parse_w(); |
| if (result7 !== null) { |
| result8 = parse_Arguments(); |
| result8 = result8 !== null ? result8 : ""; |
| if (result8 !== null) { |
| result9 = parse_w(); |
| if (result9 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result10 = ")"; |
| pos++; |
| } else { |
| result10 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result10 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, value, args) {return { name: name, value: value, arguments: args }; })(pos0, result0[0], result0[4], result0[8]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| function parse_ExtAttrArgList() { |
| var result0, result1, result2, result3, result4, result5, result6; |
| var pos0, pos1; |
| |
| pos0 = pos; |
| pos1 = pos; |
| result0 = parse_identifier(); |
| if (result0 !== null) { |
| result1 = parse_w(); |
| if (result1 !== null) { |
| if (input.charCodeAt(pos) === 40) { |
| result2 = "("; |
| pos++; |
| } else { |
| result2 = null; |
| if (reportFailures === 0) { |
| matchFailed("\"(\""); |
| } |
| } |
| if (result2 !== null) { |
| result3 = parse_w(); |
| if (result3 !== null) { |
| result4 = parse_Arguments(); |
| result4 = result4 !== null ? result4 : ""; |
| if (result4 !== null) { |
| result5 = parse_w(); |
| if (result5 !== null) { |
| if (input.charCodeAt(pos) === 41) { |
| result6 = ")"; |
| pos++; |
| } else { |
| result6 = null; |
| if (reportFailures === 0) { |
| matchFailed("\")\""); |
| } |
| } |
| if (result6 !== null) { |
| result0 = [result0, result1, result2, result3, result4, result5, result6]; |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| } else { |
| result0 = null; |
| pos = pos1; |
| } |
| if (result0 !== null) { |
| result0 = (function(offset, name, args) {return { name: name, arguments: args }; })(pos0, result0[0], result0[4]); |
| } |
| if (result0 === null) { |
| pos = pos0; |
| } |
| return result0; |
| } |
| |
| |
| function cleanupExpected(expected) { |
| expected.sort(); |
| |
| var lastExpected = null; |
| var cleanExpected = []; |
| for (var i = 0; i < expected.length; i++) { |
| if (expected[i] !== lastExpected) { |
| cleanExpected.push(expected[i]); |
| lastExpected = expected[i]; |
| } |
| } |
| return cleanExpected; |
| } |
| |
| function computeErrorPosition() { |
| /* |
| * The first idea was to use |String.split| to break the input up to the |
| * error position along newlines and derive the line and column from |
| * there. However IE's |split| implementation is so broken that it was |
| * enough to prevent it. |
| */ |
| |
| var line = 1; |
| var column = 1; |
| var seenCR = false; |
| |
| for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) { |
| var ch = input.charAt(i); |
| if (ch === "\n") { |
| if (!seenCR) { line++; } |
| column = 1; |
| seenCR = false; |
| } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { |
| line++; |
| column = 1; |
| seenCR = true; |
| } else { |
| column++; |
| seenCR = false; |
| } |
| } |
| |
| return { line: line, column: column }; |
| } |
| |
| |
| var result = parseFunctions[startRule](); |
| |
| /* |
| * The parser is now in one of the following three states: |
| * |
| * 1. The parser successfully parsed the whole input. |
| * |
| * - |result !== null| |
| * - |pos === input.length| |
| * - |rightmostFailuresExpected| may or may not contain something |
| * |
| * 2. The parser successfully parsed only a part of the input. |
| * |
| * - |result !== null| |
| * - |pos < input.length| |
| * - |rightmostFailuresExpected| may or may not contain something |
| * |
| * 3. The parser did not successfully parse any part of the input. |
| * |
| * - |result === null| |
| * - |pos === 0| |
| * - |rightmostFailuresExpected| contains at least one failure |
| * |
| * All code following this comment (including called functions) must |
| * handle these states. |
| */ |
| if (result === null || pos !== input.length) { |
| var offset = Math.max(pos, rightmostFailuresPos); |
| var found = offset < input.length ? input.charAt(offset) : null; |
| var errorPosition = computeErrorPosition(); |
| |
| throw new this.SyntaxError( |
| cleanupExpected(rightmostFailuresExpected), |
| found, |
| offset, |
| errorPosition.line, |
| errorPosition.column |
| ); |
| } |
| |
| return result; |
| }, |
| |
| /* Returns the parser source code. */ |
| toSource: function() { return this._source; } |
| }; |
| |
| /* Thrown when a parser encounters a syntax error. */ |
| |
| result.SyntaxError = function(expected, found, offset, line, column) { |
| function buildMessage(expected, found) { |
| var expectedHumanized, foundHumanized; |
| |
| switch (expected.length) { |
| case 0: |
| expectedHumanized = "end of input"; |
| break; |
| case 1: |
| expectedHumanized = expected[0]; |
| break; |
| default: |
| expectedHumanized = expected.slice(0, expected.length - 1).join(", ") |
| + " or " |
| + expected[expected.length - 1]; |
| } |
| |
| foundHumanized = found ? quote(found) : "end of input"; |
| |
| return "Expected " + expectedHumanized + " but " + foundHumanized + " found."; |
| } |
| |
| this.name = "SyntaxError"; |
| this.expected = expected; |
| this.found = found; |
| this.message = buildMessage(expected, found); |
| this.offset = offset; |
| this.line = line; |
| this.column = column; |
| }; |
| |
| result.SyntaxError.prototype = Error.prototype; |
| |
| return result; |
| })(); |