diff --git a/Makefile b/Makefile index 966c8356..445a8894 100644 --- a/Makefile +++ b/Makefile @@ -7,9 +7,10 @@ LIBMIN = $(LIB:lib/%.js=lib/%.min.js) TEST = $(wildcard test/*.coffee | sort) ROOT = $(shell pwd) -COFFEE = bin/coffee --js --bare -PEGJS = node_modules/.bin/pegjs --cache --plugin ./lib/pegjs-coffee-plugin -MOCHA = node_modules/.bin/mocha --compilers coffee:./register -u tdd +NODE = $(if ${ES6}, babel-node, node) +COFFEE = ${NODE} bin/coffee --js --bare $(if ${ES6}, --target-es6) +PEGJS = ${NODE} node_modules/.bin/pegjs --cache --plugin ./lib/pegjs-coffee-plugin +MOCHA = ${NODE} node_modules/.bin/mocha --compilers coffee:./register -u tdd CJSIFY = node_modules/.bin/cjsify --export CoffeeScript MINIFIER = node_modules/.bin/esmangle diff --git a/README-ES6.md b/README-ES6.md new file mode 100644 index 00000000..5344cc0c --- /dev/null +++ b/README-ES6.md @@ -0,0 +1,84 @@ +# Notes for ES6 Mode + +The compiler option `--target-es6` enables opportunistic use of ES6 +features. This is useful if you are targeting a runtime wiht native +ES6 support, or if you are migrating a codebase from CoffeeScript to +ES6. + +Original PR: https://github.com/michaelficarra/CoffeeScriptRedux/pull/344 + +## What is eligible for ES6 tranpilation? + +The following describes the stuff we can convert to ES6. Anything that +is not convertible falls back to the normal CoffeeScript compilation +path. + + - Most classes are eligible for conversion directly into ES6 + classes. If you have a class that is not being converted, run the + compiler with the environment variable `DEBUG=es6` to see why yours + is being rejected. ES6 is significantly more strict than + CoffeeScript about what's legal in a class definition. + + - if you have a constructor, it needs to be a function expression + directly in the class definition. No "external constructors" + like: + + class Foo + constructor: someFunctionDeclaredElsewhere + + - we don't deal with compound class names like: + + class X.Foo + + You can get the same effect with assignment, like `X.Foo = + class ...`. + + - we don't deal with arbitrary expressions for the parent class + (even though ES6 does support this pattern, it has not been + implemented here): + + class X extends someFunctionThatRetunsAClass() + + - in ES6, a derived class's constructor *must* call `super()` and + it must do it before referencing `this`. We will automatically + insert a leading `super()` if you weren't manually calling + super at all, but if you already call `super` and you do it + after referencing `this`, we will not transpile your class. + + - if you have arbitrary expressions in your class body that do + not translate directly into methods, static methods, prototype + properties, or class properties we will ignore your class. + + - Array destructuring is eligible for conversion, with one exception: + ES6 only allows rest parameters at the end of an array pattern, not + in the middle. So `[a, b, c...]` gets converted to `[a, b, ...c]` + but `[a, b..., c]` will not be converted. + + - CoffeeScript bound functions (the fat arrow `=>`) are almost + completely analogous to ES6 arrow function expressions, except for + the meaning of the `arguments` keyword. We can safely rewrite every + practical case, but if you are using both positional arguments and + referencing the `arguments` keyword we will give up and fall back + to normal CoffeeScript compilation. + + +## Semantic Differences + +There are some differences in semantics that the compiler does not try +to patch over. + + - `super` is required in derived class constructors. If you don't + already call super, we will insert a `super()` call to make your + class legal. + + - if you call `super` in a function that's not inside a class + definition, and try to attach that function to a class and use it, + the `super` is not going to work. + + - In CoffeeScript, a parameter's default value is used if the given + value is `null` or `undefined`. In ES6, a parameter's default value + is only used if the given value is `undefined`. + + - The methods on an ES6 class are non-enumerable. The methods on a + CoffeeScript class are enumerable. + diff --git a/lib/browser.js b/lib/browser.js index 205df7e6..b39f4ae8 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -28,18 +28,21 @@ CoffeeScript.load = function (url, callback) { var xhr; xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest; xhr.open('GET', url, true); - if ('overrideMimeType' in xhr) + if ('overrideMimeType' in xhr) { xhr.overrideMimeType('text/plain'); + } xhr.onreadystatechange = function () { - if (!(xhr.readyState === xhr.DONE)) + if (!(xhr.readyState === xhr.DONE)) { return; + } if (xhr.status === 0 || xhr.status === 200) { CoffeeScript.run(xhr.responseText); } else { throw new Error('Could not load ' + url); } - if (callback) + if (callback) { return callback(); + } }; return xhr.send(null); }; @@ -58,8 +61,9 @@ runScripts = function () { index = 0; (execute = function () { var script; - if (!(script = coffees[index++])) + if (!(script = coffees[index++])) { return; + } if (script.src) { return CoffeeScript.load(script.src, execute); } else { diff --git a/lib/cli.js b/lib/cli.js index bd766860..2cc27ed9 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -68,16 +68,18 @@ optAliases = { v: '--version', w: '--watch' }; -option('parse', 'compile', 'optimise', 'debug', 'literate', 'raw', 'version', 'help'); +option('parse', 'compile', 'optimise', 'debug', 'literate', 'raw', 'version', 'help', 'target-es6'); parameter('cli', 'input', 'nodejs', 'output', 'watch'); if (null != escodegen) { option('bare', 'js', 'source-map', 'eval', 'repl'); parameter('source-map-file', 'require'); - if (null != esmangle) + if (null != esmangle) { option('minify'); + } } -if (null != cscodegen) +if (null != cscodegen) { option('cscodegen'); +} options = nopt(knownOpts, optAliases, process.argv, 2); positionalArgs = options.argv.remain; delete options.argv; @@ -87,7 +89,8 @@ else options.optimise = true; options.sourceMap = options['source-map']; options.sourceMapFile = options['source-map-file']; -if (!(options.compile || options.js || options.sourceMap || options.parse || options['eval'] || options.cscodegen)) +options.targetES6 = options['target-es6']; +if (!(options.compile || options.js || options.sourceMap || options.parse || options['eval'] || options.cscodegen)) { if (!(null != escodegen)) { options.compile = true; } else if (positionalArgs.length) { @@ -97,6 +100,7 @@ if (!(options.compile || options.js || options.sourceMap || options.parse || opt } else { options.repl = true; } +} if (1 !== (null != options.parse ? options.parse : 0) + (null != options.compile ? options.compile : 0) + (null != options.js ? options.js : 0) + (null != options.sourceMap ? options.sourceMap : 0) + (null != options['eval'] ? options['eval'] : 0) + (null != options.cscodegen ? options.cscodegen : 0) + (null != options.repl ? options.repl : 0)) { console.error('Error: At most one of --parse (-p), --compile (-c), --js (-j), --source-map, --eval (-e), --cscodegen, or --repl may be used.'); process.exit(1); @@ -132,8 +136,9 @@ if (options.cscodegen && !(null != cscodegen)) { output = function (out) { if (options.output) { return fs.writeFile(options.output, '' + out + '\n', function (err) { - if (null != err) + if (null != err) { throw err; + } }); } else { return process.stdout.write('' + out + '\n'); @@ -156,25 +161,29 @@ if (options.help) { inputSource = null != options.input ? fs.realpathSync(options.input) : options.cli && '(cli)' || '(stdin)'; processInput = function (err) { var cache$3, e, js, jsAST, preprocessed, result, sourceMap, sourceMappingUrl; - if (null != err) + if (null != err) { throw err; + } result = null; input = input.toString(); - if (65279 === input.charCodeAt(0)) + if (65279 === input.charCodeAt(0)) { input = input.slice(1); - if (options.debug) + } + if (options.debug) { try { console.error('### PREPROCESSED CS ###'); preprocessed = Preprocessor.process(input, { literate: options.literate }); console.error(numberLines(humanReadable(preprocessed))); } catch (e$3) { } + } try { result = CoffeeScript.parse(input, { optimise: false, raw: options.raw || options.sourceMap || options.sourceMapFile || options['eval'], inputSource: inputSource, - literate: options.literate + literate: options.literate, + targetES6: options.targetES6 }); } catch (e$4) { e = e$4; @@ -185,15 +194,17 @@ if (options.help) { console.error('### PARSED CS-AST ###'); console.error(inspect(result.toBasicObject())); } - if (options.optimise && null != result) + if (options.optimise && null != result) { result = Optimiser.optimise(result); - if (options.parse) + } + if (options.parse) { if (null != result) { output(inspect(result.toBasicObject())); return; } else { process.exit(1); } + } if (options.debug && null != result) { console.error('### ' + (options.optimise ? 'OPTIMISED' : 'PARSED') + ' CS-AST ###'); console.error(inspect(result.toBasicObject())); @@ -213,19 +224,23 @@ if (options.help) { process.exit(1); } } - jsAST = CoffeeScript.compile(result, { bare: options.bare }); - if (options.compile) + jsAST = CoffeeScript.compile(result, { + bare: options.bare, + targetES6: options.targetES6 + }); + if (options.compile) { if (null != jsAST) { output(inspect(jsAST)); return; } else { process.exit(1); } + } if (options.debug && null != jsAST) { console.error('### COMPILED JS-AST ###'); console.error(inspect(jsAST)); } - if (options.minify) + if (options.minify) { try { jsAST = esmangle.mangle(esmangle.optimize(jsAST), { destructive: true }); } catch (e$6) { @@ -233,6 +248,7 @@ if (options.help) { console.error(e.stack || e.message); process.exit(1); } + } if (options.sourceMap) { try { sourceMap = CoffeeScript.sourceMap(jsAST, inputName, { compact: options.minify }); @@ -279,13 +295,16 @@ if (options.help) { }; if (null != options.input) { fs.stat(options.input, function (err, stats) { - if (null != err) + if (null != err) { throw err; - if (stats.isDirectory()) + } + if (stats.isDirectory()) { options.input = path.join(options.input, 'index.coffee'); + } return fs.readFile(options.input, function (err, contents) { - if (null != err) + if (null != err) { throw err; + } input = contents; return processInput(); }); diff --git a/lib/compiler.js b/lib/compiler.js index f7a6868b..0379f88d 100644 --- a/lib/compiler.js +++ b/lib/compiler.js @@ -1,7 +1,9 @@ // Generated by CoffeeScript 2.0.0-beta9-dev -var any, assignment, beingDeclared, cache$, cache$1, collectIdentifiers, concat, concatMap, CS, declarationsNeeded, declarationsNeededRecursive, defaultRules, difference, divMod, dynamicMemberAccess, enabledHelpers, envEnrichments, exports, expr, fn, foldl, foldl1, forceBlock, generateMutatingWalker, generateSoak, genSym, h, hasSoak, helperNames, helpers, inlineHelpers, intersect, isIdentifierName, isScopeBoundary, JS, jsReserved, makeReturn, makeVarDeclaration, map, mapChildNodes, memberAccess, needsCaching, nub, owns, partition, span, stmt, union, usedAsExpression, variableDeclarations; +var all, any, assignment, baseExtends, beingDeclared, cache$, cache$1, collectIdentifiers, concat, concatMap, CS, debugES6, declarationsNeeded, declarationsNeededRecursive, declaredIdentifiers, defaultRules, describeClass, difference, divMod, dynamicMemberAccess, enabledHelpers, envEnrichments, es6AssignmentPattern, es6SafeArrowExpression, es6SafeConstructor, exports, expr, find, findES6Methods, fn, foldl, foldl1, forceBlock, funcDecl, funcExpr, generateCopyingWalker, generateMutatingWalker, generateSoak, generateWalker, genSym, h, hasSoak, helperNames, helpers, inlineHelpers, intersect, isDownwardScopeBoundary, isIdentifierName, isUpwardScopeBoundary, JS, jsReserved, makeReturn, makeVarDeclaration, map, mapChildNodes, memberAccess, needsCaching, nub, owns, partition, span, stmt, union, usedAsExpression, variableDeclarations, zip; cache$ = require('./functional-helpers'); +find = cache$.find; any = cache$.any; +all = cache$.all; concat = cache$.concat; concatMap = cache$.concatMap; difference = cache$.difference; @@ -15,12 +17,14 @@ owns = cache$.owns; partition = cache$.partition; span = cache$.span; union = cache$.union; +zip = cache$.zip; cache$1 = require('./helpers'); beingDeclared = cache$1.beingDeclared; usedAsExpression = cache$1.usedAsExpression; envEnrichments = cache$1.envEnrichments; CS = require('./nodes'); JS = require('./js-nodes'); +debugES6 = require('debug')('es6'); exports = null != ('undefined' !== typeof module && null != module ? module.exports : void 0) ? 'undefined' !== typeof module && null != module ? module.exports : void 0 : this; jsReserved = [ 'break', @@ -92,8 +96,6 @@ mapChildNodes = function (node, mapper, reducer, identity, opts) { accum$.push(in$(childName, node.listMembers) ? foldl(opts.listIdentity, function (accum$1) { for (var i$1 = 0, length$1 = node[childName].length; i$1 < length$1; ++i$1) { child = node[childName][i$1]; - if (!('undefined' !== typeof child && null != child)) - continue; accum$1.push(mapper(child, childName)); } return accum$1; @@ -111,8 +113,9 @@ genSym = function () { }(); stmt = function (e) { var walk; - if (!(null != e)) + if (!(null != e)) { return e; + } if (e.isStatement) { return e; } else if (e['instanceof'](JS.SequenceExpression)) { @@ -128,14 +131,17 @@ stmt = function (e) { return new JS.BlockStatement(walk(e)); } else if (e['instanceof'](JS.ConditionalExpression)) { return new JS.IfStatement(expr(e.test), stmt(e.consequent), stmt(e.alternate)); + } else if (typeof e.becomeStatement === 'function') { + return e.becomeStatement(); } else { return new JS.ExpressionStatement(e); } }; expr = function (s) { var accum, alternate, block, consequent, iife, lastExpression, push; - if (!(null != s)) + if (!(null != s)) { return s; + } if (s.isExpression) { return s; } else if (s['instanceof'](JS.BlockStatement)) { @@ -150,12 +156,12 @@ expr = function (s) { } else if (s['instanceof'](JS.ExpressionStatement)) { return s.expression; } else if (s['instanceof'](JS.ThrowStatement)) { - return new JS.CallExpression(new JS.FunctionExpression(null, [], forceBlock(s)), []); + return new JS.CallExpression(funcExpr({ body: forceBlock(s) }), []); } else if (s['instanceof'](JS.IfStatement)) { consequent = expr(null != s.consequent ? s.consequent : helpers.undef()); alternate = expr(null != s.alternate ? s.alternate : helpers.undef()); return new JS.ConditionalExpression(s.test, consequent, alternate); - } else if (s['instanceof'](JS.ForInStatement, JS.ForStatement, JS.WhileStatement)) { + } else if (s['instanceof'](JS.ForInStatement, JS.ForOfStatement, JS.ForStatement, JS.WhileStatement)) { accum = genSym('accum'); push = function (x) { return stmt(new JS.CallExpression(memberAccess(accum, 'push'), [x])); @@ -163,8 +169,9 @@ expr = function (s) { s.body = forceBlock(s.body); if (s.body.body.length) { lastExpression = s.body.body.slice(-1)[0]; - if (!lastExpression['instanceof'](JS.ThrowStatement)) + if (!lastExpression['instanceof'](JS.ThrowStatement)) { s.body.body[s.body.body.length - 1] = push(expr(lastExpression)); + } } else { s.body.body.push(push(helpers.undef())); } @@ -172,26 +179,35 @@ expr = function (s) { s, new JS.ReturnStatement(accum) ]); - iife = new JS.FunctionExpression(null, [accum], block); + iife = funcExpr({ + params: [accum], + body: block + }); return new JS.CallExpression(memberAccess(iife.g(), 'call'), [ new JS.ThisExpression, new JS.ArrayExpression([]) ]); } else if (s['instanceof'](JS.SwitchStatement, JS.TryStatement)) { block = new JS.BlockStatement([makeReturn(s)]); - iife = new JS.FunctionExpression(null, [], block); + iife = funcExpr({ body: block }); return new JS.CallExpression(memberAccess(iife.g(), 'call'), [new JS.ThisExpression]); + } else if (typeof s.becomeExpression === 'function') { + return s.becomeExpression(); } else { throw new Error('expr: Cannot use a ' + s.type + ' as a value'); } }; -isScopeBoundary = function (node) { +isDownwardScopeBoundary = function (node) { return node['instanceof'](JS.FunctionExpression, JS.FunctionDeclaration) && !node.generated; }; +isUpwardScopeBoundary = function (node) { + return node['instanceof'](JS.FunctionExpression, JS.FunctionDeclaration); +}; makeReturn = function (node) { var stmts; - if (!(null != node)) + if (!(null != node)) { return new JS.ReturnStatement; + } if (node['instanceof'](JS.BlockStatement)) { return new JS.BlockStatement([].slice.call(node.body.slice(0, -1)).concat([makeReturn(node.body.slice(-1)[0])])); } else if (node['instanceof'](JS.SequenceExpression)) { @@ -201,8 +217,9 @@ makeReturn = function (node) { } else if (node['instanceof'](JS.SwitchStatement)) { return new JS.SwitchStatement(node.discriminant, map(node.cases, makeReturn)); } else if (node['instanceof'](JS.SwitchCase)) { - if (!node.consequent.length) + if (!node.consequent.length) { return node; + } stmts = node.consequent.slice(-1)[0]['instanceof'](JS.BreakStatement) ? node.consequent.slice(0, -1) : node.consequent; return new JS.SwitchCase(node.test, [].slice.call(stmts.slice(0, -1)).concat([makeReturn(stmts.slice(-1)[0])])); } else if (node['instanceof'](JS.TryStatement)) { @@ -217,66 +234,89 @@ makeReturn = function (node) { return new JS.ReturnStatement(expr(node)); } }; -generateMutatingWalker = function (fn) { - return function (node) { - var args, mapper, reducer; - args = arguments.length > 1 ? [].slice.call(arguments, 1) : []; - mapper = function (child, nameInParent) { - return [ - nameInParent, - fn.apply(child, args) - ]; - }; - reducer = function (parent, param$) { - var cache$2, name, newChild; - { - cache$2 = param$; - name = cache$2[0]; - newChild = cache$2[1]; - } - parent[name] = newChild; - return parent; - }; - return mapChildNodes(node, mapper, reducer, node, { - listReducer: function (param$, param$1) { - var _, accum, cache$2, cache$3, name, newChild; +generateWalker = function (makeIdentity) { + return function (fn) { + return function (node) { + var args, identity, mapper, reducer; + args = arguments.length > 1 ? [].slice.call(arguments, 1) : []; + mapper = function (child, nameInParent) { + return [ + nameInParent, + null != child ? fn.apply(child, args) : child + ]; + }; + reducer = function (parent, param$) { + var cache$2, name, newChild; { cache$2 = param$; - _ = cache$2[0]; - accum = cache$2[1]; - } - { - cache$3 = param$1; - name = cache$3[0]; - newChild = cache$3[1]; + name = cache$2[0]; + newChild = cache$2[1]; } - return [ - name, - accum.concat(newChild) - ]; - }, - listIdentity: [ - null, - [] - ] - }); + parent[name] = newChild; + return parent; + }; + identity = makeIdentity(node); + return mapChildNodes(node, mapper, reducer, identity, { + listReducer: function (param$, param$1) { + var _, accum, cache$2, cache$3, name, newChild; + { + cache$2 = param$; + _ = cache$2[0]; + accum = cache$2[1]; + } + { + cache$3 = param$1; + name = cache$3[0]; + newChild = cache$3[1]; + } + return [ + name, + accum.concat(newChild) + ]; + }, + listIdentity: [ + null, + [] + ] + }); + }; }; }; +generateMutatingWalker = generateWalker(function (node) { + return node; +}); +generateCopyingWalker = generateWalker(function (node) { + return node.shallowCopy(); +}); +declaredIdentifiers = function (node) { + if (!(null != node)) { + return []; + } + if (node['instanceof'](JS.Identifier)) { + return [node.name]; + } else if (node['instanceof'](JS.MemberExpression)) { + return []; + } else { + return mapChildNodes(node, declaredIdentifiers, function (a, b) { + return a.concat(b); + }, []); + } +}; declarationsNeeded = function (node) { - if (!(null != node)) + if (!(null != node)) { return []; - if (node['instanceof'](JS.AssignmentExpression) && node.operator === '=' && node.left['instanceof'](JS.Identifier)) { - return [node.left.name]; - } else if (node['instanceof'](JS.ForInStatement) && node.left['instanceof'](JS.Identifier)) { - return [node.left.name]; + } + if (node['instanceof'](JS.AssignmentExpression) && node.operator === '=' || node['instanceof'](JS.ForInStatement) || node['instanceof'](JS.ForOfStatement)) { + return declaredIdentifiers(node.left); } else { return []; } }; declarationsNeededRecursive = function (node) { - if (!(null != node)) + if (!(null != node)) { return []; - if (isScopeBoundary(node)) { + } + if (isDownwardScopeBoundary(node)) { return []; } else { return union(declarationsNeeded(node), mapChildNodes(node, declarationsNeededRecursive, function (a, b) { @@ -285,11 +325,12 @@ declarationsNeededRecursive = function (node) { } }; variableDeclarations = function (node) { - if (!(null != node)) + if (!(null != node)) { return []; + } if (node['instanceof'](JS.FunctionDeclaration)) { return [node.id]; - } else if (isScopeBoundary(node)) { + } else if (isUpwardScopeBoundary(node)) { return []; } else if (node['instanceof'](JS.VariableDeclarator)) { return [node.id]; @@ -308,6 +349,12 @@ collectIdentifiers = function (node) { return [node.name]; case !(node['instanceof'](JS.MemberExpression) && !node.computed): return collectIdentifiers(node.object); + case !node['instanceof'](JS.ObjectPattern): + return map(node.properties, function (p) { + return collectIdentifiers(p.value); + }).reduce(function (a, b) { + return a.concat(b); + }, []); default: return mapChildNodes(node, collectIdentifiers, function (a, b) { return a.concat(b); @@ -316,15 +363,17 @@ collectIdentifiers = function (node) { }.call(this)); }; needsCaching = function (node) { - if (!(null != node)) + if (!(null != node)) { return false; + } return envEnrichments(node, []).length > 0 || node['instanceof'](CS.FunctionApplications, CS.DoOp, CS.NewOp, CS.ArrayInitialiser, CS.ObjectInitialiser, CS.RegExp, CS.HeregExp, CS.PreIncrementOp, CS.PostIncrementOp, CS.PreDecrementOp, CS.PostDecrementOp, CS.Range) || mapChildNodes(node, needsCaching, function (a, b) { return a || b; }, false); }; forceBlock = function (node) { - if (!(null != node)) + if (!(null != node)) { return new JS.BlockStatement([]); + } node = stmt(node); if (node['instanceof'](JS.BlockStatement)) { return node; @@ -371,14 +420,52 @@ dynamicMemberAccess = function (e, index) { return new JS.MemberExpression(true, expr(e), expr(index)); } }; -assignment = function (assignee, expression, valueUsed) { - var alternate, assignments, consequent, e, elements, i, index, m, numElements, p, propName, restName, size, test; +es6AssignmentPattern = function (assignee) { + var elements, elt, index, props; + if (assignee instanceof JS.ArrayExpression) { + elements = function (accum$) { + for (var i$ = 0, length$ = assignee.elements.length; i$ < length$; ++i$) { + elt = assignee.elements[i$]; + index = i$; + accum$.push(elt instanceof JS.Identifier ? elt : elt.rest ? index === assignee.elements.length - 1 ? new JS.RestElement(elt.expression) : void 0 : es6AssignmentPattern(elt)); + } + return accum$; + }.call(this, []); + if (all(elements, function (elt) { + return null != elt; + }) && elements.length > 0) { + return new JS.ArrayPattern(elements); + } + } else if (assignee instanceof JS.ObjectExpression) { + props = assignee.properties.map(function (p) { + var pattern; + if (p.value instanceof JS.Identifier) { + if (p.value.name === p.key.name) { + p.shorthand = true; + } + return p; + } else if (pattern = es6AssignmentPattern(p.value)) { + return new JS.Property(p.key, pattern); + } + }); + if (all(props, function (elt) { + return null != elt; + }) && props.length > 0) { + return new JS.ObjectPattern(props); + } + } +}; +assignment = function (assignee, expression, options, valueUsed) { + var alternate, assignments, consequent, e, elements, es6Pattern, i, index, m, numElements, p, propName, restName, size, test; if (null == valueUsed) valueUsed = false; assignments = []; expression = expr(expression); switch (false) { case !assignee.rest: + case !(options.targetES6 && (es6Pattern = es6AssignmentPattern(assignee))): + assignments.push(new JS.AssignmentExpression('=', es6Pattern, expression)); + break; case !assignee['instanceof'](JS.ArrayExpression): e = expression; if (valueUsed || assignee.elements.length > 1) { @@ -389,9 +476,10 @@ assignment = function (assignee, expression, valueUsed) { for (var i$ = 0, length$ = elements.length; i$ < length$; ++i$) { m = elements[i$]; i = i$; - if (m.rest) + if (m.rest) { break; - assignments.push(assignment(m, dynamicMemberAccess(e, new JS.Literal(i)), valueUsed)); + } + assignments.push(assignment(m, dynamicMemberAccess(e, new JS.Literal(i)), options, valueUsed)); } if (elements.length > 0) { if (elements.slice(-1)[0].rest) { @@ -429,8 +517,9 @@ assignment = function (assignee, expression, valueUsed) { } if (any(elements, function (p) { return p.rest; - })) + })) { throw new Error('Positional destructuring assignments may not have more than one rest operator'); + } } break; case !assignee['instanceof'](JS.ObjectExpression): @@ -442,7 +531,7 @@ assignment = function (assignee, expression, valueUsed) { for (var i$3 = 0, length$3 = assignee.properties.length; i$3 < length$3; ++i$3) { m = assignee.properties[i$3]; propName = m.key['instanceof'](JS.Identifier) ? new JS.Literal(m.key.name) : m.key; - assignments.push(assignment(m.value, dynamicMemberAccess(e, propName), valueUsed)); + assignments.push(assignment(m.value, dynamicMemberAccess(e, propName), options, valueUsed)); } break; case !assignee['instanceof'](JS.Identifier, JS.GenSym, JS.MemberExpression): @@ -577,29 +666,69 @@ generateSoak = function () { }), e); }; }(); +baseExtends = function (myName, copyClassProperties) { + var block, child, ctor, parent, protoAccess; + protoAccess = function (e) { + return memberAccess(e, 'prototype'); + }; + child = new JS.Identifier('child'); + parent = new JS.Identifier('parent'); + ctor = new JS.Identifier('ctor'); + block = [ + copyClassProperties(parent, child), + funcDecl({ + id: ctor, + body: new JS.BlockStatement([stmt(new JS.AssignmentExpression('=', memberAccess(new JS.ThisExpression, 'constructor'), child))]) + }), + new JS.AssignmentExpression('=', protoAccess(ctor), protoAccess(parent)), + new JS.AssignmentExpression('=', protoAccess(child), new JS.NewExpression(ctor, [])), + new JS.AssignmentExpression('=', memberAccess(child, '__super__'), protoAccess(parent)), + new JS.ReturnStatement(child) + ]; + return funcDecl({ + id: helperNames[myName], + params: [ + child, + parent + ], + body: new JS.BlockStatement(map(block, stmt)) + }); +}; helperNames = {}; helpers = { 'extends': function () { - var block, child, ctor, f, key, parent, protoAccess; - protoAccess = function (e) { - return memberAccess(e, 'prototype'); - }; - child = new JS.Identifier('child'); - parent = new JS.Identifier('parent'); - ctor = new JS.Identifier('ctor'); + var copyClassProperties, key; key = new JS.Identifier('key'); - block = [ - new JS.ForInStatement(new JS.VariableDeclaration('var', [new JS.VariableDeclarator(key, null)]), parent, new JS.IfStatement(helpers.isOwn(parent, key), f = stmt(new JS.AssignmentExpression('=', new JS.MemberExpression(true, child, key), new JS.MemberExpression(true, parent, key))))), - new JS.FunctionDeclaration(ctor, [], new JS.BlockStatement([stmt(new JS.AssignmentExpression('=', memberAccess(new JS.ThisExpression, 'constructor'), child))])), - new JS.AssignmentExpression('=', protoAccess(ctor), protoAccess(parent)), - new JS.AssignmentExpression('=', protoAccess(child), new JS.NewExpression(ctor, [])), - new JS.AssignmentExpression('=', memberAccess(child, '__super__'), protoAccess(parent)), - new JS.ReturnStatement(child) - ]; - return new JS.FunctionDeclaration(helperNames['extends'], [ - child, - parent - ], new JS.BlockStatement(map(block, stmt))); + copyClassProperties = function (parent, child) { + var f; + return new JS.ForInStatement(new JS.VariableDeclaration('var', [new JS.VariableDeclarator(key, null)]), parent, new JS.IfStatement(helpers.isOwn(parent, key), f = stmt(new JS.AssignmentExpression('=', new JS.MemberExpression(true, child, key), new JS.MemberExpression(true, parent, key))))); + }; + return baseExtends('extends', copyClassProperties); + }, + extendsES6: function () { + var copyClassProperties; + copyClassProperties = function (parent, child) { + var condition, conditional, copyKey, func, key, propertyNames; + propertyNames = new JS.CallExpression(memberAccess(new JS.Identifier('Object'), 'getOwnPropertyNames'), [parent]); + key = new JS.Identifier('key'); + copyKey = new JS.AssignmentExpression('=', new JS.MemberExpression(true, child, key), new JS.MemberExpression(true, parent, key)); + condition = [ + 'callee', + 'caller', + 'arguments' + ].map(function (forbidden) { + return new JS.BinaryExpression('!==', key, new JS.Literal(forbidden)); + }).reduce(function (a, b) { + return new JS.BinaryExpression('&&', a, b); + }); + conditional = new JS.IfStatement(condition, forceBlock(copyKey)); + func = funcExpr({ + params: [key], + body: forceBlock(conditional) + }); + return new JS.CallExpression(memberAccess(propertyNames, 'forEach'), [func]); + }; + return baseExtends('extendsES6', copyClassProperties); }, construct: function () { var args, block, child, ctor, fn, result; @@ -609,7 +738,7 @@ helpers = { args = new JS.Identifier('args'); result = new JS.Identifier('result'); block = [ - new JS.VariableDeclaration('var', [new JS.VariableDeclarator(fn, new JS.FunctionExpression(null, [], new JS.BlockStatement([])))]), + new JS.VariableDeclaration('var', [new JS.VariableDeclarator(fn, funcExpr({ body: new JS.BlockStatement([]) }))]), new JS.AssignmentExpression('=', memberAccess(fn, 'prototype'), memberAccess(ctor, 'prototype')), new JS.VariableDeclaration('var', [ new JS.VariableDeclarator(child, new JS.NewExpression(fn, [])), @@ -620,10 +749,14 @@ helpers = { ]), new JS.ReturnStatement(new JS.ConditionalExpression(new JS.BinaryExpression('===', result, new JS.CallExpression(new JS.Identifier('Object'), [result])), result, child)) ]; - return new JS.FunctionDeclaration(helperNames.construct, [ - ctor, - args - ], new JS.BlockStatement(map(block, stmt))); + return funcDecl({ + id: helperNames.construct, + params: [ + ctor, + args + ], + body: new JS.BlockStatement(map(block, stmt)) + }); }, isOwn: function () { var args, functionBody, hop, params; @@ -633,7 +766,11 @@ helpers = { new JS.Identifier('p') ]; functionBody = [new JS.CallExpression(memberAccess(hop, 'call'), args)]; - return new JS.FunctionDeclaration(helperNames.isOwn, params, makeReturn(new JS.BlockStatement(map(functionBody, stmt)))); + return funcDecl({ + id: helperNames.isOwn, + params: params, + body: makeReturn(new JS.BlockStatement(map(functionBody, stmt))) + }); }, 'in': function () { var functionBody, i, length, list, loopBody, member, varDeclaration; @@ -650,10 +787,65 @@ helpers = { new JS.ForStatement(varDeclaration, new JS.BinaryExpression('<', i, length), new JS.UpdateExpression('++', true, i), loopBody), new JS.Literal(false) ]; - return new JS.FunctionDeclaration(helperNames['in'], [ - member, - list - ], makeReturn(new JS.BlockStatement(map(functionBody, stmt)))); + return funcDecl({ + id: helperNames['in'], + params: [ + member, + list + ], + body: makeReturn(new JS.BlockStatement(map(functionBody, stmt))) + }); + }, + range: function () { + var body, first, fn, i, init, isInclusive, last, step, test, update; + first = new JS.Identifier('first'); + last = new JS.Identifier('last'); + step = new JS.Identifier('step'); + isInclusive = new JS.Identifier('isInclusive'); + i = new JS.Identifier('i'); + init = new JS.VariableDeclaration('let', [new JS.VariableDeclarator(i, first)]); + test = new JS.ConditionalExpression(isInclusive, new JS.BinaryExpression('<=', i, last), new JS.BinaryExpression('<', i, last)); + update = new JS.AssignmentExpression('=', i, new JS.BinaryExpression('+', i, step)); + body = [new JS.ForStatement(init, test, update, new JS.BlockStatement([stmt(new JS.YieldExpression(i))]))]; + fn = funcDecl({ + id: helperNames.range, + params: [ + first, + last, + step, + isInclusive + ], + defaults: [ + null, + null, + new JS.Literal(1), + new JS.Literal(false) + ], + body: new JS.BlockStatement(map(body, stmt)) + }); + fn.generator = true; + return fn; + }, + inclusiveRange: function () { + var body, first, last, step; + first = new JS.Identifier('first'); + last = new JS.Identifier('last'); + step = new JS.Identifier('step'); + body = [makeReturn(helpers.range(first, last, step, new JS.Literal(true)))]; + return funcDecl({ + id: helperNames.inclusiveRange, + params: [ + first, + last, + step + ], + defaults: [ + null, + null, + new JS.Literal(1) + ], + body: new JS.BlockStatement(body) + }); } }; enabledHelpers = []; @@ -688,6 +880,217 @@ for (h in inlineHelpers) { fn = inlineHelpers[h]; helpers[h] = fn; } +findES6Methods = function (classIdentifier, ctor, isDerivedClass, body) { + var expression, foundConstructor, m, methodBody, methodIdentifier, methods, object, properties, property, propertyName, rewriteSuper, rewriteThis, safeCtorBody, statement, unmatched; + methods = []; + properties = []; + unmatched = []; + foundConstructor = false; + methodIdentifier = function (expression) { + var prop; + prop = expression.left.property; + if (prop instanceof JS.Identifier) { + return new JS.Identifier(prop.name); + } else if (prop instanceof JS.Literal) { + return new JS.Identifier(prop.value); + } + }; + rewriteSuper = generateCopyingWalker(function () { + if (isDownwardScopeBoundary(this)) { + return this; + } else if (this.toES6Super) { + return this.toES6Super(); + } else { + return rewriteSuper(this); + } + }); + if (ctor) { + ctor = rewriteSuper(ctor); + if (safeCtorBody = es6SafeConstructor(isDerivedClass, ctor.body)) { + methods.push(new JS.MethodDefinition(new JS.Identifier('constructor'), funcExpr({ + params: ctor.params, + defaults: ctor.defaults, + rest: ctor.rest, + body: safeCtorBody + }))); + } else { + debugES6('' + describeClass(classIdentifier) + "'s constructor does not follow the ES6 rules for super."); + unmatched.push(ctor); + } + } + for (var i$ = 0, length$ = body.body.length; i$ < length$; ++i$) { + statement = body.body[i$]; + if (statement instanceof JS.FunctionDeclaration && !foundConstructor) { + foundConstructor = true; + continue; + } + expression = statement.expression; + if (expression instanceof JS.AssignmentExpression && expression.operator === '=' && expression.left instanceof JS.MemberExpression) { + property = expression.left.property; + propertyName = property instanceof JS.Identifier ? property.name : property instanceof JS.Literal ? property.value : void 0; + object = expression.left.object; + methodBody = expression.right instanceof JS.FunctionExpression ? funcExpr({ + id: expression.right.id, + params: expression.right.params, + defaults: expression.right.defaults, + rest: expression.right.rest, + body: rewriteSuper(expression.right.body) + }) : void 0; + if (object instanceof JS.MemberExpression && object.property.name === 'prototype' && object.object['instanceof'](JS.ThisExpression)) { + if (methodBody) { + methods.push(new JS.MethodDefinition(new JS.Identifier(propertyName), methodBody)); + } else { + properties.push(new JS.AssignmentExpression('=', memberAccess(memberAccess(classIdentifier, 'prototype'), propertyName), expression.right)); + } + } else if (object instanceof JS.ThisExpression) { + if (methodBody) { + m = new JS.MethodDefinition(new JS.Identifier(propertyName), methodBody); + m['static'] = true; + methods.push(m); + } else { + properties.push(new JS.AssignmentExpression('=', memberAccess(classIdentifier, propertyName), expression.right)); + } + } + } else { + unmatched.push(statement); + } + } + rewriteThis = generateCopyingWalker(function () { + if (this['instanceof'](JS.ThisExpression)) { + return classIdentifier; + } else if (isDownwardScopeBoundary(this)) { + return this; + } else { + return rewriteThis(this); + } + }); + properties = map(properties, rewriteThis); + return { + methods: methods, + properties: properties, + unmatched: unmatched + }; +}; +es6SafeConstructor = function (isDerivedClass, block) { + var calledSuper, callsSuper, either, referencesThis, sawThis, statement; + if (!isDerivedClass) { + return block; + } + either = function (a, b) { + return a || b; + }; + referencesThis = function (node) { + if (null != node && node instanceof JS.ThisExpression) { + return true; + } else { + return mapChildNodes(node, referencesThis, either, false); + } + }; + callsSuper = function (node) { + if (null != node && node instanceof JS.CallExpression && node.callee instanceof JS.Identifier && node.callee.name === 'super') { + return true; + } else { + return mapChildNodes(node, callsSuper, either, false); + } + }; + sawThis = calledSuper = false; + for (var i$ = 0, length$ = block.body.length; i$ < length$; ++i$) { + statement = block.body[i$]; + sawThis = sawThis || referencesThis(statement); + if (callsSuper(statement)) { + if (sawThis) { + return null; + } else { + calledSuper = true; + } + } + } + if (!calledSuper) { + block = new JS.BlockStatement(block.body.slice()); + block.body.unshift(stmt(new JS.CallExpression(new JS.Identifier('super'), []))); + } + return block; +}; +es6SafeArrowExpression = function (parameters, defaults, rest, block) { + var rewriteArguments, statement, usesArguments; + usesArguments = function (node) { + if (!(null != node)) { + return false; + } else if (node instanceof JS.Identifier) { + return node.name === 'arguments'; + } else { + return mapChildNodes(node, usesArguments, function (a, b) { + return a || b; + }, false); + } + }; + if (any(block.body, usesArguments)) { + if (parameters.length > 0) { + debugES6("Skipping arrow function conversion because your bound function refers to the 'arguments' keyword and has regular positional arguments"); + return null; + } + if (null != rest) + rest; + else + rest = genSym('arguments'); + rewriteArguments = generateMutatingWalker(function () { + if (this['instanceof'](JS.Identifier) && this.name === 'arguments') { + return rest; + } else if (isDownwardScopeBoundary(this)) { + return this; + } else { + return rewriteArguments(this); + } + }); + for (var i$ = 0, length$ = block.body.length; i$ < length$; ++i$) { + statement = block.body[i$]; + rewriteArguments(statement); + } + } + if (block.body.length === 1 && block.body[0] instanceof JS.ReturnStatement) { + fn = new JS.ArrowFunctionExpression(parameters, defaults, rest, block.body[0].argument); + fn.expression = true; + return fn; + } else { + return new JS.ArrowFunctionExpression(parameters, defaults, rest, block); + } +}; +describeClass = function (name, parentNode) { + if (null != name ? name.name : void 0) { + return 'class ' + name.name; + } + if (parentNode instanceof CS.AssignOp && parentNode.assignee instanceof CS.Identifier) { + return 'An anonymous class assigned to identifier ' + parentNode.assignee.data; + } + if (parentNode instanceof CS.ObjectInitialiserMember) { + return 'An anonymous class assigned to property ' + parentNode.key.data; + } + return 'An anonymous class'; +}; +funcExpr = function (param$) { + var body, cache$2, defaults, id, params, rest; + { + cache$2 = param$; + id = cache$2.id; + params = cache$2.params; + defaults = cache$2.defaults; + rest = cache$2.rest; + body = cache$2.body; + } + return new JS.FunctionExpression(null != id ? id : null, null != params ? params : [], null != defaults ? defaults : [], null != rest ? rest : null, body); +}; +funcDecl = function (param$) { + var body, cache$2, defaults, id, params, rest; + { + cache$2 = param$; + id = cache$2.id; + params = cache$2.params; + defaults = cache$2.defaults; + rest = cache$2.rest; + body = cache$2.body; + } + return new JS.FunctionDeclaration(null != id ? id : null, null != params ? params : [], null != defaults ? defaults : [], null != rest ? rest : null, body); +}; exports.Compiler = function () { Compiler.compile = function (this$) { return function () { @@ -699,15 +1102,16 @@ exports.Compiler = function () { [ CS.Program, function (param$) { - var block, body, cache$2, cache$3, decls, fnDeclHelpers, inScope, options, otherHelpers, pkg, program; + var block, body, cache$2, cache$3, decls, ecmaMode, fnDeclHelpers, inScope, options, otherHelpers, pkg, program; { cache$2 = param$; body = cache$2.body; inScope = cache$2.inScope; options = cache$2.options; } - if (!(null != body)) + if (!(null != body)) { return new JS.Program([]); + } block = stmt(body); block = block['instanceof'](JS.BlockStatement) ? block.body : [block]; cache$3 = partition(enabledHelpers, function (helper) { @@ -718,13 +1122,15 @@ exports.Compiler = function () { [].push.apply(block, fnDeclHelpers); [].unshift.apply(block, otherHelpers); decls = nub(concatMap(block, declarationsNeededRecursive)); - if (decls.length && !options.bare) - block = [stmt(new JS.UnaryExpression('void', new JS.CallExpression(memberAccess(new JS.FunctionExpression(null, [], new JS.BlockStatement(block)), 'call'), [new JS.ThisExpression])))]; + if (decls.length && !options.bare) { + block = [stmt(new JS.UnaryExpression('void', new JS.CallExpression(memberAccess(funcExpr({ body: new JS.BlockStatement(block) }), 'call'), [new JS.ThisExpression])))]; + } pkg = require('./../package.json'); program = new JS.Program(block); + ecmaMode = options.targetES6 ? '-es6' : ''; program.leadingComments = [{ type: 'Line', - value: ' Generated by CoffeeScript ' + pkg.version + value: ' Generated by CoffeeScript ' + pkg.version + ecmaMode }]; return program; } @@ -780,20 +1186,23 @@ exports.Compiler = function () { ancestry = cache$2.ancestry; } if (null != alternate) { - if (!(null != consequent)) + if (!(null != consequent)) { throw new Error('Conditional with non-null alternate requires non-null consequent'); - if (!alternate['instanceof'](JS.IfStatement)) + } + if (!alternate['instanceof'](JS.IfStatement)) { alternate = forceBlock(alternate); + } } - if (null != alternate || (null != ancestry[0] ? ancestry[0]['instanceof'](CS.Conditional) : void 0)) + if (null != alternate || (null != ancestry[0] ? ancestry[0]['instanceof'](CS.Conditional) : void 0)) { consequent = forceBlock(consequent); - return new JS.IfStatement(expr(condition), stmt(consequent), alternate); + } + return new JS.IfStatement(expr(condition), forceBlock(consequent), alternate); } ], [ CS.ForIn, function (param$) { - var block, body, cache$2, compile, e, filter, i, increment, k, keyAssignee, length, op, step, target, update, valAssignee, varDeclaration; + var block, body, cache$2, compile, e, es6Target, filter, i, increment, k, keyAssignee, length, op, options, rangeArgs, step, target, update, valAssignee, valPattern, varDeclaration; { cache$2 = param$; valAssignee = cache$2.valAssignee; @@ -803,12 +1212,30 @@ exports.Compiler = function () { filter = cache$2.filter; body = cache$2.body; compile = cache$2.compile; + options = cache$2.options; + } + if (options.targetES6 && !filter) { + es6Target = this.target['instanceof'](CS.Range) ? (rangeArgs = [ + compile(this.target.left), + compile(this.target.right) + ], !(step instanceof JS.Literal && step.value === 1) ? rangeArgs.push(step) : void 0, this.target.isInclusive ? helpers.inclusiveRange.apply(helpers, [].slice.call(rangeArgs)) : helpers.range.apply(helpers, [].slice.call(rangeArgs))) : step instanceof JS.Literal && step.value === 1 ? target : void 0; + if (es6Target && valAssignee && (valPattern = valAssignee instanceof JS.Identifier ? valAssignee : es6AssignmentPattern(valAssignee))) { + if (keyAssignee) { + return new JS.ForOfStatement(new JS.VariableDeclaration('var', [new JS.VariableDeclarator(new JS.ArrayPattern([ + keyAssignee, + valPattern + ]))]), new JS.CallExpression(memberAccess(es6Target, 'entries'), []), forceBlock(body)); + } else { + return new JS.ForOfStatement(new JS.VariableDeclaration('var', [new JS.VariableDeclarator(valPattern)]), es6Target, forceBlock(body)); + } + } } i = genSym('i'); length = genSym('length'); block = forceBlock(body); - if (!block.body.length) + if (!block.body.length) { block.body.push(stmt(helpers.undef())); + } increment = null != this.step && !(this.step['instanceof'](CS.Int) && this.step.data === 1) ? function (x) { return new JS.AssignmentExpression('+=', x, step); } : function (x) { @@ -817,8 +1244,9 @@ exports.Compiler = function () { if (this.target['instanceof'](CS.Range) && (this.target.left['instanceof'](CS.Int) || this.target.left['instanceof'](CS.UnaryNegateOp) && this.target.left.expression['instanceof'](CS.Int)) && (this.target.right['instanceof'](CS.Int) || this.target.right['instanceof'](CS.UnaryNegateOp) && this.target.right.expression['instanceof'](CS.Int))) { varDeclaration = new JS.VariableDeclaration('var', [new JS.VariableDeclarator(i, compile(this.target.left))]); update = increment(i); - if (null != this.filter) + if (null != this.filter) { block.body.unshift(stmt(new JS.IfStatement(new JS.UnaryExpression('!', filter), new JS.ContinueStatement))); + } if (null != keyAssignee) { k = genSym('k'); varDeclaration.declarations.unshift(new JS.VariableDeclarator(k, new JS.Literal(0))); @@ -828,8 +1256,9 @@ exports.Compiler = function () { ]); block.body.unshift(stmt(new JS.AssignmentExpression('=', keyAssignee, k))); } - if (null != valAssignee) + if (null != valAssignee) { block.body.unshift(stmt(new JS.AssignmentExpression('=', valAssignee, i))); + } op = this.target.isInclusive ? '<=' : '<'; return new JS.ForStatement(varDeclaration, new JS.BinaryExpression(op, i, compile(this.target.right)), update, block); } @@ -838,21 +1267,25 @@ exports.Compiler = function () { new JS.VariableDeclarator(i, new JS.Literal(0)), new JS.VariableDeclarator(length, memberAccess(e, 'length')) ]); - if (!(e === target)) + if (!(e === target)) { varDeclaration.declarations.unshift(new JS.VariableDeclarator(e, target)); - if (null != this.filter) + } + if (null != this.filter) { block.body.unshift(stmt(new JS.IfStatement(new JS.UnaryExpression('!', filter), new JS.ContinueStatement))); - if (null != keyAssignee) - block.body.unshift(stmt(assignment(keyAssignee, i))); - if (null != valAssignee) - block.body.unshift(stmt(assignment(valAssignee, new JS.MemberExpression(true, e, i)))); + } + if (null != keyAssignee) { + block.body.unshift(stmt(assignment(keyAssignee, i, options))); + } + if (null != valAssignee) { + block.body.unshift(stmt(assignment(valAssignee, new JS.MemberExpression(true, e, i), options))); + } return new JS.ForStatement(varDeclaration, new JS.BinaryExpression('<', i, length), increment(i), block); } ], [ CS.ForOf, function (param$) { - var block, body, cache$2, e, filter, keyAssignee, right, target, valAssignee; + var block, body, cache$2, e, filter, keyAssignee, options, right, target, valAssignee; { cache$2 = param$; keyAssignee = cache$2.keyAssignee; @@ -860,17 +1293,22 @@ exports.Compiler = function () { target = cache$2.target; filter = cache$2.filter; body = cache$2.body; + options = cache$2.options; } block = forceBlock(body); - if (!block.body.length) + if (!block.body.length) { block.body.push(stmt(helpers.undef())); + } e = this.isOwn && needsCaching(this.target) ? genSym('cache') : expr(target); - if (null != this.filter) + if (null != this.filter) { block.body.unshift(stmt(new JS.IfStatement(new JS.UnaryExpression('!', filter), new JS.ContinueStatement))); - if (null != valAssignee) - block.body.unshift(stmt(assignment(valAssignee, new JS.MemberExpression(true, e, keyAssignee)))); - if (this.isOwn) + } + if (null != valAssignee) { + block.body.unshift(stmt(assignment(valAssignee, new JS.MemberExpression(true, e, keyAssignee), options))); + } + if (this.isOwn) { block.body.unshift(stmt(new JS.IfStatement(new JS.UnaryExpression('!', helpers.isOwn(e, keyAssignee)), new JS.ContinueStatement))); + } right = e === target ? e : new JS.AssignmentExpression('=', e, target); return new JS.ForInStatement(keyAssignee, right, block); } @@ -906,8 +1344,9 @@ exports.Compiler = function () { c.test = new JS.UnaryExpression('!', c.test); } } - if (null != alternate) + if (null != alternate) { cases.push(new JS.SwitchCase(null, [stmt(alternate)])); + } for (var i$1 = 0, length$1 = cases.slice(0, -1).length; i$1 < length$1; ++i$1) { c = cases.slice(0, -1)[i$1]; if (!((null != c.consequent ? c.consequent.length : void 0) > 0)) @@ -938,20 +1377,22 @@ exports.Compiler = function () { [ CS.Try, function (param$) { - var body, cache$2, catchAssignee, catchBlock, catchBody, e, finallyBlock, finallyBody, handlers; + var body, cache$2, catchAssignee, catchBlock, catchBody, e, finallyBlock, finallyBody, handlers, options; { cache$2 = param$; body = cache$2.body; catchAssignee = cache$2.catchAssignee; catchBody = cache$2.catchBody; finallyBody = cache$2.finallyBody; + options = cache$2.options; } finallyBlock = null != this.finallyBody ? forceBlock(finallyBody) : null; if (null != this.catchBody || !(null != this.finallyBody)) { e = genSym('e'); catchBlock = forceBlock(catchBody); - if (null != catchAssignee) - catchBlock.body.unshift(stmt(assignment(catchAssignee, e))); + if (null != catchAssignee) { + catchBlock.body.unshift(stmt(assignment(catchAssignee, e, options))); + } handlers = [new JS.CatchClause(e, catchBlock)]; } else { handlers = []; @@ -1029,12 +1470,12 @@ exports.Compiler = function () { if (any(ancestry, function (ancestor) { return ancestor['instanceof'](CS.Functions); })) { - return new JS.CallExpression(memberAccess(new JS.FunctionExpression(null, [], new JS.BlockStatement(body)), 'apply'), [ + return new JS.CallExpression(memberAccess(funcExpr({ body: new JS.BlockStatement(body) }), 'apply'), [ new JS.ThisExpression, new JS.Identifier('arguments') ]); } else { - return new JS.CallExpression(memberAccess(new JS.FunctionExpression(null, [], new JS.BlockStatement(body)), 'call'), [new JS.ThisExpression]); + return new JS.CallExpression(memberAccess(funcExpr({ body: new JS.BlockStatement(body) }), 'call'), [new JS.ThisExpression]); } } ], @@ -1068,13 +1509,14 @@ exports.Compiler = function () { } }; return function (param$) { - var cache$2, compile, grouped, members; + var cache$2, compile, grouped, members, options; { cache$2 = param$; members = cache$2.members; compile = cache$2.compile; + options = cache$2.options; } - if (any(members, function (m) { + if (!options.targetES6 && any(members, function (m) { return m.spread; })) { grouped = map(groupMembers(members), expr); @@ -1084,7 +1526,9 @@ exports.Compiler = function () { return new JS.CallExpression(memberAccess(grouped[0], 'concat'), grouped.slice(1)); } } else { - return new JS.ArrayExpression(map(members, expr)); + return new JS.ArrayExpression(map(members, function (m) { + return expr(m.spread ? new JS.SpreadElement(m.expression) : m); + })); } }; }() @@ -1143,32 +1587,39 @@ exports.Compiler = function () { CS.BoundFunction, function () { var handleParam; - handleParam = function (param, original, block, inScope) { - var decls, p; + handleParam = function (param, original, block, inScope, options) { + var decls, p, pattern; switch (false) { case !original['instanceof'](CS.Rest): return param; case !original['instanceof'](CS.Identifier): return param; case !original['instanceof'](CS.MemberAccessOps, CS.ObjectInitialiser, CS.ArrayInitialiser): - p = genSym('param'); - decls = map(intersect(inScope, beingDeclared(original)), function (i) { - return new JS.Identifier(i); - }); - block.body.unshift(stmt(assignment(param, p))); - if (decls.length) - block.body.unshift(makeVarDeclaration(decls)); - return p; + if (options.targetES6 && (pattern = es6AssignmentPattern(param))) { + return pattern; + } else { + p = genSym('param'); + decls = map(intersect(inScope, beingDeclared(original)), function (i) { + return new JS.Identifier(i); + }); + block.body.unshift(stmt(assignment(param, p, options))); + if (decls.length) { + block.body.unshift(makeVarDeclaration(decls)); + } + return p; + } case !original['instanceof'](CS.DefaultParam): - p = handleParam.call(this, param.param, original.param, block, inScope); - block.body.unshift(new JS.IfStatement(new JS.BinaryExpression('==', new JS.Literal(null), p), stmt(assignment(p, param['default'])))); + p = handleParam.call(this, param.param, original.param, block, inScope, options); + if (!options.targetES6) { + block.body.unshift(new JS.IfStatement(new JS.BinaryExpression('==', new JS.Literal(null), p), stmt(assignment(p, param['default'], options)))); + } return p; default: throw new Error('Unsupported parameter type: ' + original.className); } }; return function (param$) { - var alternate, ancestry, block, cache$2, consequent, i, index, inScope, last, newThis, numArgs, numParams, p, parameters_, paramName, performedRewrite, pIndex, reassignments, rewriteThis, test; + var alternate, ancestry, arrow, block, cache$2, consequent, defaults, expression, i, index, inScope, last, newThis, numArgs, numParams, options, p, parameters_, paramName, performedRewrite, pIndex, reassignments, rest, rewriteThis, sym, test; var body, parameters; { cache$2 = param$; @@ -1176,30 +1627,52 @@ exports.Compiler = function () { body = cache$2.body; ancestry = cache$2.ancestry; inScope = cache$2.inScope; + options = cache$2.options; } - if (!(null != ancestry[0] ? ancestry[0]['instanceof'](CS.Constructor) : void 0)) + if (!(null != ancestry[0] ? ancestry[0]['instanceof'](CS.Constructor) : void 0)) { body = makeReturn(body); + } block = forceBlock(body); last = block.body.slice(-1)[0]; - if ((null != last ? last['instanceof'](JS.ReturnStatement) : void 0) && !(null != last.argument)) + if ((null != last ? last['instanceof'](JS.ReturnStatement) : void 0) && !(null != last.argument)) { block.body = block.body.slice(0, -1); + } + defaults = options.targetES6 ? zip(parameters, this.parameters).map(function (param$1) { + var cache$3, original, param; + { + cache$3 = param$1; + param = cache$3[0]; + original = cache$3[1]; + } + if (original instanceof CS.DefaultParam) { + return param['default']; + } else { + return null; + } + }) : []; parameters_ = parameters.length === 0 ? [] : (pIndex = parameters.length, function (accum$) { while (pIndex--) { - accum$.push(handleParam.call(this, parameters[pIndex], this.parameters[pIndex], block, inScope)); + accum$.push(handleParam.call(this, parameters[pIndex], this.parameters[pIndex], block, inScope, options)); } return accum$; }.call(this, [])); parameters = parameters_.reverse(); if (parameters.length > 0) { if (parameters.slice(-1)[0].rest) { - paramName = parameters.pop().expression; - numParams = parameters.length; - test = new JS.BinaryExpression('>', memberAccess(new JS.Identifier('arguments'), 'length'), new JS.Literal(numParams)); - consequent = helpers.slice(new JS.Identifier('arguments'), new JS.Literal(numParams)); - alternate = new JS.ArrayExpression([]); - if (paramName['instanceof'](JS.Identifier) && in$(paramName.name, inScope)) - block.body.unshift(makeVarDeclaration([paramName])); - block.body.unshift(stmt(new JS.AssignmentExpression('=', paramName, new JS.ConditionalExpression(test, consequent, alternate)))); + if (options.targetES6) { + expression = parameters.pop().expression; + rest = expression instanceof JS.Identifier ? new JS.Identifier(expression.name) : (sym = genSym('rest'), block.body.unshift(stmt(new JS.AssignmentExpression('=', expression, sym))), sym); + } else { + paramName = parameters.pop().expression; + numParams = parameters.length; + test = new JS.BinaryExpression('>', memberAccess(new JS.Identifier('arguments'), 'length'), new JS.Literal(numParams)); + consequent = helpers.slice(new JS.Identifier('arguments'), new JS.Literal(numParams)); + alternate = new JS.ArrayExpression([]); + if (paramName['instanceof'](JS.Identifier) && in$(paramName.name, inScope)) { + block.body.unshift(makeVarDeclaration([paramName])); + } + block.body.unshift(stmt(new JS.AssignmentExpression('=', paramName, new JS.ConditionalExpression(test, consequent, alternate)))); + } } else if (any(parameters, function (p) { return p.rest; })) { @@ -1214,6 +1687,7 @@ exports.Compiler = function () { break; } parameters.splice(index, 1); + defaults.splice(index, 1); numParams = parameters.length; numArgs = genSym('numArgs'); reassignments = new JS.IfStatement(new JS.BinaryExpression('>', new JS.AssignmentExpression('=', numArgs, memberAccess(new JS.Identifier('arguments'), 'length')), new JS.Literal(numParams)), new JS.BlockStatement([stmt(new JS.AssignmentExpression('=', paramName, helpers.slice(new JS.Identifier('arguments'), new JS.Literal(index), new JS.BinaryExpression('-', numArgs, new JS.Literal(numParams - index)))))]), new JS.BlockStatement([stmt(new JS.AssignmentExpression('=', paramName, new JS.ArrayExpression([])))])); @@ -1222,33 +1696,47 @@ exports.Compiler = function () { i = i$1; reassignments.consequent.body.push(stmt(new JS.AssignmentExpression('=', p, new JS.MemberExpression(true, new JS.Identifier('arguments'), new JS.BinaryExpression('-', numArgs, new JS.Literal(numParams - index - i)))))); } - if (paramName['instanceof'](JS.Identifier) && in$(paramName.name, inScope)) + if (paramName['instanceof'](JS.Identifier) && in$(paramName.name, inScope)) { block.body.unshift(makeVarDeclaration([paramName])); + } block.body.unshift(reassignments); } if (any(parameters, function (p) { return p.rest; - })) + })) { throw new Error('Parameter lists may not have more than one rest operator'); + } } performedRewrite = false; if (this['instanceof'](CS.BoundFunction)) { - newThis = genSym('this'); - rewriteThis = generateMutatingWalker(function () { - if (this['instanceof'](JS.ThisExpression)) { - performedRewrite = true; - return newThis; - } else if (this['instanceof'](JS.FunctionExpression, JS.FunctionDeclaration)) { - return this; - } else { - return rewriteThis(this); - } - }); - rewriteThis(block); + if (options.targetES6 && (arrow = es6SafeArrowExpression(parameters, defaults, rest, block))) { + return arrow; + } else { + newThis = genSym('this'); + rewriteThis = generateMutatingWalker(function () { + if (this['instanceof'](JS.ThisExpression)) { + performedRewrite = true; + return newThis; + } else if (this['instanceof'](JS.FunctionExpression, JS.FunctionDeclaration)) { + return this; + } else { + return rewriteThis(this); + } + }); + rewriteThis(block); + } } - fn = new JS.FunctionExpression(null, parameters, block); + fn = funcExpr({ + params: parameters, + defaults: defaults, + rest: rest, + body: block + }); if (performedRewrite) { - return new JS.CallExpression(new JS.FunctionExpression(null, [newThis], new JS.BlockStatement([new JS.ReturnStatement(fn)])), [new JS.ThisExpression]); + return new JS.CallExpression(funcExpr({ + params: [newThis], + body: new JS.BlockStatement([new JS.ReturnStatement(fn)]) + }), [new JS.ThisExpression]); } else { return fn; } @@ -1258,8 +1746,12 @@ exports.Compiler = function () { [ CS.Rest, function (param$) { - var expression; - expression = param$.expression; + var cache$2, expression, options; + { + cache$2 = param$; + expression = cache$2.expression; + options = cache$2.options; + } return { rest: true, expression: expression, @@ -1271,7 +1763,7 @@ exports.Compiler = function () { [ CS.Class, function (param$) { - var _, args, block, body, c, cache$2, compile, ctorBody, ctorIndex, ctorRef, i, iife, instance, member, memberName, nameAssignee, params, parent, parentRef, protoAssignOp, protoMember, ps, rewriteThis; + var _, ancestry, args, block, body, c, cache$2, cache$3, classAssignment, classExpression, classIdentifier, compile, ctorBody, ctorIndex, ctorRef, helper, i, iife, instance, member, memberName, methods, nameAssignee, options, params, parent, parentIdentifier, parentRef, properties, protoAssignOp, protoMember, ps, rewriteThis, unmatched; var ctor, name; { cache$2 = param$; @@ -1281,13 +1773,48 @@ exports.Compiler = function () { ctor = cache$2.ctor; body = cache$2.body; compile = cache$2.compile; + options = cache$2.options; + ancestry = cache$2.ancestry; + } + if (options.targetES6) { + if (parent) { + parentIdentifier = new JS.Identifier(parent.name); + } + classIdentifier = name.name ? new JS.Identifier(name.name) : genSym('klass'); + cache$3 = findES6Methods(classIdentifier, ctor, null != parent, forceBlock(body)); + methods = cache$3.methods; + properties = cache$3.properties; + unmatched = cache$3.unmatched; + if (this.ctor && !this.ctor.expression['instanceof'](CS.Functions)) { + debugES6('' + describeClass(name, ancestry[0]) + ' was not converted to ES6 because its constructor is not a function expression.'); + } else if (this.boundMembers.length > 0) { + debugES6('' + describeClass(name, ancestry[0]) + ' was not converted to ES6 because it has bound function members.'); + } else if (nameAssignee && !nameAssignee['instanceof'](JS.Identifier)) { + debugES6('' + describeClass(name, ancestry[0]) + " was not converted to ES6 because it's being assigned to a compound name."); + } else if (parent && !(parent instanceof JS.Identifier)) { + debugES6('' + describeClass(name, ancestry[0]) + ' was not converted to ES6 because it extends an expression.'); + } else if (unmatched.length > 0) { + debugES6('' + describeClass(name, ancestry[0]) + " was not converted to ES6 because its body contains code that we couldn't map directly to methods, static methods, prototype properties, or class properties."); + } else { + classExpression = new JS.ClassExpression(classIdentifier instanceof JS.GenSym ? null : classIdentifier, parentIdentifier, new JS.ClassBody(methods)); + classAssignment = new JS.AssignmentExpression('=', classIdentifier, classExpression); + return properties.length === 0 ? classIdentifier instanceof JS.GenSym ? classExpression : (classAssignment.becomeStatement = function () { + var statement; + statement = new JS.ClassDeclaration(classIdentifier, parentIdentifier, new JS.ClassBody(methods)); + statement.becomeExpression = function () { + return classAssignment; + }; + return statement; + }, classAssignment) : (block = new JS.BlockStatement([stmt(classAssignment)].concat(map(properties, stmt)).concat(makeReturn(classIdentifier))), new JS.CallExpression(funcExpr({ body: block }).g(), [])); + } } args = []; params = []; parentRef = genSym('super'); block = forceBlock(body); - if (name['instanceof'](JS.Identifier) && in$(name.name, jsReserved)) + if (name['instanceof'](JS.Identifier) && in$(name.name, jsReserved)) { name = genSym(name.name); + } if (null != ctor) { for (var i$ = 0, length$ = block.body.length; i$ < length$; ++i$) { c = block.body[i$]; @@ -1300,12 +1827,16 @@ exports.Compiler = function () { block.body.splice(ctorIndex, 1, ctor); } else { ctorBody = new JS.BlockStatement([]); - if (null != parent) + if (null != parent) { ctorBody.body.push(stmt(new JS.CallExpression(memberAccess(parentRef, 'apply'), [ new JS.ThisExpression, new JS.Identifier('arguments') ]))); - ctor = new JS.FunctionDeclaration(name, [], ctorBody); + } + ctor = funcDecl({ + id: name, + body: ctorBody + }); ctorIndex = 0; block.body.unshift(ctor); } @@ -1332,10 +1863,13 @@ exports.Compiler = function () { }.call(this, []); member = memberAccess(new JS.ThisExpression, memberName); protoMember = memberAccess(memberAccess(name, 'prototype'), memberName); - fn = new JS.FunctionExpression(null, ps, new JS.BlockStatement([makeReturn(new JS.CallExpression(memberAccess(protoMember, 'apply'), [ - instance, - new JS.Identifier('arguments') - ]))])); + fn = funcExpr({ + params: ps, + body: new JS.BlockStatement([makeReturn(new JS.CallExpression(memberAccess(protoMember, 'apply'), [ + instance, + new JS.Identifier('arguments') + ]))]) + }); ctor.body.body.unshift(stmt(new JS.AssignmentExpression('=', member, fn))); } ctor.body.body.unshift(stmt(new JS.AssignmentExpression('=', instance, new JS.ThisExpression))); @@ -1343,7 +1877,8 @@ exports.Compiler = function () { if (null != parent) { params.push(parentRef); args.push(parent); - block.body.unshift(stmt(helpers['extends'](name, parentRef))); + helper = options.targetES6 ? 'extendsES6' : 'extends'; + block.body.unshift(stmt(helpers[helper](name, parentRef))); } block.body.push(new JS.ReturnStatement(new JS.ThisExpression)); rewriteThis = generateMutatingWalker(function () { @@ -1356,9 +1891,12 @@ exports.Compiler = function () { } }); rewriteThis(block); - iife = new JS.CallExpression(new JS.FunctionExpression(null, params, block).g(), args); + iife = new JS.CallExpression(funcExpr({ + params: params, + body: block + }).g(), args); if (null != nameAssignee) { - return assignment(nameAssignee, iife); + return assignment(nameAssignee, iife, options); } else { return iife; } @@ -1371,9 +1909,18 @@ exports.Compiler = function () { expression = param$.expression; tmpName = genSym('class'); if (this.expression['instanceof'](CS.Functions)) { - return new JS.FunctionDeclaration(tmpName, expression.params, forceBlock(expression.body)); + return funcDecl({ + id: tmpName, + params: expression.params, + defaults: expression.defaults, + rest: expression.rest, + body: forceBlock(expression.body) + }); } else { - return new JS.FunctionDeclaration(tmpName, [], new JS.BlockStatement([])); + return funcDecl({ + id: tmpName, + body: new JS.BlockStatement([]) + }); } } ], @@ -1398,14 +1945,15 @@ exports.Compiler = function () { [ CS.AssignOp, function (param$) { - var ancestry, assignee, cache$2, expression; + var ancestry, assignee, cache$2, expression, options; { cache$2 = param$; assignee = cache$2.assignee; expression = cache$2.expression; ancestry = cache$2.ancestry; + options = cache$2.options; } - return assignment(assignee, expression, usedAsExpression(this, ancestry)); + return assignment(assignee, expression, options, usedAsExpression(this, ancestry)); } ], [ @@ -1454,8 +2002,9 @@ exports.Compiler = function () { throw new Error('Unrecognised compound assignment operator'); } }.call(this); - if ((op === '&&' || op === '||' || op === '?') && assignee['instanceof'](JS.Identifier) && !in$(assignee.name, inScope)) + if ((op === '&&' || op === '||' || op === '?') && assignee['instanceof'](JS.Identifier) && !in$(assignee.name, inScope)) { throw new Error('the variable "' + assignee.name + '" can\'t be assigned with ?= because it has not been defined.'); + } switch (op) { case '&&': case '||': @@ -1479,8 +2028,9 @@ exports.Compiler = function () { expression = cache$2.expression; compile = cache$2.compile; } - if (!this.expression.left['instanceof'](CS.ComparisonOps)) + if (!this.expression.left['instanceof'](CS.ComparisonOps)) { return expression; + } left = expression.left.right; lhs = compile(new CS.ChainedComparisonOp(this.expression.left)); if (needsCaching(this.expression.left.right)) { @@ -1494,18 +2044,103 @@ exports.Compiler = function () { return new JS.LogicalExpression('&&', lhs, new JS.BinaryExpression(expression.operator, left, expression.right)); } ], + [ + CS.Super, + function (param$) { + var ancestry, args, cache$2, calledExprs, classAssignNode, className, classNode, classPositionInAncestry, compile, functionName, inScope, isProtoMemberAccess, isStatic, options, tagForES6; + { + cache$2 = param$; + args = cache$2['arguments']; + compile = cache$2.compile; + inScope = cache$2.inScope; + ancestry = cache$2.ancestry; + options = cache$2.options; + } + tagForES6 = function (node) { + node.toES6Super = function () { + var callee; + callee = functionName === 'constructor' ? new JS.Identifier('super') : memberAccess(new JS.Identifier('super'), functionName); + args = args.length > 0 ? map(args, expr) : [new JS.SpreadElement(new JS.Identifier('arguments'))]; + return new JS.CallExpression(callee, args); + }; + return node; + }; + classNode = find(ancestry, function (node) { + return node instanceof CS.Class || node.assignee instanceof CS.ProtoMemberAccessOp; + }); + classPositionInAncestry = ancestry.indexOf(classNode); + classAssignNode = ancestry[ancestry.indexOf(classNode) - 1]; + className = null; + functionName = null; + isStatic = false; + isProtoMemberAccess = classNode.assignee instanceof CS.ProtoMemberAccessOp; + switch (false) { + case !(classNode instanceof CS.Class): + className = classNode.name.data; + functionName = function () { + var assignableNode, i, n, searchableNodes; + searchableNodes = []; + for (var i$ = 0, length$ = ancestry.length; i$ < length$; ++i$) { + i = ancestry[i$]; + n = i$; + if (n === classPositionInAncestry) { + break; + } + searchableNodes.unshift(i); + } + assignableNode = find(searchableNodes, function (node) { + return null != node.assignee; + }); + if (!(null != assignableNode)) { + return 'constructor'; + } + switch (false) { + case !(assignableNode.assignee instanceof CS.MemberAccessOp): + isStatic = true; + return assignableNode.assignee.memberName; + case !(assignableNode.assignee instanceof CS.Identifier): + return assignableNode.assignee.data; + } + }(); + break; + case !(classNode instanceof CS.AssignOp): + isStatic = false; + className = classNode.assignee.expression.data; + functionName = classNode.assignee.memberName; + } + if (className === 'class') { + if (args.length > 0) { + calledExprs = [new JS.ThisExpression].concat(map(args, expr)); + return tagForES6(new JS.CallExpression(memberAccess(memberAccess(memberAccess(new JS.Identifier(classNode.parent.data), 'prototype'), functionName), 'call'), calledExprs)); + } else { + return tagForES6(new JS.CallExpression(memberAccess(memberAccess(memberAccess(new JS.Identifier(classNode.parent.data), 'prototype'), functionName), 'apply'), [ + new JS.ThisExpression, + new JS.Identifier('arguments') + ])); + } + } + return tagForES6(isStatic ? args.length === 0 ? new JS.CallExpression(memberAccess(memberAccess(memberAccess(memberAccess(new JS.Identifier(className), '__super__'), 'constructor'), functionName), 'apply'), [ + new JS.ThisExpression, + new JS.Identifier('arguments') + ]) : (calledExprs = [new JS.ThisExpression].concat(map(args, expr)), new JS.CallExpression(memberAccess(memberAccess(memberAccess(memberAccess(new JS.Identifier(className), '__super__'), 'constructor'), functionName), 'call'), calledExprs)) : args.length === 0 ? new JS.CallExpression(memberAccess(memberAccess(memberAccess(new JS.Identifier(className), '__super__'), functionName), 'apply'), [ + new JS.ThisExpression, + new JS.Identifier('arguments') + ]) : (calledExprs = [new JS.ThisExpression].concat(map(args, expr)), new JS.CallExpression(memberAccess(memberAccess(memberAccess(new JS.Identifier(className), '__super__'), functionName), 'call'), calledExprs))); + } + ], [ CS.FunctionApplication, function (param$) { - var args, cache$2, compile, context, lhs; + var args, cache$2, compile, context, lhs, options; var fn; { cache$2 = param$; fn = cache$2['function']; args = cache$2['arguments']; compile = cache$2.compile; + options = cache$2.options; } - if (any(args, function (m) { + if (!options.targetES6 && any(args, function (m) { return m.spread; })) { lhs = this['function']; @@ -1528,7 +2163,9 @@ exports.Compiler = function () { } else if (hasSoak(this)) { return compile(generateSoak(this)); } else { - return new JS.CallExpression(expr(fn), map(args, expr)); + return new JS.CallExpression(expr(fn), map(args, function (a) { + return expr(options.targetES6 && a.spread ? new JS.SpreadElement(a.expression) : a); + })); } } ], @@ -1578,8 +2215,9 @@ exports.Compiler = function () { accum$.push(flag); } return accum$; - }.call(this, []).join('')) + }.call(this, []).join('')) { args.push(new JS.Literal(flags)); + } return new JS.NewExpression(new JS.Identifier('RegExp'), args); } ], @@ -1621,8 +2259,9 @@ exports.Compiler = function () { while (null != (null != leftmost.left ? leftmost.left.left : void 0)) { leftmost = leftmost.left; } - if (!(leftmost.left['instanceof'](JS.Literal) && 'string' === typeof leftmost.left.value)) + if (!(leftmost.left['instanceof'](JS.Literal) && 'string' === typeof leftmost.left.value)) { leftmost.left = new JS.BinaryExpression('+', new JS.Literal(''), leftmost.left); + } } return plusOp; } @@ -1641,7 +2280,7 @@ exports.Compiler = function () { return expr(compile(generateSoak(this))); } else { access = memberAccess(expression, this.memberName); - if (this.raw) { + if (this.raw && this.expression.raw) { access.property.raw = this.memberName; access.property.line = this.line; offset = this.raw.length - this.memberName.length; @@ -1718,8 +2357,9 @@ exports.Compiler = function () { right = cache$2.right; } args = null != left ? [left] : null != right ? [new JS.Literal(0)] : []; - if (null != right) + if (null != right) { args.push(this.isInclusive ? right['instanceof'](JS.Literal) && typeof right.data === 'number' ? new JS.Literal(right.data + 1) : new JS.LogicalExpression('||', new JS.BinaryExpression('+', new JS.UnaryExpression('+', right), new JS.Literal(1)), new JS.Literal(9e9)) : right); + } return new JS.CallExpression(memberAccess(expression, 'slice'), args); } ], @@ -1739,8 +2379,9 @@ exports.Compiler = function () { right = expr(right); e = needsCaching(this.left) ? genSym('cache') : left; condition = new JS.BinaryExpression('!=', new JS.Literal(null), e); - if (e['instanceof'](JS.Identifier) && !in$(e.name, inScope)) + if (e['instanceof'](JS.Identifier) && !in$(e.name, inScope)) { condition = new JS.LogicalExpression('&&', new JS.BinaryExpression('!==', new JS.Literal('undefined'), new JS.UnaryExpression('typeof', e)), condition); + } node = new JS.ConditionalExpression(condition, e, right); if (e === left) { return node; @@ -1931,7 +2572,9 @@ exports.Compiler = function () { left = cache$2.left; right = cache$2.right; } - if (right['instanceof'](JS.ArrayExpression) && right.elements.length < 5) { + if (right['instanceof'](JS.ArrayExpression) && right.elements.length < 5 && all(right.elements, function (elt) { + return !(elt instanceof JS.SpreadElement); + })) { switch (right.elements.length) { case 0: if (needsCaching(this.left)) { @@ -1964,13 +2607,15 @@ exports.Compiler = function () { [ CS.ExtendsOp, function (param$) { - var cache$2, left, right; + var cache$2, helper, left, options, right; { cache$2 = param$; left = cache$2.left; right = cache$2.right; + options = cache$2.options; } - return helpers['extends'](expr(left), expr(right)); + helper = options.targetES6 ? 'extendsES6' : 'extends'; + return helpers[helper](expr(left), expr(right)); } ], [ @@ -2315,8 +2960,9 @@ exports.Compiler = function () { var defaultRule, generateSymbols, walk; walk = function (fn, inScope, ancestry, options) { var child, childName, children, jsNode, member; - if ((null != ancestry[0] ? ancestry[0]['instanceof'](CS.Function, CS.BoundFunction) : void 0) && this === ancestry[0].body) + if ((null != ancestry[0] ? ancestry[0]['instanceof'](CS.Function, CS.BoundFunction) : void 0) && this === ancestry[0].body) { inScope = union(inScope, concatMap(ancestry[0].parameters, beingDeclared)); + } ancestry.unshift(this); children = {}; for (var i$ = 0, length$ = this.childNodes.length; i$ < length$; ++i$) { @@ -2326,18 +2972,18 @@ exports.Compiler = function () { children[childName] = in$(childName, this.listMembers) ? function (accum$) { for (var i$1 = 0, length$1 = this[childName].length; i$1 < length$1; ++i$1) { member = this[childName][i$1]; - jsNode = walk.call(member, fn, inScope, ancestry); + jsNode = walk.call(member, fn, inScope, ancestry, options); inScope = union(inScope, envEnrichments(member, inScope)); accum$.push(jsNode); } return accum$; - }.call(this, []) : (child = this[childName], jsNode = walk.call(child, fn, inScope, ancestry), inScope = union(inScope, envEnrichments(child, inScope)), jsNode); + }.call(this, []) : (child = this[childName], jsNode = walk.call(child, fn, inScope, ancestry, options), inScope = union(inScope, envEnrichments(child, inScope)), jsNode); } children.inScope = inScope; children.ancestry = ancestry; children.options = options; children.compile = function (node) { - return walk.call(node, fn, inScope, ancestry); + return walk.call(node, fn, inScope, ancestry, options); }; ancestry.shift(); jsNode = fn.call(this, children); @@ -2387,7 +3033,7 @@ exports.Compiler = function () { declaredSymbols = cache$2.declaredSymbols; usedSymbols = cache$2.usedSymbols; nsCounters = cache$2.nsCounters; - newNode = this['instanceof'](JS.GenSym) ? (newNode = new JS.Identifier(generateName(this, state)), usedSymbols.push(newNode.name), newNode) : isScopeBoundary(this) ? (params = concatMap(this.params, collectIdentifiers), nsCounters_ = {}, function (accum$) { + newNode = this['instanceof'](JS.GenSym) ? (newNode = new JS.Identifier(generateName(this, state)), usedSymbols.push(newNode.name), newNode) : isDownwardScopeBoundary(this) ? (params = concatMap(this.params, collectIdentifiers), nsCounters_ = {}, function (accum$) { for (k in nsCounters) { if (!isOwn$(nsCounters, k)) continue; @@ -2413,10 +3059,11 @@ exports.Compiler = function () { program = generateChildSymbols(jsAST, state); if (program['instanceof'](JS.Program)) { needed = nub(difference(concatMap(program.body, declarationsNeededRecursive), inScope)); - if (needed.length > 0) + if (needed.length > 0) { program.body.unshift(makeVarDeclaration(needed.map(function (n) { return new JS.Identifier(n); }))); + } } return program; }; diff --git a/lib/functional-helpers.js b/lib/functional-helpers.js index be170885..edd50c31 100644 --- a/lib/functional-helpers.js +++ b/lib/functional-helpers.js @@ -1,152 +1,186 @@ // Generated by CoffeeScript 2.0.0-beta9-dev var concat, foldl, map, nub, span; -this.any = function (list, fn) { - var e; - for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { - e = list[i$]; - if (fn(e)) - return true; - } - return false; -}; -this.all = function (list, fn) { - var e; - for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { - e = list[i$]; - if (!fn(e)) - return false; - } - return true; -}; -this.foldl = foldl = function (memo, list, fn) { - var i; - for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { - i = list[i$]; - memo = fn(memo, i); - } - return memo; -}; -this.foldl1 = function (list, fn) { - return foldl(list[0], list.slice(1), fn); -}; -this.map = map = function (list, fn) { - var e; - return function (accum$) { +module.exports = { + any: function (list, fn) { + var e; for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { e = list[i$]; - accum$.push(fn(e)); + if (fn(e)) { + return true; + } } - return accum$; - }.call(this, []); -}; -this.concat = concat = function (list) { - var cache$; - return (cache$ = []).concat.apply(cache$, [].slice.call(list)); -}; -this.concatMap = function (list, fn) { - return concat(map(list, fn)); -}; -this.intersect = function (listA, listB) { - var a; - return function (accum$) { - for (var i$ = 0, length$ = listA.length; i$ < length$; ++i$) { - a = listA[i$]; - if (!in$(a, listB)) - continue; - accum$.push(a); + return false; + }, + all: function (list, fn) { + var e; + for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { + e = list[i$]; + if (!fn(e)) { + return false; + } } - return accum$; - }.call(this, []); -}; -this.difference = function (listA, listB) { - var a; - return function (accum$) { - for (var i$ = 0, length$ = listA.length; i$ < length$; ++i$) { - a = listA[i$]; - if (!!in$(a, listB)) - continue; - accum$.push(a); + return true; + }, + find: function (list, fn) { + var e; + for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { + e = list[i$]; + if (fn(e)) { + return e; + } } - return accum$; - }.call(this, []); -}; -this.nub = nub = function (list) { - var i, result; - result = []; - for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { - i = list[i$]; - if (!!in$(i, result)) - continue; - result.push(i); - } - return result; -}; -this.union = function (listA, listB) { - var b; - return listA.concat(function (accum$) { - for (var cache$ = nub(listB), i$ = 0, length$ = cache$.length; i$ < length$; ++i$) { - b = cache$[i$]; - if (!!in$(b, listA)) + return null; + }, + foldl: foldl = function (memo, list, fn) { + var i; + for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { + i = list[i$]; + memo = fn(memo, i); + } + return memo; + }, + foldl1: function (list, fn) { + return foldl(list[0], list.slice(1), fn); + }, + map: map = function (list, fn) { + var e; + return function (accum$) { + for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { + e = list[i$]; + accum$.push(fn(e)); + } + return accum$; + }.call(this, []); + }, + concat: concat = function (list) { + var cache$; + return (cache$ = []).concat.apply(cache$, [].slice.call(list)); + }, + concatMap: function (list, fn) { + return concat(map(list, fn)); + }, + intersect: function (listA, listB) { + var a; + return function (accum$) { + for (var i$ = 0, length$ = listA.length; i$ < length$; ++i$) { + a = listA[i$]; + if (!in$(a, listB)) + continue; + accum$.push(a); + } + return accum$; + }.call(this, []); + }, + difference: function (listA, listB) { + var a; + return function (accum$) { + for (var i$ = 0, length$ = listA.length; i$ < length$; ++i$) { + a = listA[i$]; + if (!!in$(a, listB)) + continue; + accum$.push(a); + } + return accum$; + }.call(this, []); + }, + nub: nub = function (list) { + var i, result; + result = []; + for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { + i = list[i$]; + if (!!in$(i, result)) continue; - accum$.push(b); + result.push(i); } - return accum$; - }.call(this, [])); -}; -this.flip = function (fn) { - return function (b, a) { - return fn.call(this, a, b); - }; -}; -this.owns = function (hop) { - return function (a, b) { - return hop.call(a, b); - }; -}({}.hasOwnProperty); -this.span = span = function (list, f) { - var cache$, ys, zs; - if (list.length === 0) { - return [ - [], - [] - ]; - } else if (f(list[0])) { - cache$ = span(list.slice(1), f); - ys = cache$[0]; - zs = cache$[1]; + return result; + }, + union: function (listA, listB) { + var b; + return listA.concat(function (accum$) { + for (var cache$ = nub(listB), i$ = 0, length$ = cache$.length; i$ < length$; ++i$) { + b = cache$[i$]; + if (!!in$(b, listA)) + continue; + accum$.push(b); + } + return accum$; + }.call(this, [])); + }, + flip: function (fn) { + return function (b, a) { + return fn.call(this, a, b); + }; + }, + owns: function (hop) { + return function (a, b) { + return hop.call(a, b); + }; + }({}.hasOwnProperty), + span: span = function (list, f) { + var cache$, ys, zs; + if (list.length === 0) { + return [ + [], + [] + ]; + } else if (f(list[0])) { + cache$ = span(list.slice(1), f); + ys = cache$[0]; + zs = cache$[1]; + return [ + [list[0]].concat([].slice.call(ys)), + zs + ]; + } else { + return [ + [], + list + ]; + } + }, + divMod: function (a, b) { + var c, div, mod; + c = a % b; + mod = c < 0 ? c + b : c; + div = Math.floor(a / b); return [ - [list[0]].concat([].slice.call(ys)), - zs + div, + mod ]; - } else { - return [ + }, + partition: function (list, fn) { + var item, result; + result = [ [], - list + [] ]; + for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { + item = list[i$]; + result[+!fn(item)].push(item); + } + return result; + }, + zip: function (listA, listB) { + var i, len; + len = Math.max(listA.length, listB.length); + return function (accum$) { + for (var cache$ = function () { + var accum$1; + accum$1 = []; + for (var i$ = 0; 0 <= len ? i$ < len : i$ > len; 0 <= len ? ++i$ : --i$) + accum$1.push(i$); + return accum$1; + }.apply(this, arguments), i$ = 0, length$ = cache$.length; i$ < length$; ++i$) { + i = cache$[i$]; + accum$.push([ + listA[i], + listB[i] + ]); + } + return accum$; + }.call(this, []); } }; -this.divMod = function (a, b) { - var c, div, mod; - c = a % b; - mod = c < 0 ? c + b : c; - div = Math.floor(a / b); - return [ - div, - mod - ]; -}; -this.partition = function (list, fn) { - var item, result; - result = [ - [], - [] - ]; - for (var i$ = 0, length$ = list.length; i$ < length$; ++i$) { - item = list[i$]; - result[+!fn(item)].push(item); - } - return result; -}; function in$(member, list) { for (var i = 0, length = list.length; i < length; ++i) if (i in list && list[i] === member) diff --git a/lib/helpers.js b/lib/helpers.js index 54777ba9..c08f13d0 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -24,7 +24,7 @@ colourise = function (colour, str) { return str; } }; -this.numberLines = numberLines = function (input, startLine) { +exports.numberLines = numberLines = function (input, startLine) { var currLine, i, line, lines, numbered, pad, padSize; if (null == startLine) startLine = 1; @@ -45,32 +45,49 @@ this.numberLines = numberLines = function (input, startLine) { cleanMarkers = function (str) { return str.replace(/[\uEFEF\uEFFE\uEFFF]/g, ''); }; -this.humanReadable = humanReadable = function (str) { +exports.humanReadable = humanReadable = function (str) { return str.replace(/\uEFEF/g, '(INDENT)').replace(/\uEFFE/g, '(DEDENT)').replace(/\uEFFF/g, '(TERM)'); }; -this.formatParserError = function (input, e) { - var found, message, realColumn, unicode; - realColumn = cleanMarkers(('' + input.split('\n')[e.line - 1] + '\n').slice(0, e.column)).length; - if (!(null != e.found)) - return 'Syntax error on line ' + e.line + ', column ' + realColumn + ': unexpected end of input'; +exports.formatParserError = function (input, e) { + var column, found, line, lines, message, offset, realColumn, unicode; + lines = input.split('\n'); + line = e.line - 1; + column = e.column; + offset = e.offset; + while (offset > 0) { + if (offset > lines[line].length + 1) { + offset -= lines[line].length + 1; + line += 1; + } else { + column += offset; + offset = 0; + } + } + realColumn = cleanMarkers(('' + lines[line] + '\n').slice(0, column)).length; + line += 1; + if (!(null != e.found)) { + return 'Syntax error on line ' + line + ', column ' + realColumn + ': unexpected end of input'; + } found = JSON.stringify(humanReadable(e.found)); found = found.replace(/^"|"$/g, '').replace(/'/g, "\\'").replace(/\\"/g, '"'); unicode = e.found.charCodeAt(0).toString(16).toUpperCase(); unicode = '\\u' + '0000'.slice(unicode.length) + unicode; - message = 'Syntax error on line ' + e.line + ', column ' + realColumn + ": unexpected '" + found + "' (" + unicode + ')'; - return '' + message + '\n' + pointToErrorLocation(input, e.line, realColumn); + message = 'Syntax error on line ' + line + ', column ' + realColumn + ": unexpected '" + found + "' (" + unicode + ')'; + return '' + message + '\n' + pointToErrorLocation(input, line, realColumn); }; -this.pointToErrorLocation = pointToErrorLocation = function (source, line, column, numLinesOfContext) { +exports.pointToErrorLocation = pointToErrorLocation = function (source, line, column, numLinesOfContext) { var currentLineOffset, lines, numberedLines, padSize, postLines, preLines, startLine; if (null == numLinesOfContext) numLinesOfContext = 3; lines = source.split('\n'); - if (!lines[lines.length - 1]) + if (!lines[lines.length - 1]) { lines.pop(); + } currentLineOffset = line - 1; startLine = currentLineOffset - numLinesOfContext; - if (startLine < 0) + if (startLine < 0) { startLine = 0; + } preLines = lines.slice(startLine, +currentLineOffset + 1 || 9e9); preLines[preLines.length - 1] = colourise('yellow', preLines[preLines.length - 1]); postLines = lines.slice(currentLineOffset + 1, +(currentLineOffset + numLinesOfContext) + 1 || 9e9); @@ -81,7 +98,7 @@ this.pointToErrorLocation = pointToErrorLocation = function (source, line, colum padSize = (currentLineOffset + 1 + postLines.length).toString(10).length; return [].slice.call(preLines).concat(['' + colourise('red', Array(padSize + 1).join('^')) + ' : ' + Array(column).join(' ') + colourise('red', '^')], [].slice.call(postLines)).join('\n'); }; -this.beingDeclared = beingDeclared = function (assignment) { +exports.beingDeclared = beingDeclared = function (assignment) { switch (false) { case !!(null != assignment): return []; @@ -101,7 +118,7 @@ this.beingDeclared = beingDeclared = function (assignment) { throw new Error('beingDeclared: Non-exhaustive patterns in case: ' + assignment.className); } }; -this.declarationsFor = function (node, inScope) { +exports.declarationsFor = function (node, inScope) { var vars; vars = envEnrichments(node, inScope); return foldl(new CS.Undefined().g(), vars, function (expr, v) { @@ -127,7 +144,7 @@ usedAsExpression_ = function (ancestors) { return true; } }; -this.usedAsExpression = usedAsExpression = function (node, ancestors) { +exports.usedAsExpression = usedAsExpression = function (node, ancestors) { return usedAsExpression_.call(node, ancestors); }; envEnrichments_ = function (inScope) { @@ -180,7 +197,7 @@ envEnrichments_ = function (inScope) { }.call(this)); return difference(possibilities, inScope); }; -this.envEnrichments = envEnrichments = function (node) { +exports.envEnrichments = envEnrichments = function (node) { var args; args = arguments.length > 1 ? [].slice.call(arguments, 1) : []; if (null != node) { diff --git a/lib/js-nodes.js b/lib/js-nodes.js index fdfe45a3..582ade4e 100644 --- a/lib/js-nodes.js +++ b/lib/js-nodes.js @@ -1,5 +1,5 @@ // Generated by CoffeeScript 2.0.0-beta9-dev -var ArrayExpression, AssignmentExpression, BinaryExpression, BlockStatement, cache$, cache$1, CallExpression, createNode, ctor, difference, exports, FunctionDeclaration, FunctionExpression, GenSym, handleLists, handlePrimitives, Identifier, isStatement, Literal, LogicalExpression, MemberExpression, NewExpression, node, nodeData, Nodes, ObjectExpression, params, Program, SequenceExpression, SwitchCase, SwitchStatement, TryStatement, UnaryExpression, UpdateExpression, VariableDeclaration; +var ArrayExpression, ArrayPattern, ArrowFunctionExpression, AssignmentExpression, BinaryExpression, BlockStatement, cache$, cache$1, CallExpression, ClassBody, createNode, ctor, difference, exports, FunctionDeclaration, FunctionExpression, GenSym, handleLists, handlePrimitives, Identifier, isStatement, Literal, LogicalExpression, MemberExpression, NewExpression, node, nodeData, Nodes, ObjectExpression, ObjectPattern, params, Program, SequenceExpression, SwitchCase, SwitchStatement, TryStatement, UnaryExpression, UpdateExpression, VariableDeclaration; difference = require('./functional-helpers').difference; exports = null != ('undefined' !== typeof module && null != module ? module.exports : void 0) ? 'undefined' !== typeof module && null != module ? module.exports : void 0 : this; createNode = function (type, props) { @@ -18,7 +18,7 @@ createNode = function (type, props) { return class$; }(Nodes); }; -this.Nodes = Nodes = function () { +exports.Nodes = Nodes = function () { function Nodes() { } Nodes.prototype.listMembers = []; @@ -34,10 +34,8 @@ this.Nodes = Nodes = function () { return false; }; Nodes.prototype.toBasicObject = function () { - var child, obj, p; + var child, obj, p, property; obj = { type: this.type }; - if (null != this.leadingComments) - obj.leadingComments = this.leadingComments; for (var i$ = 0, length$ = this.childNodes.length; i$ < length$; ++i$) { child = this.childNodes[i$]; if (in$(child, this.listMembers)) { @@ -52,22 +50,47 @@ this.Nodes = Nodes = function () { obj[child] = null != this[child] ? this[child].toBasicObject() : void 0; } } - if (null != this.line && null != this.column) + if (null != this.line && null != this.column) { obj.loc = { start: { line: this.line, column: this.column } }; - if (null != this.offset) + } + if (null != this.offset) { obj.range = [ this.offset, null != this.raw ? this.offset + this.raw.length : void 0 ]; - if (null != this.raw) - obj.raw = this.raw; + } + for (var cache$ = [ + 'leadingComments', + 'raw', + 'expression', + 'generator', + 'static', + 'shorthand' + ], i$2 = 0, length$2 = cache$.length; i$2 < length$2; ++i$2) { + property = cache$[i$2]; + if (null != this[property] && !in$(property, this.childNodes)) { + obj[property] = this[property]; + } + } return obj; }; + Nodes.prototype.shallowCopy = function () { + var c, k, v; + c = new this.constructor; + for (k in this) { + v = this[k]; + if (k && in$(k, this.listMembers)) { + k = k.slice(); + } + c[k] = v; + } + return c; + }; return Nodes; }(); nodeData = [ @@ -76,6 +99,21 @@ nodeData = [ false, ['elements'] ], + [ + 'ArrayPattern', + false, + ['elements'] + ], + [ + 'ArrowFunctionExpression', + false, + [ + 'params', + 'defaults', + 'rest', + 'body' + ] + ], [ 'AssignmentExpression', false, @@ -120,6 +158,29 @@ nodeData = [ 'body' ] ], + [ + 'ClassBody', + true, + ['body'] + ], + [ + 'ClassDeclaration', + true, + [ + 'id', + 'superClass', + 'body' + ] + ], + [ + 'ClassExpression', + false, + [ + 'id', + 'superClass', + 'body' + ] + ], [ 'ConditionalExpression', false, @@ -166,6 +227,15 @@ nodeData = [ 'body' ] ], + [ + 'ForOfStatement', + true, + [ + 'left', + 'right', + 'body' + ] + ], [ 'ForStatement', true, @@ -182,6 +252,8 @@ nodeData = [ [ 'id', 'params', + 'defaults', + 'rest', 'body' ] ], @@ -191,6 +263,8 @@ nodeData = [ [ 'id', 'params', + 'defaults', + 'rest', 'body' ] ], @@ -247,6 +321,14 @@ nodeData = [ 'property' ] ], + [ + 'MethodDefinition', + false, + [ + 'key', + 'value' + ] + ], [ 'NewExpression', false, @@ -260,6 +342,11 @@ nodeData = [ false, ['properties'] ], + [ + 'ObjectPattern', + false, + ['properties'] + ], [ 'Program', true, @@ -273,6 +360,11 @@ nodeData = [ 'value' ] ], + [ + 'RestElement', + true, + ['argument'] + ], [ 'ReturnStatement', true, @@ -283,6 +375,11 @@ nodeData = [ false, ['expressions'] ], + [ + 'SpreadElement', + false, + ['argument'] + ], [ 'SwitchCase', true, @@ -366,6 +463,11 @@ nodeData = [ 'object', 'body' ] + ], + [ + 'YieldExpression', + false, + ['argument'] ] ]; for (var i$ = 0, length$ = nodeData.length; i$ < length$; ++i$) { @@ -388,11 +490,13 @@ FunctionExpression = cache$1.FunctionExpression; CallExpression = cache$1.CallExpression; SequenceExpression = cache$1.SequenceExpression; ArrayExpression = cache$1.ArrayExpression; +ArrayPattern = cache$1.ArrayPattern; BinaryExpression = cache$1.BinaryExpression; UnaryExpression = cache$1.UnaryExpression; NewExpression = cache$1.NewExpression; VariableDeclaration = cache$1.VariableDeclaration; ObjectExpression = cache$1.ObjectExpression; +ObjectPattern = cache$1.ObjectPattern; MemberExpression = cache$1.MemberExpression; UpdateExpression = cache$1.UpdateExpression; AssignmentExpression = cache$1.AssignmentExpression; @@ -403,6 +507,8 @@ VariableDeclaration = cache$1.VariableDeclaration; SwitchStatement = cache$1.SwitchStatement; SwitchCase = cache$1.SwitchCase; TryStatement = cache$1.TryStatement; +ArrowFunctionExpression = cache$1.ArrowFunctionExpression; +ClassBody = cache$1.ClassBody; handlePrimitives = function (ctor, primitives) { ctor.prototype.childNodes = difference(ctor.prototype.childNodes, primitives); return ctor.prototype.toBasicObject = function () { @@ -435,12 +541,25 @@ handleLists = function (ctor, listProps) { return ctor.prototype.listMembers = listProps; }; handleLists(ArrayExpression, ['elements']); +handleLists(ArrayPattern, ['elements']); +handleLists(ArrowFunctionExpression, [ + 'params', + 'defaults' +]); handleLists(BlockStatement, ['body']); handleLists(CallExpression, ['arguments']); -handleLists(FunctionDeclaration, ['params']); -handleLists(FunctionExpression, ['params']); +handleLists(ClassBody, ['body']); +handleLists(FunctionDeclaration, [ + 'params', + 'defaults' +]); +handleLists(FunctionExpression, [ + 'params', + 'defaults' +]); handleLists(NewExpression, ['arguments']); handleLists(ObjectExpression, ['properties']); +handleLists(ObjectPattern, ['properties']); handleLists(Program, ['body']); handleLists(SequenceExpression, ['expressions']); handleLists(SwitchCase, ['consequent']); diff --git a/lib/module.js b/lib/module.js index 3d13cc61..0245f1f3 100644 --- a/lib/module.js +++ b/lib/module.js @@ -47,7 +47,8 @@ CoffeeScript = { preprocessed = Preprocessor.process(coffee, { literate: options.literate }); parsed = Parser.parse(preprocessed, { raw: options.raw, - inputSource: options.inputSource + inputSource: options.inputSource, + targetES6: options.targetES6 }); if (options.optimise) { return Optimiser.optimise(parsed); @@ -56,8 +57,9 @@ CoffeeScript = { } } catch (e$2) { e = e$2; - if (!(e instanceof Parser.SyntaxError)) + if (!(e instanceof Parser.SyntaxError)) { throw e; + } throw new Error(formatParserError(preprocessed, e)); } }, @@ -72,10 +74,12 @@ CoffeeScript = { name = 'unknown'; if (null == options) options = {}; - if (!(null != escodegen)) + if (!(null != escodegen)) { throw new Error('escodegen not found: run `npm install escodegen`'); - if (!{}.hasOwnProperty.call(jsAst, 'type')) + } + if (!{}.hasOwnProperty.call(jsAst, 'type')) { jsAst = jsAst.toBasicObject(); + } targetName = options.sourceMapFile || options.sourceMap && options.output.match(/^.*[\\\/]([^\\\/]+)$/)[1]; return escodegen.generate(jsAst, { comment: !options.compact, diff --git a/lib/nodes.js b/lib/nodes.js index 6bf3a375..46dba57e 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -44,8 +44,9 @@ createNodes = function (subclasses, superclasses) { i = i$; this[param] = arguments[i]; } - if (null != this.initialise) + if (null != this.initialise) { this.initialise.apply(this, arguments); + } return this; }; function class$() { @@ -55,10 +56,12 @@ createNodes = function (subclasses, superclasses) { class$.superclasses = superclasses; return class$; }(superclass); - if (null != ('undefined' !== typeof specs && null != specs ? specs[0] : void 0)) + if (null != ('undefined' !== typeof specs && null != specs ? specs[0] : void 0)) { klass.prototype.childNodes = specs[0]; - if (isCategory) + } + if (isCategory) { createNodes(specs[1], [klass].concat([].slice.call(superclasses))); + } return exports[className] = klass; }(className)); } @@ -368,17 +371,20 @@ Nodes.prototype.listMembers = []; Nodes.prototype.toBasicObject = function () { var child, obj, p; obj = { type: this.className }; - if (null != this.line) + if (null != this.line) { obj.line = this.line; - if (null != this.column) + } + if (null != this.column) { obj.column = this.column; + } if (null != this.raw) { obj.raw = this.raw; - if (null != this.offset) + if (null != this.offset) { obj.range = [ this.offset, this.offset + this.raw.length ]; + } } for (var i$ = 0, length$ = this.childNodes.length; i$ < length$; ++i$) { child = this.childNodes[i$]; @@ -504,7 +510,7 @@ Class.prototype.initialise = function () { else this.boundMembers = []; this.name = new GenSym('class'); - if (null != this.nameAssignee) + if (null != this.nameAssignee) { return this.name = function () { switch (false) { case !this.nameAssignee['instanceof'](Identifier): @@ -515,6 +521,7 @@ Class.prototype.initialise = function () { return this.name; } }.call(this); + } }; Class.prototype.childNodes.push('name'); ObjectInitialiser.prototype.keys = function () { diff --git a/lib/optimiser.js b/lib/optimiser.js index 2d4efc24..588a2c7a 100644 --- a/lib/optimiser.js +++ b/lib/optimiser.js @@ -37,8 +37,9 @@ makeDispatcher = function (defaultValue, handlers, defaultHandler) { return function (node) { var args; args = arguments.length > 1 ? [].slice.call(arguments, 1) : []; - if (!(null != node)) + if (!(null != node)) { return defaultValue; + } handler = Object.prototype.hasOwnProperty.call(handlers_, node.className) ? handlers_[node.className] : defaultHandler; return handler.apply(node, args); }; @@ -284,8 +285,9 @@ mayHaveSideEffects = makeDispatcher(false, [ CS.DoOp, function (inScope) { var args, newScope, p; - if (!this.expression['instanceof'](CS.Functions)) + if (!this.expression['instanceof'](CS.Functions)) { return true; + } newScope = difference(inScope, concatMap(this.expression.parameters, beingDeclared)); args = function (accum$) { for (var i$ = 0, length$ = this.expression.parameters.length; i$ < length$; ++i$) { @@ -296,18 +298,21 @@ mayHaveSideEffects = makeDispatcher(false, [ }.call(this, []); if (any(args, function (a) { return mayHaveSideEffects(a, newScope); - })) + })) { return true; + } return mayHaveSideEffects(this.expression.body, newScope); } ], [ CS.ExistsOp, function (inScope) { - if (mayHaveSideEffects(this.left, inScope)) + if (mayHaveSideEffects(this.left, inScope)) { return true; - if (this.left['instanceof'](CS.Undefined, CS.Null)) + } + if (this.left['instanceof'](CS.Undefined, CS.Null)) { return false; + } return mayHaveSideEffects(this.right, inScope); } ], @@ -316,33 +321,39 @@ mayHaveSideEffects = makeDispatcher(false, [ CS.SoakedFunctionApplication, function (inScope) { var newScope; - if (!this['function']['instanceof'](CS.Function, CS.BoundFunction)) + if (!this['function']['instanceof'](CS.Function, CS.BoundFunction)) { return true; + } newScope = difference(inScope, concatMap(this['function'].parameters, beingDeclared)); if (any(this['arguments'], function (a) { return mayHaveSideEffects(a, newScope); - })) + })) { return true; + } return mayHaveSideEffects(this['function'].body, newScope); } ], [ CS.LogicalAndOp, function (inScope) { - if (mayHaveSideEffects(this.left, inScope)) + if (mayHaveSideEffects(this.left, inScope)) { return true; - if (isFalsey(this.left)) + } + if (isFalsey(this.left)) { return false; + } return mayHaveSideEffects(this.right, inScope); } ], [ CS.LogicalOrOp, function (inScope) { - if (mayHaveSideEffects(this.left, inScope)) + if (mayHaveSideEffects(this.left, inScope)) { return true; - if (isTruthy(this.left)) + } + if (isTruthy(this.left)) { return false; + } return mayHaveSideEffects(this.right, inScope); } ], @@ -465,8 +476,9 @@ exports.Optimiser = function () { [ CS.AssignOp, function () { - if (!this.expression['instanceof'](CS.SeqOp)) + if (!this.expression['instanceof'](CS.SeqOp)) { return this; + } return new CS.SeqOp(this.expression.left, new CS.AssignOp(this.assignee, this.expression.right)); } ], @@ -523,8 +535,9 @@ exports.Optimiser = function () { } decls = declarationsFor(removedBlock, inScope); block = null != block ? new CS.SeqOp(decls, block) : decls; - if (mayHaveSideEffects(this.condition, inScope)) + if (mayHaveSideEffects(this.condition, inScope)) { block = new CS.SeqOp(this.condition, block); + } return block; } ], @@ -533,8 +546,9 @@ exports.Optimiser = function () { function (param$) { var inScope; inScope = param$.inScope; - if (!(this.target['instanceof'](CS.ArrayInitialiser) && this.target.members.length === 0)) + if (!(this.target['instanceof'](CS.ArrayInitialiser) && this.target.members.length === 0)) { return this; + } return new CS.SeqOp(declarationsFor(this, inScope), new CS.ArrayInitialiser([]).g()); } ], @@ -543,8 +557,9 @@ exports.Optimiser = function () { function (param$) { var inScope; inScope = param$.inScope; - if (!(this.isOwn && this.target['instanceof'](CS.ObjectInitialiser) && this.target.members.length === 0)) + if (!(this.isOwn && this.target['instanceof'](CS.ObjectInitialiser) && this.target.members.length === 0)) { return this; + } return new CS.SeqOp(declarationsFor(this, inScope), new CS.ArrayInitialiser([]).g()); } ], @@ -554,24 +569,27 @@ exports.Optimiser = function () { function (param$) { var inScope; inScope = param$.inScope; - if (!isFalsey(this.filter)) + if (!isFalsey(this.filter)) { return this; + } return new CS.SeqOp(declarationsFor(this, inScope), new CS.ArrayInitialiser([]).g()); } ], [ CS.ForIn, function () { - if (!isTruthy(this.filter)) + if (!isTruthy(this.filter)) { return this; + } return new CS.ForIn(this.valAssignee, this.keyAssignee, this.target, this.step, null, this.body); } ], [ CS.ForOf, function () { - if (!isTruthy(this.filter)) + if (!isTruthy(this.filter)) { return this; + } return new CS.ForOf(this.isOwn, this.keyAssignee, this.valAssignee, this.target, null, this.body); } ], @@ -664,8 +682,9 @@ exports.Optimiser = function () { function (param$) { var ancestry; ancestry = param$.ancestry; - if (!((null != ancestry[0] ? ancestry[0]['instanceof'](CS.Functions) : void 0) && ancestry[0].body === this)) + if (!((null != ancestry[0] ? ancestry[0]['instanceof'](CS.Functions) : void 0) && ancestry[0].body === this)) { return this; + } if (this.right['instanceof'](CS.Return) && null != this.right.expression) { return new CS.SeqOp(this.left, this.right.expression); } else if (this.right['instanceof'](CS.Undefined)) { @@ -679,8 +698,9 @@ exports.Optimiser = function () { CS.Function, CS.BoundFunction, function () { - if (!(null != this.block && (this.block['instanceof'](CS.Undefined) || this.block['instanceof'](CS.Return) && !(null != this.block.expression)))) + if (!(null != this.block && (this.block['instanceof'](CS.Undefined) || this.block['instanceof'](CS.Return) && !(null != this.block.expression)))) { return this; + } return new this.constructor(this.parameters, null); } ], @@ -789,16 +809,19 @@ exports.Optimiser = function () { return walk.call(ast, function (param$) { var ancestry, memo, rule; ancestry = param$.ancestry; - if (!(null != this) || this === global) + if (!(null != this) || this === global) { throw new Error('Optimiser rules must produce a node. `null` is not a node.'); - if (in$(this, ancestry)) + } + if (in$(this, ancestry)) { return this; + } memo = this; for (var cache$2 = null != rules[memo.className] ? rules[memo.className] : [], i$ = 0, length$ = cache$2.length; i$ < length$; ++i$) { rule = cache$2[i$]; memo = rule.apply(memo, arguments); - if (memo !== this) + if (memo !== this) { break; + } } return memo; }); diff --git a/lib/parser.js b/lib/parser.js index 04dd514e..75c71bd2 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -78,8 +78,9 @@ module.exports = (function() { return true; return false; }}, - peg$c10 = function(left, right) {if (!right) + peg$c10 = function(left, right) {if (!right) { return left; + } return rp(new CS.SeqOp(left, right)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); @@ -405,8 +406,9 @@ module.exports = (function() { peg$c82 = /^[+-\/]/, peg$c83 = { type: "class", value: "[+-\\/]", description: "[+-\\/]" }, peg$c84 = function(e, es, obj) {es.unshift(e); - if (null != obj) + if (null != obj) { es.push(obj); + } return es; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); @@ -427,15 +429,28 @@ module.exports = (function() { return true; return false; }}, - peg$c86 = function(fn, accesses, secondaryArgs) {var cache$, list, secondaryCtor, soaked; - if (null != accesses) + peg$c86 = function(accesses, secondaryArgs) {if (accesses) { + return rp(new CS.Super(accesses[0].operands[0])); + } else { + return rp(new CS.Super(secondaryArgs || [])); + } + function isOwn$(o, p) { + return {}.hasOwnProperty.call(o, p); + } + function in$(member, list) { + for (var i = 0, length = list.length; i < length; ++i) + if (i in list && list[i] === member) + return true; + return false; + }}, + peg$c87 = function(fn, accesses, secondaryArgs) {var secondaryCtor, soaked; + if (null != accesses) { fn = createMemberExpression(fn, accesses); - if (null != secondaryArgs) { - cache$ = secondaryArgs; - soaked = cache$[0]; - list = cache$[1]; + } + if (secondaryArgs) { + soaked = secondaryArgs[0]; secondaryCtor = soaked ? CS.SoakedFunctionApplication : CS.FunctionApplication; - fn = rp(new secondaryCtor(fn, list)); + fn = rp(new secondaryCtor(fn, secondaryArgs[1])); } return fn; function isOwn$(o, p) { @@ -447,7 +462,7 @@ module.exports = (function() { return true; return false; }}, - peg$c87 = function(as) {return as; + peg$c88 = function(as) {return as; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -457,7 +472,7 @@ module.exports = (function() { return true; return false; }}, - peg$c88 = function(as, bs) {return [].slice.call(as).concat([].slice.call(null != bs ? bs : [])); + peg$c89 = function(as, bs) {return [].slice.call(as).concat([].slice.call(null != bs ? bs : [])); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -467,7 +482,7 @@ module.exports = (function() { return true; return false; }}, - peg$c89 = function(e) {return rp(new CS.NewOp(e, [])); + peg$c90 = function(e) {return rp(new CS.NewOp(e, [])); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -477,7 +492,7 @@ module.exports = (function() { return true; return false; }}, - peg$c90 = function(e, args) {return rp(new CS.NewOp(e, args.operands[0])); + peg$c91 = function(e, args) {return rp(new CS.NewOp(e, args.operands[0])); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -487,7 +502,7 @@ module.exports = (function() { return true; return false; }}, - peg$c91 = function(e, accesses) {return createMemberExpression(e, accesses); + peg$c92 = function(e, accesses) {return createMemberExpression(e, accesses); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -497,7 +512,7 @@ module.exports = (function() { return true; return false; }}, - peg$c92 = function(e, args) {return rp(new CS.NewOp(e, args)); + peg$c93 = function(e, args) {return rp(new CS.NewOp(e, args)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -507,7 +522,7 @@ module.exports = (function() { return true; return false; }}, - peg$c93 = function(e, accesses) {var acc; + peg$c94 = function(e, accesses) {var acc; acc = foldl(function (memo, a) { return memo.concat(a); }, [], accesses); @@ -521,9 +536,9 @@ module.exports = (function() { return true; return false; }}, - peg$c94 = ".", - peg$c95 = { type: "literal", value: ".", description: "\".\"" }, - peg$c96 = function(e) {return rp({ + peg$c95 = ".", + peg$c96 = { type: "literal", value: ".", description: "\".\"" }, + peg$c97 = function(e) {return rp({ op: CS.MemberAccessOp, operands: [e] }); @@ -536,9 +551,9 @@ module.exports = (function() { return true; return false; }}, - peg$c97 = "?.", - peg$c98 = { type: "literal", value: "?.", description: "\"?.\"" }, - peg$c99 = function(e) {return rp({ + peg$c98 = "?.", + peg$c99 = { type: "literal", value: "?.", description: "\"?.\"" }, + peg$c100 = function(e) {return rp({ op: CS.SoakedMemberAccessOp, operands: [e] }); @@ -551,11 +566,11 @@ module.exports = (function() { return true; return false; }}, - peg$c100 = "[", - peg$c101 = { type: "literal", value: "[", description: "\"[\"" }, - peg$c102 = "]", - peg$c103 = { type: "literal", value: "]", description: "\"]\"" }, - peg$c104 = function(e) {return rp({ + peg$c101 = "[", + peg$c102 = { type: "literal", value: "[", description: "\"[\"" }, + peg$c103 = "]", + peg$c104 = { type: "literal", value: "]", description: "\"]\"" }, + peg$c105 = function(e) {return rp({ op: CS.DynamicMemberAccessOp, operands: [e] }); @@ -568,9 +583,9 @@ module.exports = (function() { return true; return false; }}, - peg$c105 = "?[", - peg$c106 = { type: "literal", value: "?[", description: "\"?[\"" }, - peg$c107 = function(e) {return rp({ + peg$c106 = "?[", + peg$c107 = { type: "literal", value: "?[", description: "\"?[\"" }, + peg$c108 = function(e) {return rp({ op: CS.SoakedDynamicMemberAccessOp, operands: [e] }); @@ -583,9 +598,9 @@ module.exports = (function() { return true; return false; }}, - peg$c108 = "::", - peg$c109 = { type: "literal", value: "::", description: "\"::\"" }, - peg$c110 = function(e) {return rp({ + peg$c109 = "::", + peg$c110 = { type: "literal", value: "::", description: "\"::\"" }, + peg$c111 = function(e) {return rp({ op: CS.ProtoMemberAccessOp, operands: [e] }); @@ -598,9 +613,9 @@ module.exports = (function() { return true; return false; }}, - peg$c111 = "::[", - peg$c112 = { type: "literal", value: "::[", description: "\"::[\"" }, - peg$c113 = function(e) {return rp({ + peg$c112 = "::[", + peg$c113 = { type: "literal", value: "::[", description: "\"::[\"" }, + peg$c114 = function(e) {return rp({ op: CS.DynamicProtoMemberAccessOp, operands: [e] }); @@ -613,9 +628,9 @@ module.exports = (function() { return true; return false; }}, - peg$c114 = "?::", - peg$c115 = { type: "literal", value: "?::", description: "\"?::\"" }, - peg$c116 = function(e) {return rp({ + peg$c115 = "?::", + peg$c116 = { type: "literal", value: "?::", description: "\"?::\"" }, + peg$c117 = function(e) {return rp({ op: CS.SoakedProtoMemberAccessOp, operands: [e] }); @@ -628,9 +643,9 @@ module.exports = (function() { return true; return false; }}, - peg$c117 = "?::[", - peg$c118 = { type: "literal", value: "?::[", description: "\"?::[\"" }, - peg$c119 = function(e) {return rp({ + peg$c118 = "?::[", + peg$c119 = { type: "literal", value: "?::[", description: "\"?::[\"" }, + peg$c120 = function(e) {return rp({ op: CS.SoakedDynamicProtoMemberAccessOp, operands: [e] }); @@ -643,9 +658,9 @@ module.exports = (function() { return true; return false; }}, - peg$c120 = "..", - peg$c121 = { type: "literal", value: "..", description: "\"..\"" }, - peg$c122 = function(left, exclusive, right) {return rp({ + peg$c121 = "..", + peg$c122 = { type: "literal", value: "..", description: "\"..\"" }, + peg$c123 = function(left, exclusive, right) {return rp({ op: CS.Slice, operands: [ !exclusive, @@ -662,9 +677,9 @@ module.exports = (function() { return true; return false; }}, - peg$c123 = "@", - peg$c124 = { type: "literal", value: "@", description: "\"@\"" }, - peg$c125 = function() {return rp(new CS.This); + peg$c124 = "@", + peg$c125 = { type: "literal", value: "@", description: "\"@\"" }, + peg$c126 = function() {return rp(new CS.This); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -674,7 +689,7 @@ module.exports = (function() { return true; return false; }}, - peg$c126 = function(e) {return r(e.clone()); + peg$c127 = function(e) {return r(e.clone()); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -684,7 +699,7 @@ module.exports = (function() { return true; return false; }}, - peg$c127 = function(a, m) {return rp(new CS.MemberAccessOp(a, m)); + peg$c128 = function(a, m) {return rp(new CS.MemberAccessOp(a, m)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -694,11 +709,11 @@ module.exports = (function() { return true; return false; }}, - peg$c128 = "`", - peg$c129 = { type: "literal", value: "`", description: "\"`\"" }, - peg$c130 = /^[^`]/, - peg$c131 = { type: "class", value: "[^`]", description: "[^`]" }, - peg$c132 = function(d) {return rp(new CS.JavaScript(d)); + peg$c129 = "`", + peg$c130 = { type: "literal", value: "`", description: "\"`\"" }, + peg$c131 = /^[^`]/, + peg$c132 = { type: "class", value: "[^`]", description: "[^`]" }, + peg$c133 = function(d) {return rp(new CS.JavaScript(d)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -708,9 +723,9 @@ module.exports = (function() { return true; return false; }}, - peg$c133 = "...", - peg$c134 = { type: "literal", value: "...", description: "\"...\"" }, - peg$c135 = function(e) {return rp(new CS.Spread(e)); + peg$c134 = "...", + peg$c135 = { type: "literal", value: "...", description: "\"...\"" }, + peg$c136 = function(e) {return rp(new CS.Spread(e)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -720,7 +735,7 @@ module.exports = (function() { return true; return false; }}, - peg$c136 = function(kw, cond, body, elseClause) {switch (kw) { + peg$c137 = function(kw, cond, body, elseClause) {switch (kw) { case 'if': return rp(new CS.Conditional(cond, body.block, elseClause)); case 'unless': @@ -735,7 +750,7 @@ module.exports = (function() { return true; return false; }}, - peg$c137 = function(b) {return { block: b }; + peg$c138 = function(b) {return { block: b }; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -745,7 +760,7 @@ module.exports = (function() { return true; return false; }}, - peg$c138 = function(s) {return { block: s }; + peg$c139 = function(s) {return { block: s }; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -755,7 +770,7 @@ module.exports = (function() { return true; return false; }}, - peg$c139 = function() {return { block: null }; + peg$c140 = function() {return { block: null }; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -765,7 +780,7 @@ module.exports = (function() { return true; return false; }}, - peg$c140 = function(b) {return b; + peg$c141 = function(b) {return b; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -775,7 +790,7 @@ module.exports = (function() { return true; return false; }}, - peg$c141 = function(kw, cond, body) {switch (kw) { + peg$c142 = function(kw, cond, body) {switch (kw) { case 'while': return rp(new CS.While(cond, body.block)); case 'until': @@ -790,7 +805,7 @@ module.exports = (function() { return true; return false; }}, - peg$c142 = function(body) {return rp(new CS.Loop(body.block)); + peg$c143 = function(body) {return rp(new CS.Loop(body.block)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -800,7 +815,7 @@ module.exports = (function() { return true; return false; }}, - peg$c143 = function(body, c, f) {return rp(new CS.Try(body.block, null != (null != c ? c.assignee : void 0) ? null != c ? c.assignee : void 0 : null, null != (null != c ? c.block : void 0) ? null != c ? c.block : void 0 : null, null != (null != f ? f.block : void 0) ? null != f ? f.block : void 0 : null)); + peg$c144 = function(body, c, f) {return rp(new CS.Try(body.block, null != (null != c ? c.assignee : void 0) ? null != c ? c.assignee : void 0 : null, null != (null != c ? c.block : void 0) ? null != c ? c.block : void 0 : null, null != (null != f ? f.block : void 0) ? null != f ? f.block : void 0 : null)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -810,7 +825,7 @@ module.exports = (function() { return true; return false; }}, - peg$c144 = function(e, body) {return r({ + peg$c145 = function(e, body) {return r({ block: null != body ? body.block : new CS.Block([]), assignee: e }); @@ -823,7 +838,7 @@ module.exports = (function() { return true; return false; }}, - peg$c145 = function(body) {return r({ block: null != (null != body ? body.block : void 0) ? null != body ? body.block : void 0 : null }); + peg$c146 = function(body) {return r({ block: null != (null != body ? body.block : void 0) ? null != body ? body.block : void 0 : null }); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -833,7 +848,7 @@ module.exports = (function() { return true; return false; }}, - peg$c146 = function(name, parent, body) {var boundMembers, ctor, m, stmts; + peg$c147 = function(name, parent, body) {var boundMembers, ctor, m, stmts; ctor = null; boundMembers = []; stmts = null != body ? null != body.statements ? body.statements : [body] : []; @@ -855,7 +870,7 @@ module.exports = (function() { return true; return false; }}, - peg$c147 = function(key) {return key['instanceof'](CS.String, CS.Identifier) && key.data === 'constructor'; + peg$c148 = function(key) {return key['instanceof'](CS.String, CS.Identifier) && key.data === 'constructor'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -865,10 +880,11 @@ module.exports = (function() { return true; return false; }}, - peg$c148 = ":", - peg$c149 = { type: "literal", value: ":", description: "\":\"" }, - peg$c150 = function(key, fn) {if (fn['instanceof'](CS.BoundFunction)) + peg$c149 = ":", + peg$c150 = { type: "literal", value: ":", description: "\":\"" }, + peg$c151 = function(key, fn) {if (fn['instanceof'](CS.BoundFunction)) { fn = c(new CS.Function(fn.parameters, fn.body).r(fn.raw), fn); + } return rp(new CS.Constructor(fn)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); @@ -879,7 +895,7 @@ module.exports = (function() { return true; return false; }}, - peg$c151 = function(e) {return r({ expr: e }); + peg$c152 = function(e) {return r({ expr: e }); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -889,7 +905,7 @@ module.exports = (function() { return true; return false; }}, - peg$c152 = function(key, e) {return rp(new CS.AssignOp(key, e.expr)); + peg$c153 = function(key, e) {return rp(new CS.AssignOp(key, e.expr)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -899,7 +915,7 @@ module.exports = (function() { return true; return false; }}, - peg$c153 = function(key, e) {return rp(new CS.ClassProtoAssignOp(key, e.expr)); + peg$c154 = function(key, e) {return rp(new CS.ClassProtoAssignOp(key, e.expr)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -909,7 +925,7 @@ module.exports = (function() { return true; return false; }}, - peg$c154 = function(own, key, val, obj, filter, body) {return rp(new CS.ForOf(Boolean(own), key, val, obj, filter, body.block)); + peg$c155 = function(own, key, val, obj, filter, body) {return rp(new CS.ForOf(Boolean(own), key, val, obj, filter, body.block)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -919,7 +935,7 @@ module.exports = (function() { return true; return false; }}, - peg$c155 = function(valKey, list, step, filter, body) {var cache$, key, val; + peg$c156 = function(valKey, list, step, filter, body) {var cache$, key, val; cache$ = null != valKey ? valKey : [ null, null @@ -940,7 +956,7 @@ module.exports = (function() { return true; return false; }}, - peg$c156 = function(e, body) {return rp(new CS.Switch(e, body.cases, null != body['else'] ? body['else'] : null)); + peg$c157 = function(e, body) {return rp(new CS.Switch(e, body.cases, null != body['else'] ? body['else'] : null)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -950,7 +966,7 @@ module.exports = (function() { return true; return false; }}, - peg$c157 = function(b) {return r({ + peg$c158 = function(b) {return r({ cases: b.cases, 'else': b['else'] }); @@ -963,7 +979,7 @@ module.exports = (function() { return true; return false; }}, - peg$c158 = function(c) {return r({ cases: [c] }); + peg$c159 = function(c) {return r({ cases: [c] }); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -973,7 +989,7 @@ module.exports = (function() { return true; return false; }}, - peg$c159 = function() {return r({ cases: [] }); + peg$c160 = function() {return r({ cases: [] }); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -983,7 +999,7 @@ module.exports = (function() { return true; return false; }}, - peg$c160 = function(c) {return c; + peg$c161 = function(c) {return c; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -993,7 +1009,7 @@ module.exports = (function() { return true; return false; }}, - peg$c161 = function(c, cs, elseClause) {return r({ + peg$c162 = function(c, cs, elseClause) {return r({ cases: [c].concat([].slice.call(cs)), 'else': elseClause }); @@ -1006,7 +1022,7 @@ module.exports = (function() { return true; return false; }}, - peg$c162 = function(conditions, body) {return rp(new CS.SwitchCase(conditions, body.block)); + peg$c163 = function(conditions, body) {return rp(new CS.SwitchCase(conditions, body.block)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1016,7 +1032,7 @@ module.exports = (function() { return true; return false; }}, - peg$c163 = function(c, cs) {return [c].concat([].slice.call(cs)); + peg$c164 = function(c, cs) {return [c].concat([].slice.call(cs)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1026,7 +1042,7 @@ module.exports = (function() { return true; return false; }}, - peg$c164 = function(p) {return p; + peg$c165 = function(p) {return p; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1036,11 +1052,11 @@ module.exports = (function() { return true; return false; }}, - peg$c165 = "->", - peg$c166 = { type: "literal", value: "->", description: "\"->\"" }, - peg$c167 = "=>", - peg$c168 = { type: "literal", value: "=>", description: "\"=>\"" }, - peg$c169 = function(params, arrow, body) {var constructor; + peg$c166 = "->", + peg$c167 = { type: "literal", value: "->", description: "\"->\"" }, + peg$c168 = "=>", + peg$c169 = { type: "literal", value: "=>", description: "\"=>\"" }, + peg$c170 = function(params, arrow, body) {var constructor; constructor = function () { switch (arrow) { case '->': @@ -1059,7 +1075,7 @@ module.exports = (function() { return true; return false; }}, - peg$c170 = function(param, default_) {return rp(new CS.DefaultParam(param, default_)); + peg$c171 = function(param, default_) {return rp(new CS.DefaultParam(param, default_)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1069,7 +1085,7 @@ module.exports = (function() { return true; return false; }}, - peg$c171 = function(a, rest) {return rp(null != rest ? new CS.Rest(a) : a); + peg$c172 = function(a, rest) {return rp(null != rest ? new CS.Rest(a) : a); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1079,7 +1095,7 @@ module.exports = (function() { return true; return false; }}, - peg$c172 = function(left, exclusiveDot, right) {var inclusive; + peg$c173 = function(left, exclusiveDot, right) {var inclusive; inclusive = !exclusiveDot; return rp(new CS.Range(inclusive, left, right)); function isOwn$(o, p) { @@ -1091,7 +1107,7 @@ module.exports = (function() { return true; return false; }}, - peg$c173 = function(members) {return rp(new CS.ArrayInitialiser(members)); + peg$c174 = function(members) {return rp(new CS.ArrayInitialiser(members)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1101,7 +1117,7 @@ module.exports = (function() { return true; return false; }}, - peg$c174 = function(members) {return members; + peg$c175 = function(members) {return members; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1111,7 +1127,7 @@ module.exports = (function() { return true; return false; }}, - peg$c175 = function(members) {return null != members ? members : []; + peg$c176 = function(members) {return null != members ? members : []; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1121,11 +1137,11 @@ module.exports = (function() { return true; return false; }}, - peg$c176 = "{", - peg$c177 = { type: "literal", value: "{", description: "\"{\"" }, - peg$c178 = "}", - peg$c179 = { type: "literal", value: "}", description: "\"}\"" }, - peg$c180 = function(members) {return rp(new CS.ObjectInitialiser(members)); + peg$c177 = "{", + peg$c178 = { type: "literal", value: "{", description: "\"{\"" }, + peg$c179 = "}", + peg$c180 = { type: "literal", value: "}", description: "\"}\"" }, + peg$c181 = function(members) {return rp(new CS.ObjectInitialiser(members)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1135,7 +1151,7 @@ module.exports = (function() { return true; return false; }}, - peg$c181 = function(v) {var key; + peg$c182 = function(v) {var key; key = p(new CS.String(v.memberName).g()); return rp(new CS.ObjectInitialiserMember(key, v)); function isOwn$(o, p) { @@ -1147,7 +1163,7 @@ module.exports = (function() { return true; return false; }}, - peg$c182 = function(v) {return rp(new CS.ObjectInitialiserMember(v, v)); + peg$c183 = function(v) {return rp(new CS.ObjectInitialiserMember(v, v)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1157,7 +1173,7 @@ module.exports = (function() { return true; return false; }}, - peg$c183 = function(i) {return rp(new CS.Identifier(i)); + peg$c184 = function(i) {return rp(new CS.Identifier(i)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1167,7 +1183,7 @@ module.exports = (function() { return true; return false; }}, - peg$c184 = function(key, val) {return rp(new CS.ObjectInitialiserMember(key, val)); + peg$c185 = function(key, val) {return rp(new CS.ObjectInitialiserMember(key, val)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1177,9 +1193,9 @@ module.exports = (function() { return true; return false; }}, - peg$c185 = "__LINE__", - peg$c186 = { type: "literal", value: "__LINE__", description: "\"__LINE__\"" }, - peg$c187 = function() {return rp(new CS.Int(line())); + peg$c186 = "__LINE__", + peg$c187 = { type: "literal", value: "__LINE__", description: "\"__LINE__\"" }, + peg$c188 = function() {return rp(new CS.Int(line())); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1189,9 +1205,9 @@ module.exports = (function() { return true; return false; }}, - peg$c188 = "__FILENAME__", - peg$c189 = { type: "literal", value: "__FILENAME__", description: "\"__FILENAME__\"" }, - peg$c190 = function() {return rp(new CS.String(null != options.inputSource ? options.inputSource : '')); + peg$c189 = "__FILENAME__", + peg$c190 = { type: "literal", value: "__FILENAME__", description: "\"__FILENAME__\"" }, + peg$c191 = function() {return rp(new CS.String(null != options.inputSource ? options.inputSource : '')); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1201,9 +1217,9 @@ module.exports = (function() { return true; return false; }}, - peg$c191 = "__DATE__", - peg$c192 = { type: "literal", value: "__DATE__", description: "\"__DATE__\"" }, - peg$c193 = function() {return rp(new CS.String(new Date().toDateString().slice(4))); + peg$c192 = "__DATE__", + peg$c193 = { type: "literal", value: "__DATE__", description: "\"__DATE__\"" }, + peg$c194 = function() {return rp(new CS.String(new Date().toDateString().slice(4))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1213,9 +1229,9 @@ module.exports = (function() { return true; return false; }}, - peg$c194 = "__TIME__", - peg$c195 = { type: "literal", value: "__TIME__", description: "\"__TIME__\"" }, - peg$c196 = function() {return rp(new CS.String(new Date().toTimeString().slice(0, 8))); + peg$c195 = "__TIME__", + peg$c196 = { type: "literal", value: "__TIME__", description: "\"__TIME__\"" }, + peg$c197 = function() {return rp(new CS.String(new Date().toTimeString().slice(0, 8))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1225,9 +1241,9 @@ module.exports = (function() { return true; return false; }}, - peg$c197 = "__DATETIMEMS__", - peg$c198 = { type: "literal", value: "__DATETIMEMS__", description: "\"__DATETIMEMS__\"" }, - peg$c199 = function() {return rp(new CS.Int(+new Date)); + peg$c198 = "__DATETIMEMS__", + peg$c199 = { type: "literal", value: "__DATETIMEMS__", description: "\"__DATETIMEMS__\"" }, + peg$c200 = function() {return rp(new CS.Int(+new Date)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1237,9 +1253,9 @@ module.exports = (function() { return true; return false; }}, - peg$c200 = "__COFFEE_VERSION__", - peg$c201 = { type: "literal", value: "__COFFEE_VERSION__", description: "\"__COFFEE_VERSION__\"" }, - peg$c202 = function() {return rp(new CS.String(require('../package.json').version)); + peg$c201 = "__COFFEE_VERSION__", + peg$c202 = { type: "literal", value: "__COFFEE_VERSION__", description: "\"__COFFEE_VERSION__\"" }, + peg$c203 = function() {return rp(new CS.String(require('../package.json').version)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1249,7 +1265,9 @@ module.exports = (function() { return true; return false; }}, - peg$c203 = function() {return rp(new CS.Bool(true)); + peg$c204 = "__TARGET_ES6__", + peg$c205 = { type: "literal", value: "__TARGET_ES6__", description: "\"__TARGET_ES6__\"" }, + peg$c206 = function() {return rp(new CS.Bool(!!options.targetES6)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1259,7 +1277,7 @@ module.exports = (function() { return true; return false; }}, - peg$c204 = function() {return rp(new CS.Bool(false)); + peg$c207 = function() {return rp(new CS.Bool(true)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1269,9 +1287,7 @@ module.exports = (function() { return true; return false; }}, - peg$c205 = "0b", - peg$c206 = { type: "literal", value: "0b", description: "\"0b\"" }, - peg$c207 = function(bs) {return rp(new CS.Int(parseInt(bs, 2))); + peg$c208 = function() {return rp(new CS.Bool(false)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1281,9 +1297,9 @@ module.exports = (function() { return true; return false; }}, - peg$c208 = "0o", - peg$c209 = { type: "literal", value: "0o", description: "\"0o\"" }, - peg$c210 = function(os) {return rp(new CS.Int(parseInt(os, 8))); + peg$c209 = "0b", + peg$c210 = { type: "literal", value: "0b", description: "\"0b\"" }, + peg$c211 = function(bs) {return rp(new CS.Int(parseInt(bs, 2))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1293,9 +1309,9 @@ module.exports = (function() { return true; return false; }}, - peg$c211 = "0x", - peg$c212 = { type: "literal", value: "0x", description: "\"0x\"" }, - peg$c213 = function(hs) {return rp(new CS.Int(parseInt(hs, 16))); + peg$c212 = "0o", + peg$c213 = { type: "literal", value: "0o", description: "\"0o\"" }, + peg$c214 = function(os) {return rp(new CS.Int(parseInt(os, 8))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1305,11 +1321,9 @@ module.exports = (function() { return true; return false; }}, - peg$c214 = /^[eE]/, - peg$c215 = { type: "class", value: "[eE]", description: "[eE]" }, - peg$c216 = /^[+\-]/, - peg$c217 = { type: "class", value: "[+\\-]", description: "[+\\-]" }, - peg$c218 = function(base, e, sign, exponent) {return rp(new CS.Float(parseFloat('' + base.data + e + (null != sign ? sign : '') + exponent.data))); + peg$c215 = "0x", + peg$c216 = { type: "literal", value: "0x", description: "\"0x\"" }, + peg$c217 = function(hs) {return rp(new CS.Int(parseInt(hs, 16))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1319,7 +1333,21 @@ module.exports = (function() { return true; return false; }}, - peg$c219 = function(integral, fractional) {if (fractional) { + peg$c218 = /^[eE]/, + peg$c219 = { type: "class", value: "[eE]", description: "[eE]" }, + peg$c220 = /^[+\-]/, + peg$c221 = { type: "class", value: "[+\\-]", description: "[+\\-]" }, + peg$c222 = function(base, e, sign, exponent) {return rp(new CS.Float(parseFloat('' + base.data + e + (null != sign ? sign : '') + exponent.data))); + function isOwn$(o, p) { + return {}.hasOwnProperty.call(o, p); + } + function in$(member, list) { + for (var i = 0, length = list.length; i < length; ++i) + if (i in list && list[i] === member) + return true; + return false; + }}, + peg$c223 = function(integral, fractional) {if (fractional) { return rp(new CS.Float(parseFloat(integral + fractional))); } else { return rp(new CS.Int(+integral)); @@ -1333,25 +1361,25 @@ module.exports = (function() { return true; return false; }}, - peg$c220 = "0", - peg$c221 = { type: "literal", value: "0", description: "\"0\"" }, - peg$c222 = /^[1-9]/, - peg$c223 = { type: "class", value: "[1-9]", description: "[1-9]" }, - peg$c224 = /^[0-9]/, - peg$c225 = { type: "class", value: "[0-9]", description: "[0-9]" }, - peg$c226 = /^[0-9a-fA-F]/, - peg$c227 = { type: "class", value: "[0-9a-fA-F]", description: "[0-9a-fA-F]" }, - peg$c228 = /^[0-7]/, - peg$c229 = { type: "class", value: "[0-7]", description: "[0-7]" }, - peg$c230 = /^[01]/, - peg$c231 = { type: "class", value: "[01]", description: "[01]" }, - peg$c232 = "\"\"\"", - peg$c233 = { type: "literal", value: "\"\"\"", description: "\"\\\"\\\"\\\"\"" }, - peg$c234 = "'", - peg$c235 = { type: "literal", value: "'", description: "\"'\"" }, - peg$c236 = "\"", - peg$c237 = { type: "literal", value: "\"", description: "\"\\\"\"" }, - peg$c238 = function(d) {return rp(new CS.String(stripLeadingWhitespace(d.join('')))); + peg$c224 = "0", + peg$c225 = { type: "literal", value: "0", description: "\"0\"" }, + peg$c226 = /^[1-9]/, + peg$c227 = { type: "class", value: "[1-9]", description: "[1-9]" }, + peg$c228 = /^[0-9]/, + peg$c229 = { type: "class", value: "[0-9]", description: "[0-9]" }, + peg$c230 = /^[0-9a-fA-F]/, + peg$c231 = { type: "class", value: "[0-9a-fA-F]", description: "[0-9a-fA-F]" }, + peg$c232 = /^[0-7]/, + peg$c233 = { type: "class", value: "[0-7]", description: "[0-7]" }, + peg$c234 = /^[01]/, + peg$c235 = { type: "class", value: "[01]", description: "[01]" }, + peg$c236 = "\"\"\"", + peg$c237 = { type: "literal", value: "\"\"\"", description: "\"\\\"\\\"\\\"\"" }, + peg$c238 = "'", + peg$c239 = { type: "literal", value: "'", description: "\"'\"" }, + peg$c240 = "\"", + peg$c241 = { type: "literal", value: "\"", description: "\"\\\"\"" }, + peg$c242 = function(d) {return rp(new CS.String(stripLeadingWhitespace(d.join('')))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1361,11 +1389,11 @@ module.exports = (function() { return true; return false; }}, - peg$c239 = "'''", - peg$c240 = { type: "literal", value: "'''", description: "\"'''\"" }, - peg$c241 = "#", - peg$c242 = { type: "literal", value: "#", description: "\"#\"" }, - peg$c243 = function(d) {return rp(new CS.String(d.join(''))); + peg$c243 = "'''", + peg$c244 = { type: "literal", value: "'''", description: "\"'''\"" }, + peg$c245 = "#", + peg$c246 = { type: "literal", value: "#", description: "\"#\"" }, + peg$c247 = function(d) {return rp(new CS.String(d.join(''))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1375,11 +1403,11 @@ module.exports = (function() { return true; return false; }}, - peg$c244 = /^[^"'\\#]/, - peg$c245 = { type: "class", value: "[^\"'\\\\#]", description: "[^\"'\\\\#]" }, - peg$c246 = "\\x", - peg$c247 = { type: "literal", value: "\\x", description: "\"\\\\x\"" }, - peg$c248 = function(h) {return String.fromCharCode(parseInt(h, 16)); + peg$c248 = /^[^"'\\#]/, + peg$c249 = { type: "class", value: "[^\"'\\\\#]", description: "[^\"'\\\\#]" }, + peg$c250 = "\\x", + peg$c251 = { type: "literal", value: "\\x", description: "\"\\\\x\"" }, + peg$c252 = function(h) {return String.fromCharCode(parseInt(h, 16)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1389,9 +1417,9 @@ module.exports = (function() { return true; return false; }}, - peg$c249 = "\\0", - peg$c250 = { type: "literal", value: "\\0", description: "\"\\\\0\"" }, - peg$c251 = function() {return '\0'; + peg$c253 = "\\0", + peg$c254 = { type: "literal", value: "\\0", description: "\"\\\\0\"" }, + peg$c255 = function() {return '\0'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1401,7 +1429,7 @@ module.exports = (function() { return true; return false; }}, - peg$c252 = function() {throw new SyntaxError(['string data'], 'octal escape sequence', offset(), line(), column()); + peg$c256 = function() {throw new SyntaxError(['string data'], 'octal escape sequence', offset(), line(), column()); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1411,9 +1439,9 @@ module.exports = (function() { return true; return false; }}, - peg$c253 = "\\b", - peg$c254 = { type: "literal", value: "\\b", description: "\"\\\\b\"" }, - peg$c255 = function() {return '\b'; + peg$c257 = "\\b", + peg$c258 = { type: "literal", value: "\\b", description: "\"\\\\b\"" }, + peg$c259 = function() {return '\b'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1423,9 +1451,9 @@ module.exports = (function() { return true; return false; }}, - peg$c256 = "\\t", - peg$c257 = { type: "literal", value: "\\t", description: "\"\\\\t\"" }, - peg$c258 = function() {return '\t'; + peg$c260 = "\\t", + peg$c261 = { type: "literal", value: "\\t", description: "\"\\\\t\"" }, + peg$c262 = function() {return '\t'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1435,9 +1463,9 @@ module.exports = (function() { return true; return false; }}, - peg$c259 = "\\n", - peg$c260 = { type: "literal", value: "\\n", description: "\"\\\\n\"" }, - peg$c261 = function() {return '\n'; + peg$c263 = "\\n", + peg$c264 = { type: "literal", value: "\\n", description: "\"\\\\n\"" }, + peg$c265 = function() {return '\n'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1447,9 +1475,9 @@ module.exports = (function() { return true; return false; }}, - peg$c262 = "\\v", - peg$c263 = { type: "literal", value: "\\v", description: "\"\\\\v\"" }, - peg$c264 = function() {return '\x0B'; + peg$c266 = "\\v", + peg$c267 = { type: "literal", value: "\\v", description: "\"\\\\v\"" }, + peg$c268 = function() {return '\x0B'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1459,9 +1487,9 @@ module.exports = (function() { return true; return false; }}, - peg$c265 = "\\f", - peg$c266 = { type: "literal", value: "\\f", description: "\"\\\\f\"" }, - peg$c267 = function() {return '\f'; + peg$c269 = "\\f", + peg$c270 = { type: "literal", value: "\\f", description: "\"\\\\f\"" }, + peg$c271 = function() {return '\f'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1471,9 +1499,9 @@ module.exports = (function() { return true; return false; }}, - peg$c268 = "\\r", - peg$c269 = { type: "literal", value: "\\r", description: "\"\\\\r\"" }, - peg$c270 = function() {return '\r'; + peg$c272 = "\\r", + peg$c273 = { type: "literal", value: "\\r", description: "\"\\\\r\"" }, + peg$c274 = function() {return '\r'; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1483,12 +1511,12 @@ module.exports = (function() { return true; return false; }}, - peg$c271 = "\\", - peg$c272 = { type: "literal", value: "\\", description: "\"\\\\\"" }, - peg$c273 = { type: "any", description: "any character" }, - peg$c274 = "#{", - peg$c275 = { type: "literal", value: "#{", description: "\"#{\"" }, - peg$c276 = function(es) {return rp(createInterpolation(stripLeadingWhitespaceInterpolation(es))); + peg$c275 = "\\", + peg$c276 = { type: "literal", value: "\\", description: "\"\\\\\"" }, + peg$c277 = { type: "any", description: "any character" }, + peg$c278 = "#{", + peg$c279 = { type: "literal", value: "#{", description: "\"#{\"" }, + peg$c280 = function(es) {return rp(createInterpolation(stripLeadingWhitespaceInterpolation(es))); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1498,7 +1526,7 @@ module.exports = (function() { return true; return false; }}, - peg$c277 = function(es) {return rp(createInterpolation(es)); + peg$c281 = function(es) {return rp(createInterpolation(es)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1508,11 +1536,11 @@ module.exports = (function() { return true; return false; }}, - peg$c278 = "///", - peg$c279 = { type: "literal", value: "///", description: "\"///\"" }, - peg$c280 = /^[ \r\n]/, - peg$c281 = { type: "class", value: "[ \\r\\n]", description: "[ \\r\\n]" }, - peg$c282 = function() {return [rp(new CS.String('').g())]; + peg$c282 = "///", + peg$c283 = { type: "literal", value: "///", description: "\"///\"" }, + peg$c284 = /^[ \r\n]/, + peg$c285 = { type: "class", value: "[ \\r\\n]", description: "[ \\r\\n]" }, + peg$c286 = function() {return [rp(new CS.String('').g())]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1522,9 +1550,9 @@ module.exports = (function() { return true; return false; }}, - peg$c283 = /^[^\\\/#[ \r\n]/, - peg$c284 = { type: "class", value: "[^\\\\\\/#[ \\r\\n]", description: "[^\\\\\\/#[ \\r\\n]" }, - peg$c285 = function(s) {return [rp(new CS.String(s).g())]; + peg$c287 = /^[^\\\/#[ \r\n]/, + peg$c288 = { type: "class", value: "[^\\\\\\/#[ \\r\\n]", description: "[^\\\\\\/#[ \\r\\n]" }, + peg$c289 = function(s) {return [rp(new CS.String(s).g())]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1534,16 +1562,18 @@ module.exports = (function() { return true; return false; }}, - peg$c286 = /^[gimy]/, - peg$c287 = { type: "class", value: "[gimy]", description: "[gimy]" }, - peg$c288 = function(es, flags) {var interp; - if (!isValidRegExpFlags(flags)) + peg$c290 = /^[gimy]/, + peg$c291 = { type: "class", value: "[gimy]", description: "[gimy]" }, + peg$c292 = function(es, flags) {var interp; + if (!isValidRegExpFlags(flags)) { throw new SyntaxError(['regular expression flags'], 'regular expression flags', offset(), line(), column()); + } interp = createInterpolation(foldl(function (memo, e) { return memo.concat(e); }, [], es)); - if (interp instanceof CS.String) + if (interp instanceof CS.String) { return p(new CS.RegExp(interp.data, flags)); + } return rp(new CS.HeregExp(interp, flags)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); @@ -1554,12 +1584,13 @@ module.exports = (function() { return true; return false; }}, - peg$c289 = "/", - peg$c290 = { type: "literal", value: "/", description: "\"/\"" }, - peg$c291 = /^[^\/\\[\n]/, - peg$c292 = { type: "class", value: "[^\\/\\\\[\\n]", description: "[^\\/\\\\[\\n]" }, - peg$c293 = function(d, flags) {if (!isValidRegExpFlags(flags)) + peg$c293 = "/", + peg$c294 = { type: "literal", value: "/", description: "\"/\"" }, + peg$c295 = /^[^\/\\[\n]/, + peg$c296 = { type: "class", value: "[^\\/\\\\[\\n]", description: "[^\\/\\\\[\\n]" }, + peg$c297 = function(d, flags) {if (!isValidRegExpFlags(flags)) { throw new SyntaxError(['regular expression flags'], 'regular expression flags', offset(), line(), column()); + } return rp(new CS.RegExp(d, flags)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); @@ -1570,9 +1601,9 @@ module.exports = (function() { return true; return false; }}, - peg$c294 = /^[^\\\]\n]/, - peg$c295 = { type: "class", value: "[^\\\\\\]\\n]", description: "[^\\\\\\]\\n]" }, - peg$c296 = function(h) {return h[0]; + peg$c298 = /^[^\\\]\n]/, + peg$c299 = { type: "class", value: "[^\\\\\\]\\n]", description: "[^\\\\\\]\\n]" }, + peg$c300 = function(h) {return h[0]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1582,9 +1613,9 @@ module.exports = (function() { return true; return false; }}, - peg$c297 = /^[^\\\/\]]/, - peg$c298 = { type: "class", value: "[^\\\\\\/\\]]", description: "[^\\\\\\/\\]]" }, - peg$c299 = function(s) {return p(new CS.String(s)); + peg$c301 = /^[^\\\/\]]/, + peg$c302 = { type: "class", value: "[^\\\\\\/\\]]", description: "[^\\\\\\/\\]]" }, + peg$c303 = function(s) {return p(new CS.String(s)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1594,7 +1625,7 @@ module.exports = (function() { return true; return false; }}, - peg$c300 = function(d) {return [p(new CS.String('['))].concat([].slice.call(d), [p(new CS.String(']'))]); + peg$c304 = function(d) {return [p(new CS.String('['))].concat([].slice.call(d), [p(new CS.String(']'))]); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1604,7 +1635,7 @@ module.exports = (function() { return true; return false; }}, - peg$c301 = function(d) {return [rp(new CS.String(d))]; + peg$c305 = function(d) {return [rp(new CS.String(d))]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1614,7 +1645,7 @@ module.exports = (function() { return true; return false; }}, - peg$c302 = function(s) {return [rp(new CS.String(s))]; + peg$c306 = function(s) {return [rp(new CS.String(s))]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1624,7 +1655,7 @@ module.exports = (function() { return true; return false; }}, - peg$c303 = function(c) {return [rp(new CS.String(c))]; + peg$c307 = function(c) {return [rp(new CS.String(c))]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1634,7 +1665,7 @@ module.exports = (function() { return true; return false; }}, - peg$c304 = function(e) {return [e]; + peg$c308 = function(e) {return [e]; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1644,7 +1675,7 @@ module.exports = (function() { return true; return false; }}, - peg$c305 = function(e) {return rp(new CS.Throw(e)); + peg$c309 = function(e) {return rp(new CS.Throw(e)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1654,7 +1685,7 @@ module.exports = (function() { return true; return false; }}, - peg$c306 = function(e) {return rp(new CS.Return(e)); + peg$c310 = function(e) {return rp(new CS.Return(e)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1664,7 +1695,7 @@ module.exports = (function() { return true; return false; }}, - peg$c307 = function() {return rp(new CS.Continue); + peg$c311 = function() {return rp(new CS.Continue); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1674,7 +1705,7 @@ module.exports = (function() { return true; return false; }}, - peg$c308 = function() {return rp(new CS.Break); + peg$c312 = function() {return rp(new CS.Break); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1684,7 +1715,7 @@ module.exports = (function() { return true; return false; }}, - peg$c309 = function() {return rp(new CS.Debugger); + peg$c313 = function() {return rp(new CS.Debugger); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1694,7 +1725,7 @@ module.exports = (function() { return true; return false; }}, - peg$c310 = function() {return rp(new CS.Undefined); + peg$c314 = function() {return rp(new CS.Undefined); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1704,7 +1735,7 @@ module.exports = (function() { return true; return false; }}, - peg$c311 = function() {return rp(new CS.Null); + peg$c315 = function() {return rp(new CS.Null); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1714,11 +1745,11 @@ module.exports = (function() { return true; return false; }}, - peg$c312 = "arguments", - peg$c313 = { type: "literal", value: "arguments", description: "\"arguments\"" }, - peg$c314 = "eval", - peg$c315 = { type: "literal", value: "eval", description: "\"eval\"" }, - peg$c316 = function(i) {return i; + peg$c316 = "arguments", + peg$c317 = { type: "literal", value: "arguments", description: "\"arguments\"" }, + peg$c318 = "eval", + peg$c319 = { type: "literal", value: "eval", description: "\"eval\"" }, + peg$c320 = function(i) {return i; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1728,7 +1759,7 @@ module.exports = (function() { return true; return false; }}, - peg$c317 = function(v) {var key; + peg$c321 = function(v) {var key; key = rp(new CS.String(v.memberName)); return rp(new CS.ObjectInitialiserMember(key, v)); function isOwn$(o, p) { @@ -1740,7 +1771,7 @@ module.exports = (function() { return true; return false; }}, - peg$c318 = function(i) {return rp(new CS.ObjectInitialiserMember(i, i)); + peg$c322 = function(i) {return rp(new CS.ObjectInitialiserMember(i, i)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1750,21 +1781,21 @@ module.exports = (function() { return true; return false; }}, - peg$c319 = /^[$_]/, - peg$c320 = { type: "class", value: "[$_]", description: "[$_]" }, - peg$c321 = "###", - peg$c322 = { type: "literal", value: "###", description: "\"###\"" }, - peg$c323 = /^[^#]/, - peg$c324 = { type: "class", value: "[^#]", description: "[^#]" }, - peg$c325 = /^[\t\x0B\f \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/, - peg$c326 = { type: "class", value: "[\\t\\x0B\\f \\xA0\\uFEFF\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000]", description: "[\\t\\x0B\\f \\xA0\\uFEFF\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000]" }, - peg$c327 = "\r", - peg$c328 = { type: "literal", value: "\r", description: "\"\\r\"" }, - peg$c329 = "\n", - peg$c330 = { type: "literal", value: "\n", description: "\"\\n\"" }, - peg$c331 = "\uEFEF", - peg$c332 = { type: "literal", value: "\uEFEF", description: "\"\\uEFEF\"" }, - peg$c333 = function(ws) {return ws; + peg$c323 = /^[$_]/, + peg$c324 = { type: "class", value: "[$_]", description: "[$_]" }, + peg$c325 = "###", + peg$c326 = { type: "literal", value: "###", description: "\"###\"" }, + peg$c327 = /^[^#]/, + peg$c328 = { type: "class", value: "[^#]", description: "[^#]" }, + peg$c329 = /^[\t\x0B\f \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/, + peg$c330 = { type: "class", value: "[\\t\\x0B\\f \\xA0\\uFEFF\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000]", description: "[\\t\\x0B\\f \\xA0\\uFEFF\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000]" }, + peg$c331 = "\r", + peg$c332 = { type: "literal", value: "\r", description: "\"\\r\"" }, + peg$c333 = "\n", + peg$c334 = { type: "literal", value: "\n", description: "\"\\n\"" }, + peg$c335 = "\uEFEF", + peg$c336 = { type: "literal", value: "\uEFEF", description: "\"\\uEFEF\"" }, + peg$c337 = function(ws) {return ws; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1774,11 +1805,11 @@ module.exports = (function() { return true; return false; }}, - peg$c334 = "\uEFFE", - peg$c335 = { type: "literal", value: "\uEFFE", description: "\"\\uEFFE\"" }, - peg$c336 = "\uEFFF", - peg$c337 = { type: "literal", value: "\uEFFF", description: "\"\\uEFFF\"" }, - peg$c338 = function() {return ''; + peg$c338 = "\uEFFE", + peg$c339 = { type: "literal", value: "\uEFFE", description: "\"\\uEFFE\"" }, + peg$c340 = "\uEFFF", + peg$c341 = { type: "literal", value: "\uEFFF", description: "\"\\uEFFF\"" }, + peg$c342 = function() {return ''; function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1788,137 +1819,137 @@ module.exports = (function() { return true; return false; }}, - peg$c339 = "and", - peg$c340 = { type: "literal", value: "and", description: "\"and\"" }, - peg$c341 = "break", - peg$c342 = { type: "literal", value: "break", description: "\"break\"" }, - peg$c343 = "by", - peg$c344 = { type: "literal", value: "by", description: "\"by\"" }, - peg$c345 = "catch", - peg$c346 = { type: "literal", value: "catch", description: "\"catch\"" }, - peg$c347 = "continue", - peg$c348 = { type: "literal", value: "continue", description: "\"continue\"" }, - peg$c349 = "class", - peg$c350 = { type: "literal", value: "class", description: "\"class\"" }, - peg$c351 = "delete", - peg$c352 = { type: "literal", value: "delete", description: "\"delete\"" }, - peg$c353 = "debugger", - peg$c354 = { type: "literal", value: "debugger", description: "\"debugger\"" }, - peg$c355 = "do", - peg$c356 = { type: "literal", value: "do", description: "\"do\"" }, - peg$c357 = "else", - peg$c358 = { type: "literal", value: "else", description: "\"else\"" }, - peg$c359 = "extends", - peg$c360 = { type: "literal", value: "extends", description: "\"extends\"" }, - peg$c361 = "false", - peg$c362 = { type: "literal", value: "false", description: "\"false\"" }, - peg$c363 = "finally", - peg$c364 = { type: "literal", value: "finally", description: "\"finally\"" }, - peg$c365 = "for", - peg$c366 = { type: "literal", value: "for", description: "\"for\"" }, - peg$c367 = "if", - peg$c368 = { type: "literal", value: "if", description: "\"if\"" }, - peg$c369 = "in", - peg$c370 = { type: "literal", value: "in", description: "\"in\"" }, - peg$c371 = "instanceof", - peg$c372 = { type: "literal", value: "instanceof", description: "\"instanceof\"" }, - peg$c373 = "is", - peg$c374 = { type: "literal", value: "is", description: "\"is\"" }, - peg$c375 = "isnt", - peg$c376 = { type: "literal", value: "isnt", description: "\"isnt\"" }, - peg$c377 = "loop", - peg$c378 = { type: "literal", value: "loop", description: "\"loop\"" }, - peg$c379 = "new", - peg$c380 = { type: "literal", value: "new", description: "\"new\"" }, - peg$c381 = "no", - peg$c382 = { type: "literal", value: "no", description: "\"no\"" }, - peg$c383 = "not", - peg$c384 = { type: "literal", value: "not", description: "\"not\"" }, - peg$c385 = "null", - peg$c386 = { type: "literal", value: "null", description: "\"null\"" }, - peg$c387 = "of", - peg$c388 = { type: "literal", value: "of", description: "\"of\"" }, - peg$c389 = "off", - peg$c390 = { type: "literal", value: "off", description: "\"off\"" }, - peg$c391 = "on", - peg$c392 = { type: "literal", value: "on", description: "\"on\"" }, - peg$c393 = "or", - peg$c394 = { type: "literal", value: "or", description: "\"or\"" }, - peg$c395 = "own", - peg$c396 = { type: "literal", value: "own", description: "\"own\"" }, - peg$c397 = "return", - peg$c398 = { type: "literal", value: "return", description: "\"return\"" }, - peg$c399 = "switch", - peg$c400 = { type: "literal", value: "switch", description: "\"switch\"" }, - peg$c401 = "then", - peg$c402 = { type: "literal", value: "then", description: "\"then\"" }, - peg$c403 = "this", - peg$c404 = { type: "literal", value: "this", description: "\"this\"" }, - peg$c405 = "throw", - peg$c406 = { type: "literal", value: "throw", description: "\"throw\"" }, - peg$c407 = "true", - peg$c408 = { type: "literal", value: "true", description: "\"true\"" }, - peg$c409 = "try", - peg$c410 = { type: "literal", value: "try", description: "\"try\"" }, - peg$c411 = "typeof", - peg$c412 = { type: "literal", value: "typeof", description: "\"typeof\"" }, - peg$c413 = "undefined", - peg$c414 = { type: "literal", value: "undefined", description: "\"undefined\"" }, - peg$c415 = "unless", - peg$c416 = { type: "literal", value: "unless", description: "\"unless\"" }, - peg$c417 = "until", - peg$c418 = { type: "literal", value: "until", description: "\"until\"" }, - peg$c419 = "when", - peg$c420 = { type: "literal", value: "when", description: "\"when\"" }, - peg$c421 = "while", - peg$c422 = { type: "literal", value: "while", description: "\"while\"" }, - peg$c423 = "yes", - peg$c424 = { type: "literal", value: "yes", description: "\"yes\"" }, - peg$c425 = "super", - peg$c426 = { type: "literal", value: "super", description: "\"super\"" }, - peg$c427 = "case", - peg$c428 = { type: "literal", value: "case", description: "\"case\"" }, - peg$c429 = "default", - peg$c430 = { type: "literal", value: "default", description: "\"default\"" }, - peg$c431 = "function", - peg$c432 = { type: "literal", value: "function", description: "\"function\"" }, - peg$c433 = "var", - peg$c434 = { type: "literal", value: "var", description: "\"var\"" }, - peg$c435 = "void", - peg$c436 = { type: "literal", value: "void", description: "\"void\"" }, - peg$c437 = "with", - peg$c438 = { type: "literal", value: "with", description: "\"with\"" }, - peg$c439 = "const", - peg$c440 = { type: "literal", value: "const", description: "\"const\"" }, - peg$c441 = "let", - peg$c442 = { type: "literal", value: "let", description: "\"let\"" }, - peg$c443 = "enum", - peg$c444 = { type: "literal", value: "enum", description: "\"enum\"" }, - peg$c445 = "export", - peg$c446 = { type: "literal", value: "export", description: "\"export\"" }, - peg$c447 = "import", - peg$c448 = { type: "literal", value: "import", description: "\"import\"" }, - peg$c449 = "native", - peg$c450 = { type: "literal", value: "native", description: "\"native\"" }, - peg$c451 = "implements", - peg$c452 = { type: "literal", value: "implements", description: "\"implements\"" }, - peg$c453 = "interface", - peg$c454 = { type: "literal", value: "interface", description: "\"interface\"" }, - peg$c455 = "package", - peg$c456 = { type: "literal", value: "package", description: "\"package\"" }, - peg$c457 = "private", - peg$c458 = { type: "literal", value: "private", description: "\"private\"" }, - peg$c459 = "protected", - peg$c460 = { type: "literal", value: "protected", description: "\"protected\"" }, - peg$c461 = "public", - peg$c462 = { type: "literal", value: "public", description: "\"public\"" }, - peg$c463 = "static", - peg$c464 = { type: "literal", value: "static", description: "\"static\"" }, - peg$c465 = "yield", - peg$c466 = { type: "literal", value: "yield", description: "\"yield\"" }, - peg$c467 = "\\u", - peg$c468 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, - peg$c469 = function(h0, h1, h2, h3) {return String.fromCharCode(parseInt(h0 + h1 + h2 + h3, 16)); + peg$c343 = "and", + peg$c344 = { type: "literal", value: "and", description: "\"and\"" }, + peg$c345 = "break", + peg$c346 = { type: "literal", value: "break", description: "\"break\"" }, + peg$c347 = "by", + peg$c348 = { type: "literal", value: "by", description: "\"by\"" }, + peg$c349 = "catch", + peg$c350 = { type: "literal", value: "catch", description: "\"catch\"" }, + peg$c351 = "continue", + peg$c352 = { type: "literal", value: "continue", description: "\"continue\"" }, + peg$c353 = "class", + peg$c354 = { type: "literal", value: "class", description: "\"class\"" }, + peg$c355 = "delete", + peg$c356 = { type: "literal", value: "delete", description: "\"delete\"" }, + peg$c357 = "debugger", + peg$c358 = { type: "literal", value: "debugger", description: "\"debugger\"" }, + peg$c359 = "do", + peg$c360 = { type: "literal", value: "do", description: "\"do\"" }, + peg$c361 = "else", + peg$c362 = { type: "literal", value: "else", description: "\"else\"" }, + peg$c363 = "extends", + peg$c364 = { type: "literal", value: "extends", description: "\"extends\"" }, + peg$c365 = "false", + peg$c366 = { type: "literal", value: "false", description: "\"false\"" }, + peg$c367 = "finally", + peg$c368 = { type: "literal", value: "finally", description: "\"finally\"" }, + peg$c369 = "for", + peg$c370 = { type: "literal", value: "for", description: "\"for\"" }, + peg$c371 = "if", + peg$c372 = { type: "literal", value: "if", description: "\"if\"" }, + peg$c373 = "in", + peg$c374 = { type: "literal", value: "in", description: "\"in\"" }, + peg$c375 = "instanceof", + peg$c376 = { type: "literal", value: "instanceof", description: "\"instanceof\"" }, + peg$c377 = "is", + peg$c378 = { type: "literal", value: "is", description: "\"is\"" }, + peg$c379 = "isnt", + peg$c380 = { type: "literal", value: "isnt", description: "\"isnt\"" }, + peg$c381 = "loop", + peg$c382 = { type: "literal", value: "loop", description: "\"loop\"" }, + peg$c383 = "new", + peg$c384 = { type: "literal", value: "new", description: "\"new\"" }, + peg$c385 = "no", + peg$c386 = { type: "literal", value: "no", description: "\"no\"" }, + peg$c387 = "not", + peg$c388 = { type: "literal", value: "not", description: "\"not\"" }, + peg$c389 = "null", + peg$c390 = { type: "literal", value: "null", description: "\"null\"" }, + peg$c391 = "of", + peg$c392 = { type: "literal", value: "of", description: "\"of\"" }, + peg$c393 = "off", + peg$c394 = { type: "literal", value: "off", description: "\"off\"" }, + peg$c395 = "on", + peg$c396 = { type: "literal", value: "on", description: "\"on\"" }, + peg$c397 = "or", + peg$c398 = { type: "literal", value: "or", description: "\"or\"" }, + peg$c399 = "own", + peg$c400 = { type: "literal", value: "own", description: "\"own\"" }, + peg$c401 = "return", + peg$c402 = { type: "literal", value: "return", description: "\"return\"" }, + peg$c403 = "switch", + peg$c404 = { type: "literal", value: "switch", description: "\"switch\"" }, + peg$c405 = "then", + peg$c406 = { type: "literal", value: "then", description: "\"then\"" }, + peg$c407 = "this", + peg$c408 = { type: "literal", value: "this", description: "\"this\"" }, + peg$c409 = "throw", + peg$c410 = { type: "literal", value: "throw", description: "\"throw\"" }, + peg$c411 = "true", + peg$c412 = { type: "literal", value: "true", description: "\"true\"" }, + peg$c413 = "try", + peg$c414 = { type: "literal", value: "try", description: "\"try\"" }, + peg$c415 = "typeof", + peg$c416 = { type: "literal", value: "typeof", description: "\"typeof\"" }, + peg$c417 = "undefined", + peg$c418 = { type: "literal", value: "undefined", description: "\"undefined\"" }, + peg$c419 = "unless", + peg$c420 = { type: "literal", value: "unless", description: "\"unless\"" }, + peg$c421 = "until", + peg$c422 = { type: "literal", value: "until", description: "\"until\"" }, + peg$c423 = "when", + peg$c424 = { type: "literal", value: "when", description: "\"when\"" }, + peg$c425 = "while", + peg$c426 = { type: "literal", value: "while", description: "\"while\"" }, + peg$c427 = "yes", + peg$c428 = { type: "literal", value: "yes", description: "\"yes\"" }, + peg$c429 = "super", + peg$c430 = { type: "literal", value: "super", description: "\"super\"" }, + peg$c431 = "case", + peg$c432 = { type: "literal", value: "case", description: "\"case\"" }, + peg$c433 = "default", + peg$c434 = { type: "literal", value: "default", description: "\"default\"" }, + peg$c435 = "function", + peg$c436 = { type: "literal", value: "function", description: "\"function\"" }, + peg$c437 = "var", + peg$c438 = { type: "literal", value: "var", description: "\"var\"" }, + peg$c439 = "void", + peg$c440 = { type: "literal", value: "void", description: "\"void\"" }, + peg$c441 = "with", + peg$c442 = { type: "literal", value: "with", description: "\"with\"" }, + peg$c443 = "const", + peg$c444 = { type: "literal", value: "const", description: "\"const\"" }, + peg$c445 = "let", + peg$c446 = { type: "literal", value: "let", description: "\"let\"" }, + peg$c447 = "enum", + peg$c448 = { type: "literal", value: "enum", description: "\"enum\"" }, + peg$c449 = "export", + peg$c450 = { type: "literal", value: "export", description: "\"export\"" }, + peg$c451 = "import", + peg$c452 = { type: "literal", value: "import", description: "\"import\"" }, + peg$c453 = "native", + peg$c454 = { type: "literal", value: "native", description: "\"native\"" }, + peg$c455 = "implements", + peg$c456 = { type: "literal", value: "implements", description: "\"implements\"" }, + peg$c457 = "interface", + peg$c458 = { type: "literal", value: "interface", description: "\"interface\"" }, + peg$c459 = "package", + peg$c460 = { type: "literal", value: "package", description: "\"package\"" }, + peg$c461 = "private", + peg$c462 = { type: "literal", value: "private", description: "\"private\"" }, + peg$c463 = "protected", + peg$c464 = { type: "literal", value: "protected", description: "\"protected\"" }, + peg$c465 = "public", + peg$c466 = { type: "literal", value: "public", description: "\"public\"" }, + peg$c467 = "static", + peg$c468 = { type: "literal", value: "static", description: "\"static\"" }, + peg$c469 = "yield", + peg$c470 = { type: "literal", value: "yield", description: "\"yield\"" }, + peg$c471 = "\\u", + peg$c472 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, + peg$c473 = function(h0, h1, h2, h3) {return String.fromCharCode(parseInt(h0 + h1 + h2 + h3, 16)); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); } @@ -1928,106 +1959,106 @@ module.exports = (function() { return true; return false; }}, - peg$c470 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0531-\u0556\u10A0-\u10C5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uFF21-\uFF3Aa-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0561-\u0587\u1D00-\u1D2B\u1D62-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7C\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2D00-\u2D25\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7FA\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D61\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA717-\uA71F\uA770\uA788\uA9CF\uAA70\uAADD\uFF70\uFF9E\uFF9F\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BC0-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u2135-\u2138\u2D30-\u2D65\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400\u4DB5\u4E00\u9FCB\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, - peg$c471 = { type: "class", value: "[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0531-\\u0556\\u10A0-\\u10C5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uFF21-\\uFF3Aa-z\\xAA\\xB5\\xBA\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D62-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7C\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2D00-\\u2D25\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D61\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA9CF\\uAA70\\uAADD\\uFF70\\uFF9E\\uFF9F\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BC0-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u2135-\\u2138\\u2D30-\\u2D65\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FCB\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA2D\\uFA30-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]", description: "[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0531-\\u0556\\u10A0-\\u10C5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uFF21-\\uFF3Aa-z\\xAA\\xB5\\xBA\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D62-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7C\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2D00-\\u2D25\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D61\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA9CF\\uAA70\\uAADD\\uFF70\\uFF9E\\uFF9F\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BC0-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u2135-\\u2138\\u2D30-\\u2D65\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FCB\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA2D\\uFA30-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]" }, - peg$c472 = "\uD82C", - peg$c473 = { type: "literal", value: "\uD82C", description: "\"\\uD82C\"" }, - peg$c474 = /^[\uDC00\uDC01]/, - peg$c475 = { type: "class", value: "[\\uDC00\\uDC01]", description: "[\\uDC00\\uDC01]" }, - peg$c476 = "\uD808", - peg$c477 = { type: "literal", value: "\uD808", description: "\"\\uD808\"" }, - peg$c478 = /^[\uDC00-\uDF6E]/, - peg$c479 = { type: "class", value: "[\\uDC00-\\uDF6E]", description: "[\\uDC00-\\uDF6E]" }, - peg$c480 = "\uD869", - peg$c481 = { type: "literal", value: "\uD869", description: "\"\\uD869\"" }, - peg$c482 = /^[\uDED6\uDF00]/, - peg$c483 = { type: "class", value: "[\\uDED6\\uDF00]", description: "[\\uDED6\\uDF00]" }, - peg$c484 = "\uD809", - peg$c485 = { type: "literal", value: "\uD809", description: "\"\\uD809\"" }, - peg$c486 = /^[\uDC00-\uDC62]/, - peg$c487 = { type: "class", value: "[\\uDC00-\\uDC62]", description: "[\\uDC00-\\uDC62]" }, - peg$c488 = "\uD835", - peg$c489 = { type: "literal", value: "\uD835", description: "\"\\uD835\"" }, - peg$c490 = /^[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]/, - peg$c491 = { type: "class", value: "[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]", description: "[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]" }, - peg$c492 = "\uD804", - peg$c493 = { type: "literal", value: "\uD804", description: "\"\\uD804\"" }, - peg$c494 = /^[\uDC03-\uDC37\uDC83-\uDCAF]/, - peg$c495 = { type: "class", value: "[\\uDC03-\\uDC37\\uDC83-\\uDCAF]", description: "[\\uDC03-\\uDC37\\uDC83-\\uDCAF]" }, - peg$c496 = "\uD800", - peg$c497 = { type: "literal", value: "\uD800", description: "\"\\uD800\"" }, - peg$c498 = /^[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1E\uDF30-\uDF40\uDF42-\uDF49\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]/, - peg$c499 = { type: "class", value: "[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1E\\uDF30-\\uDF40\\uDF42-\\uDF49\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]", description: "[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1E\\uDF30-\\uDF40\\uDF42-\\uDF49\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]" }, - peg$c500 = "\uD80C", - peg$c501 = { type: "literal", value: "\uD80C", description: "\"\\uD80C\"" }, - peg$c502 = /^[\uDC00-\uDFFF]/, - peg$c503 = { type: "class", value: "[\\uDC00-\\uDFFF]", description: "[\\uDC00-\\uDFFF]" }, - peg$c504 = "\uD801", - peg$c505 = { type: "literal", value: "\uD801", description: "\"\\uD801\"" }, - peg$c506 = /^[\uDC00-\uDC9D]/, - peg$c507 = { type: "class", value: "[\\uDC00-\\uDC9D]", description: "[\\uDC00-\\uDC9D]" }, - peg$c508 = "\uD86E", - peg$c509 = { type: "literal", value: "\uD86E", description: "\"\\uD86E\"" }, - peg$c510 = /^[\uDC1D]/, - peg$c511 = { type: "class", value: "[\\uDC1D]", description: "[\\uDC1D]" }, - peg$c512 = "\uD803", - peg$c513 = { type: "literal", value: "\uD803", description: "\"\\uD803\"" }, - peg$c514 = /^[\uDC00-\uDC48]/, - peg$c515 = { type: "class", value: "[\\uDC00-\\uDC48]", description: "[\\uDC00-\\uDC48]" }, - peg$c516 = "\uD840", - peg$c517 = { type: "literal", value: "\uD840", description: "\"\\uD840\"" }, - peg$c518 = /^[\uDC00]/, - peg$c519 = { type: "class", value: "[\\uDC00]", description: "[\\uDC00]" }, - peg$c520 = "\uD87E", - peg$c521 = { type: "literal", value: "\uD87E", description: "\"\\uD87E\"" }, - peg$c522 = /^[\uDC00-\uDE1D]/, - peg$c523 = { type: "class", value: "[\\uDC00-\\uDE1D]", description: "[\\uDC00-\\uDE1D]" }, - peg$c524 = "\uD86D", - peg$c525 = { type: "literal", value: "\uD86D", description: "\"\\uD86D\"" }, - peg$c526 = /^[\uDF34\uDF40]/, - peg$c527 = { type: "class", value: "[\\uDF34\\uDF40]", description: "[\\uDF34\\uDF40]" }, - peg$c528 = "\uD81A", - peg$c529 = { type: "literal", value: "\uD81A", description: "\"\\uD81A\"" }, - peg$c530 = /^[\uDC00-\uDE38]/, - peg$c531 = { type: "class", value: "[\\uDC00-\\uDE38]", description: "[\\uDC00-\\uDE38]" }, - peg$c532 = "\uD802", - peg$c533 = { type: "literal", value: "\uD802", description: "\"\\uD802\"" }, - peg$c534 = /^[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDD00-\uDD15\uDD20-\uDD39\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72]/, - peg$c535 = { type: "class", value: "[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72]", description: "[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72]" }, - peg$c536 = "\uD80D", - peg$c537 = { type: "literal", value: "\uD80D", description: "\"\\uD80D\"" }, - peg$c538 = /^[\uDC00-\uDC2E]/, - peg$c539 = { type: "class", value: "[\\uDC00-\\uDC2E]", description: "[\\uDC00-\\uDC2E]" }, - peg$c540 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0900-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1DC0-\u1DE6\u1DFC-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F\uA67C\uA67D\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u19B0-\u19C0\u19C8\u19C9\u1A19-\u1A1B\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF2\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BD-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC]/, - peg$c541 = { type: "class", value: "[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]", description: "[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]" }, - peg$c542 = "\uDB40", - peg$c543 = { type: "literal", value: "\uDB40", description: "\"\\uDB40\"" }, - peg$c544 = /^[\uDD00-\uDDEF]/, - peg$c545 = { type: "class", value: "[\\uDD00-\\uDDEF]", description: "[\\uDD00-\\uDDEF]" }, - peg$c546 = "\uD834", - peg$c547 = { type: "literal", value: "\uD834", description: "\"\\uD834\"" }, - peg$c548 = /^[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44\uDD65\uDD66\uDD6D-\uDD72]/, - peg$c549 = { type: "class", value: "[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44\\uDD65\\uDD66\\uDD6D-\\uDD72]", description: "[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44\\uDD65\\uDD66\\uDD6D-\\uDD72]" }, - peg$c550 = /^[\uDC01\uDC38-\uDC46\uDC80\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8]/, - peg$c551 = { type: "class", value: "[\\uDC01\\uDC38-\\uDC46\\uDC80\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8]", description: "[\\uDC01\\uDC38-\\uDC46\\uDC80\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8]" }, - peg$c552 = /^[\uDDFD]/, - peg$c553 = { type: "class", value: "[\\uDDFD]", description: "[\\uDDFD]" }, - peg$c554 = /^[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F]/, - peg$c555 = { type: "class", value: "[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F]", description: "[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F]" }, - peg$c556 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, - peg$c557 = { type: "class", value: "[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]", description: "[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]" }, - peg$c558 = /^[\uDFCE-\uDFFF]/, - peg$c559 = { type: "class", value: "[\\uDFCE-\\uDFFF]", description: "[\\uDFCE-\\uDFFF]" }, - peg$c560 = /^[\uDC66-\uDC6F]/, - peg$c561 = { type: "class", value: "[\\uDC66-\\uDC6F]", description: "[\\uDC66-\\uDC6F]" }, - peg$c562 = /^[\uDCA0-\uDCA9]/, - peg$c563 = { type: "class", value: "[\\uDCA0-\\uDCA9]", description: "[\\uDCA0-\\uDCA9]" }, - peg$c564 = /^[_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F]/, - peg$c565 = { type: "class", value: "[_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]", description: "[_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]" }, - peg$c566 = "\u200C", - peg$c567 = { type: "literal", value: "\u200C", description: "\"\\u200C\"" }, - peg$c568 = "\u200D", - peg$c569 = { type: "literal", value: "\u200D", description: "\"\\u200D\"" }, + peg$c474 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0531-\u0556\u10A0-\u10C5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uFF21-\uFF3Aa-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0561-\u0587\u1D00-\u1D2B\u1D62-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7C\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2D00-\u2D25\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7FA\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D61\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA717-\uA71F\uA770\uA788\uA9CF\uAA70\uAADD\uFF70\uFF9E\uFF9F\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BC0-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u2135-\u2138\u2D30-\u2D65\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400\u4DB5\u4E00\u9FCB\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, + peg$c475 = { type: "class", value: "[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0531-\\u0556\\u10A0-\\u10C5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uFF21-\\uFF3Aa-z\\xAA\\xB5\\xBA\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D62-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7C\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2D00-\\u2D25\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D61\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA9CF\\uAA70\\uAADD\\uFF70\\uFF9E\\uFF9F\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BC0-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u2135-\\u2138\\u2D30-\\u2D65\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FCB\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA2D\\uFA30-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]", description: "[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0531-\\u0556\\u10A0-\\u10C5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uFF21-\\uFF3Aa-z\\xAA\\xB5\\xBA\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D62-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7C\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2D00-\\u2D25\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D61\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA9CF\\uAA70\\uAADD\\uFF70\\uFF9E\\uFF9F\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BC0-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u2135-\\u2138\\u2D30-\\u2D65\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FCB\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA2D\\uFA30-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]" }, + peg$c476 = "\uD82C", + peg$c477 = { type: "literal", value: "\uD82C", description: "\"\\uD82C\"" }, + peg$c478 = /^[\uDC00\uDC01]/, + peg$c479 = { type: "class", value: "[\\uDC00\\uDC01]", description: "[\\uDC00\\uDC01]" }, + peg$c480 = "\uD808", + peg$c481 = { type: "literal", value: "\uD808", description: "\"\\uD808\"" }, + peg$c482 = /^[\uDC00-\uDF6E]/, + peg$c483 = { type: "class", value: "[\\uDC00-\\uDF6E]", description: "[\\uDC00-\\uDF6E]" }, + peg$c484 = "\uD869", + peg$c485 = { type: "literal", value: "\uD869", description: "\"\\uD869\"" }, + peg$c486 = /^[\uDED6\uDF00]/, + peg$c487 = { type: "class", value: "[\\uDED6\\uDF00]", description: "[\\uDED6\\uDF00]" }, + peg$c488 = "\uD809", + peg$c489 = { type: "literal", value: "\uD809", description: "\"\\uD809\"" }, + peg$c490 = /^[\uDC00-\uDC62]/, + peg$c491 = { type: "class", value: "[\\uDC00-\\uDC62]", description: "[\\uDC00-\\uDC62]" }, + peg$c492 = "\uD835", + peg$c493 = { type: "literal", value: "\uD835", description: "\"\\uD835\"" }, + peg$c494 = /^[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]/, + peg$c495 = { type: "class", value: "[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]", description: "[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]" }, + peg$c496 = "\uD804", + peg$c497 = { type: "literal", value: "\uD804", description: "\"\\uD804\"" }, + peg$c498 = /^[\uDC03-\uDC37\uDC83-\uDCAF]/, + peg$c499 = { type: "class", value: "[\\uDC03-\\uDC37\\uDC83-\\uDCAF]", description: "[\\uDC03-\\uDC37\\uDC83-\\uDCAF]" }, + peg$c500 = "\uD800", + peg$c501 = { type: "literal", value: "\uD800", description: "\"\\uD800\"" }, + peg$c502 = /^[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1E\uDF30-\uDF40\uDF42-\uDF49\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]/, + peg$c503 = { type: "class", value: "[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1E\\uDF30-\\uDF40\\uDF42-\\uDF49\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]", description: "[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1E\\uDF30-\\uDF40\\uDF42-\\uDF49\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]" }, + peg$c504 = "\uD80C", + peg$c505 = { type: "literal", value: "\uD80C", description: "\"\\uD80C\"" }, + peg$c506 = /^[\uDC00-\uDFFF]/, + peg$c507 = { type: "class", value: "[\\uDC00-\\uDFFF]", description: "[\\uDC00-\\uDFFF]" }, + peg$c508 = "\uD801", + peg$c509 = { type: "literal", value: "\uD801", description: "\"\\uD801\"" }, + peg$c510 = /^[\uDC00-\uDC9D]/, + peg$c511 = { type: "class", value: "[\\uDC00-\\uDC9D]", description: "[\\uDC00-\\uDC9D]" }, + peg$c512 = "\uD86E", + peg$c513 = { type: "literal", value: "\uD86E", description: "\"\\uD86E\"" }, + peg$c514 = /^[\uDC1D]/, + peg$c515 = { type: "class", value: "[\\uDC1D]", description: "[\\uDC1D]" }, + peg$c516 = "\uD803", + peg$c517 = { type: "literal", value: "\uD803", description: "\"\\uD803\"" }, + peg$c518 = /^[\uDC00-\uDC48]/, + peg$c519 = { type: "class", value: "[\\uDC00-\\uDC48]", description: "[\\uDC00-\\uDC48]" }, + peg$c520 = "\uD840", + peg$c521 = { type: "literal", value: "\uD840", description: "\"\\uD840\"" }, + peg$c522 = /^[\uDC00]/, + peg$c523 = { type: "class", value: "[\\uDC00]", description: "[\\uDC00]" }, + peg$c524 = "\uD87E", + peg$c525 = { type: "literal", value: "\uD87E", description: "\"\\uD87E\"" }, + peg$c526 = /^[\uDC00-\uDE1D]/, + peg$c527 = { type: "class", value: "[\\uDC00-\\uDE1D]", description: "[\\uDC00-\\uDE1D]" }, + peg$c528 = "\uD86D", + peg$c529 = { type: "literal", value: "\uD86D", description: "\"\\uD86D\"" }, + peg$c530 = /^[\uDF34\uDF40]/, + peg$c531 = { type: "class", value: "[\\uDF34\\uDF40]", description: "[\\uDF34\\uDF40]" }, + peg$c532 = "\uD81A", + peg$c533 = { type: "literal", value: "\uD81A", description: "\"\\uD81A\"" }, + peg$c534 = /^[\uDC00-\uDE38]/, + peg$c535 = { type: "class", value: "[\\uDC00-\\uDE38]", description: "[\\uDC00-\\uDE38]" }, + peg$c536 = "\uD802", + peg$c537 = { type: "literal", value: "\uD802", description: "\"\\uD802\"" }, + peg$c538 = /^[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDD00-\uDD15\uDD20-\uDD39\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72]/, + peg$c539 = { type: "class", value: "[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72]", description: "[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72]" }, + peg$c540 = "\uD80D", + peg$c541 = { type: "literal", value: "\uD80D", description: "\"\\uD80D\"" }, + peg$c542 = /^[\uDC00-\uDC2E]/, + peg$c543 = { type: "class", value: "[\\uDC00-\\uDC2E]", description: "[\\uDC00-\\uDC2E]" }, + peg$c544 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0900-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1DC0-\u1DE6\u1DFC-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F\uA67C\uA67D\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u19B0-\u19C0\u19C8\u19C9\u1A19-\u1A1B\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF2\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BD-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC]/, + peg$c545 = { type: "class", value: "[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]", description: "[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]" }, + peg$c546 = "\uDB40", + peg$c547 = { type: "literal", value: "\uDB40", description: "\"\\uDB40\"" }, + peg$c548 = /^[\uDD00-\uDDEF]/, + peg$c549 = { type: "class", value: "[\\uDD00-\\uDDEF]", description: "[\\uDD00-\\uDDEF]" }, + peg$c550 = "\uD834", + peg$c551 = { type: "literal", value: "\uD834", description: "\"\\uD834\"" }, + peg$c552 = /^[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44\uDD65\uDD66\uDD6D-\uDD72]/, + peg$c553 = { type: "class", value: "[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44\\uDD65\\uDD66\\uDD6D-\\uDD72]", description: "[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44\\uDD65\\uDD66\\uDD6D-\\uDD72]" }, + peg$c554 = /^[\uDC01\uDC38-\uDC46\uDC80\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8]/, + peg$c555 = { type: "class", value: "[\\uDC01\\uDC38-\\uDC46\\uDC80\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8]", description: "[\\uDC01\\uDC38-\\uDC46\\uDC80\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8]" }, + peg$c556 = /^[\uDDFD]/, + peg$c557 = { type: "class", value: "[\\uDDFD]", description: "[\\uDDFD]" }, + peg$c558 = /^[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F]/, + peg$c559 = { type: "class", value: "[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F]", description: "[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F]" }, + peg$c560 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, + peg$c561 = { type: "class", value: "[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]", description: "[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]" }, + peg$c562 = /^[\uDFCE-\uDFFF]/, + peg$c563 = { type: "class", value: "[\\uDFCE-\\uDFFF]", description: "[\\uDFCE-\\uDFFF]" }, + peg$c564 = /^[\uDC66-\uDC6F]/, + peg$c565 = { type: "class", value: "[\\uDC66-\\uDC6F]", description: "[\\uDC66-\\uDC6F]" }, + peg$c566 = /^[\uDCA0-\uDCA9]/, + peg$c567 = { type: "class", value: "[\\uDCA0-\\uDCA9]", description: "[\\uDCA0-\\uDCA9]" }, + peg$c568 = /^[_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F]/, + peg$c569 = { type: "class", value: "[_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]", description: "[_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]" }, + peg$c570 = "\u200C", + peg$c571 = { type: "literal", value: "\u200C", description: "\"\\u200C\"" }, + peg$c572 = "\u200D", + peg$c573 = { type: "literal", value: "\u200D", description: "\"\\u200D\"" }, peg$currPos = 0, peg$reportedPos = 0, @@ -2199,7 +2230,7 @@ module.exports = (function() { function peg$parseprogram() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 0, + var key = peg$currPos * 205 + 0, cached = peg$cache[key]; if (cached) { @@ -2244,7 +2275,7 @@ module.exports = (function() { function peg$parsetoplevelBlock() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 1, + var key = peg$currPos * 205 + 1, cached = peg$cache[key]; if (cached) { @@ -2345,7 +2376,7 @@ module.exports = (function() { function peg$parsetoplevelStatement() { var s0, s1, s2; - var key = peg$currPos * 204 + 2, + var key = peg$currPos * 205 + 2, cached = peg$cache[key]; if (cached) { @@ -2393,7 +2424,7 @@ module.exports = (function() { function peg$parseblock() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 3, + var key = peg$currPos * 205 + 3, cached = peg$cache[key]; if (cached) { @@ -2494,7 +2525,7 @@ module.exports = (function() { function peg$parsestatement() { var s0; - var key = peg$currPos * 204 + 4, + var key = peg$currPos * 205 + 4, cached = peg$cache[key]; if (cached) { @@ -2527,7 +2558,7 @@ module.exports = (function() { function peg$parseexpression() { var s0; - var key = peg$currPos * 204 + 5, + var key = peg$currPos * 205 + 5, cached = peg$cache[key]; if (cached) { @@ -2548,7 +2579,7 @@ module.exports = (function() { function peg$parsesecondaryStatement() { var s0; - var key = peg$currPos * 204 + 6, + var key = peg$currPos * 205 + 6, cached = peg$cache[key]; if (cached) { @@ -2581,7 +2612,7 @@ module.exports = (function() { function peg$parsesecondaryExpression() { var s0; - var key = peg$currPos * 204 + 7, + var key = peg$currPos * 205 + 7, cached = peg$cache[key]; if (cached) { @@ -2602,7 +2633,7 @@ module.exports = (function() { function peg$parsesecondaryExpressionNoImplicitObjectCall() { var s0; - var key = peg$currPos * 204 + 8, + var key = peg$currPos * 205 + 8, cached = peg$cache[key]; if (cached) { @@ -2623,7 +2654,7 @@ module.exports = (function() { function peg$parseexpressionworthy() { var s0; - var key = peg$currPos * 204 + 9, + var key = peg$currPos * 205 + 9, cached = peg$cache[key]; if (cached) { @@ -2668,7 +2699,7 @@ module.exports = (function() { function peg$parseseqExpression() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 10, + var key = peg$currPos * 205 + 10, cached = peg$cache[key]; if (cached) { @@ -2746,7 +2777,7 @@ module.exports = (function() { function peg$parsepostfixControlFlowExpression() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 11, + var key = peg$currPos * 205 + 11, cached = peg$cache[key]; if (cached) { @@ -2812,7 +2843,7 @@ module.exports = (function() { function peg$parsepostfixControlFlowOp() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14; - var key = peg$currPos * 204 + 12, + var key = peg$currPos * 205 + 12, cached = peg$cache[key]; if (cached) { @@ -3204,7 +3235,7 @@ module.exports = (function() { function peg$parseassignmentExpression() { var s0; - var key = peg$currPos * 204 + 13, + var key = peg$currPos * 205 + 13, cached = peg$cache[key]; if (cached) { @@ -3231,7 +3262,7 @@ module.exports = (function() { function peg$parseassignmentOp() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 14, + var key = peg$currPos * 205 + 14, cached = peg$cache[key]; if (cached) { @@ -3351,7 +3382,7 @@ module.exports = (function() { function peg$parsecompoundAssignmentOp() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - var key = peg$currPos * 204 + 15, + var key = peg$currPos * 205 + 15, cached = peg$cache[key]; if (cached) { @@ -3477,7 +3508,7 @@ module.exports = (function() { function peg$parseCompoundAssignmentOperators() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 16, + var key = peg$currPos * 205 + 16, cached = peg$cache[key]; if (cached) { @@ -3642,7 +3673,7 @@ module.exports = (function() { function peg$parseexistsAssignmentOp() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 17, + var key = peg$currPos * 205 + 17, cached = peg$cache[key]; if (cached) { @@ -3747,7 +3778,7 @@ module.exports = (function() { function peg$parseassignmentExpressionNoImplicitObjectCall() { var s0; - var key = peg$currPos * 204 + 18, + var key = peg$currPos * 205 + 18, cached = peg$cache[key]; if (cached) { @@ -3774,7 +3805,7 @@ module.exports = (function() { function peg$parseassignmentOpNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 19, + var key = peg$currPos * 205 + 19, cached = peg$cache[key]; if (cached) { @@ -3894,7 +3925,7 @@ module.exports = (function() { function peg$parsecompoundAssignmentOpNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - var key = peg$currPos * 204 + 20, + var key = peg$currPos * 205 + 20, cached = peg$cache[key]; if (cached) { @@ -4020,7 +4051,7 @@ module.exports = (function() { function peg$parseexistsAssignmentOpNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 21, + var key = peg$currPos * 205 + 21, cached = peg$cache[key]; if (cached) { @@ -4125,7 +4156,7 @@ module.exports = (function() { function peg$parsebinaryExpression() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 22, + var key = peg$currPos * 205 + 22, cached = peg$cache[key]; if (cached) { @@ -4241,7 +4272,7 @@ module.exports = (function() { function peg$parsebinaryOperator() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 23, + var key = peg$currPos * 205 + 23, cached = peg$cache[key]; if (cached) { @@ -4395,7 +4426,7 @@ module.exports = (function() { function peg$parsebinaryExpressionNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 24, + var key = peg$currPos * 205 + 24, cached = peg$cache[key]; if (cached) { @@ -4511,7 +4542,7 @@ module.exports = (function() { function peg$parseprefixExpression() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 25, + var key = peg$currPos * 205 + 25, cached = peg$cache[key]; if (cached) { @@ -4619,7 +4650,7 @@ module.exports = (function() { function peg$parsePrefixOperators() { var s0; - var key = peg$currPos * 204 + 26, + var key = peg$currPos * 205 + 26, cached = peg$cache[key]; if (cached) { @@ -4700,7 +4731,7 @@ module.exports = (function() { function peg$parsenfe() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 27, + var key = peg$currPos * 205 + 27, cached = peg$cache[key]; if (cached) { @@ -4772,7 +4803,7 @@ module.exports = (function() { function peg$parseprefixExpressionNoImplicitObjectCall() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 28, + var key = peg$currPos * 205 + 28, cached = peg$cache[key]; if (cached) { @@ -4880,7 +4911,7 @@ module.exports = (function() { function peg$parsepostfixExpression() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 29, + var key = peg$currPos * 205 + 29, cached = peg$cache[key]; if (cached) { @@ -4918,7 +4949,7 @@ module.exports = (function() { function peg$parsePostfixOperators() { var s0; - var key = peg$currPos * 204 + 30, + var key = peg$currPos * 205 + 30, cached = peg$cache[key]; if (cached) { @@ -4969,7 +5000,7 @@ module.exports = (function() { function peg$parsepostfixExpressionNoImplicitObjectCall() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 31, + var key = peg$currPos * 205 + 31, cached = peg$cache[key]; if (cached) { @@ -5007,7 +5038,7 @@ module.exports = (function() { function peg$parseleftHandSideExpression() { var s0; - var key = peg$currPos * 204 + 32, + var key = peg$currPos * 205 + 32, cached = peg$cache[key]; if (cached) { @@ -5028,7 +5059,7 @@ module.exports = (function() { function peg$parseargumentList() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 33, + var key = peg$currPos * 205 + 33, cached = peg$cache[key]; if (cached) { @@ -5109,7 +5140,7 @@ module.exports = (function() { function peg$parseargumentListContents() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 34, + var key = peg$currPos * 205 + 34, cached = peg$cache[key]; if (cached) { @@ -5270,7 +5301,7 @@ module.exports = (function() { function peg$parseargument() { var s0; - var key = peg$currPos * 204 + 35, + var key = peg$currPos * 205 + 35, cached = peg$cache[key]; if (cached) { @@ -5291,7 +5322,7 @@ module.exports = (function() { function peg$parsesecondaryArgumentList() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; - var key = peg$currPos * 204 + 36, + var key = peg$currPos * 205 + 36, cached = peg$cache[key]; if (cached) { @@ -5535,7 +5566,7 @@ module.exports = (function() { function peg$parsesecondaryArgument() { var s0; - var key = peg$currPos * 204 + 37, + var key = peg$currPos * 205 + 37, cached = peg$cache[key]; if (cached) { @@ -5559,7 +5590,7 @@ module.exports = (function() { function peg$parseleftHandSideExpressionNoImplicitObjectCall() { var s0; - var key = peg$currPos * 204 + 38, + var key = peg$currPos * 205 + 38, cached = peg$cache[key]; if (cached) { @@ -5580,7 +5611,7 @@ module.exports = (function() { function peg$parsesecondaryArgumentListNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; - var key = peg$currPos * 204 + 39, + var key = peg$currPos * 205 + 39, cached = peg$cache[key]; if (cached) { @@ -5755,7 +5786,7 @@ module.exports = (function() { function peg$parsesecondaryArgumentNoImplicitObjectCall() { var s0; - var key = peg$currPos * 204 + 40, + var key = peg$currPos * 205 + 40, cached = peg$cache[key]; if (cached) { @@ -5776,7 +5807,7 @@ module.exports = (function() { function peg$parsecallExpression() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 41, + var key = peg$currPos * 205 + 41, cached = peg$cache[key]; if (cached) { @@ -5785,43 +5816,20 @@ module.exports = (function() { } s0 = peg$currPos; - s1 = peg$parsememberExpression(); + s1 = peg$parseSUPER(); if (s1 !== peg$FAILED) { s2 = peg$parsecallExpressionAccesses(); if (s2 === peg$FAILED) { s2 = peg$c1; } if (s2 !== peg$FAILED) { - s3 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 63) { - s4 = peg$c22; - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c23); } - } - if (s4 === peg$FAILED) { - s4 = peg$c1; - } - if (s4 !== peg$FAILED) { - s5 = peg$parsesecondaryArgumentList(); - if (s5 !== peg$FAILED) { - s4 = [s4, s5]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$c0; - } - } else { - peg$currPos = s3; - s3 = peg$c0; - } + s3 = peg$parsesecondaryArgumentList(); if (s3 === peg$FAILED) { s3 = peg$c1; } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c86(s1, s2, s3); + s1 = peg$c86(s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -5835,6 +5843,59 @@ module.exports = (function() { peg$currPos = s0; s0 = peg$c0; } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsememberExpression(); + if (s1 !== peg$FAILED) { + s2 = peg$parsecallExpressionAccesses(); + if (s2 === peg$FAILED) { + s2 = peg$c1; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 63) { + s4 = peg$c22; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s4 === peg$FAILED) { + s4 = peg$c1; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesecondaryArgumentList(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c0; + } + } else { + peg$currPos = s3; + s3 = peg$c0; + } + if (s3 === peg$FAILED) { + s3 = peg$c1; + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c87(s1, s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c0; + } + } else { + peg$currPos = s0; + s0 = peg$c0; + } + } else { + peg$currPos = s0; + s0 = peg$c0; + } + } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -5844,7 +5905,7 @@ module.exports = (function() { function peg$parsecallExpressionAccesses() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 42, + var key = peg$currPos * 205 + 42, cached = peg$cache[key]; if (cached) { @@ -5860,7 +5921,7 @@ module.exports = (function() { s3 = peg$parseDEDENT(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c87(s2); + s1 = peg$c88(s2); s0 = s1; } else { peg$currPos = s0; @@ -5899,7 +5960,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c88(s1, s2); + s1 = peg$c89(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -5919,7 +5980,7 @@ module.exports = (function() { function peg$parsecallExpressionNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 43, + var key = peg$currPos * 205 + 43, cached = peg$cache[key]; if (cached) { @@ -5928,51 +5989,20 @@ module.exports = (function() { } s0 = peg$currPos; - s1 = peg$parsememberExpressionNoImplicitObjectCall(); + s1 = peg$parseSUPER(); if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseargumentList(); - if (s3 === peg$FAILED) { - s3 = peg$parseMemberAccessOps(); - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseargumentList(); - if (s3 === peg$FAILED) { - s3 = peg$parseMemberAccessOps(); - } + s2 = peg$parsecallExpressionAccesses(); + if (s2 === peg$FAILED) { + s2 = peg$c1; } if (s2 !== peg$FAILED) { - s3 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 63) { - s4 = peg$c22; - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c23); } - } - if (s4 === peg$FAILED) { - s4 = peg$c1; - } - if (s4 !== peg$FAILED) { - s5 = peg$parsesecondaryArgumentListNoImplicitObjectCall(); - if (s5 !== peg$FAILED) { - s4 = [s4, s5]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$c0; - } - } else { - peg$currPos = s3; - s3 = peg$c0; - } + s3 = peg$parsesecondaryArgumentList(); if (s3 === peg$FAILED) { s3 = peg$c1; } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c86(s1, s2, s3); + s1 = peg$c86(s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -5986,6 +6016,67 @@ module.exports = (function() { peg$currPos = s0; s0 = peg$c0; } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsememberExpressionNoImplicitObjectCall(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseargumentList(); + if (s3 === peg$FAILED) { + s3 = peg$parseMemberAccessOps(); + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseargumentList(); + if (s3 === peg$FAILED) { + s3 = peg$parseMemberAccessOps(); + } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 63) { + s4 = peg$c22; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s4 === peg$FAILED) { + s4 = peg$c1; + } + if (s4 !== peg$FAILED) { + s5 = peg$parsesecondaryArgumentListNoImplicitObjectCall(); + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c0; + } + } else { + peg$currPos = s3; + s3 = peg$c0; + } + if (s3 === peg$FAILED) { + s3 = peg$c1; + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c87(s1, s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c0; + } + } else { + peg$currPos = s0; + s0 = peg$c0; + } + } else { + peg$currPos = s0; + s0 = peg$c0; + } + } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -5995,7 +6086,7 @@ module.exports = (function() { function peg$parsenewExpression() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 44, + var key = peg$currPos * 205 + 44, cached = peg$cache[key]; if (cached) { @@ -6019,7 +6110,7 @@ module.exports = (function() { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c89(s3); + s1 = peg$c90(s3); s0 = s1; } else { peg$currPos = s0; @@ -6043,7 +6134,7 @@ module.exports = (function() { function peg$parsenewExpressionNoImplicitObjectCall() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 45, + var key = peg$currPos * 205 + 45, cached = peg$cache[key]; if (cached) { @@ -6067,7 +6158,7 @@ module.exports = (function() { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c89(s3); + s1 = peg$c90(s3); s0 = s1; } else { peg$currPos = s0; @@ -6091,7 +6182,7 @@ module.exports = (function() { function peg$parsememberExpression() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 46, + var key = peg$currPos * 205 + 46, cached = peg$cache[key]; if (cached) { @@ -6112,7 +6203,7 @@ module.exports = (function() { s5 = peg$parseargumentList(); if (s5 !== peg$FAILED) { peg$reportedPos = s1; - s2 = peg$c90(s4, s5); + s2 = peg$c91(s4, s5); s1 = s2; } else { peg$currPos = s1; @@ -6140,7 +6231,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c91(s1, s2); + s1 = peg$c92(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -6161,7 +6252,7 @@ module.exports = (function() { s4 = peg$parsesecondaryArgumentList(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c92(s3, s4); + s1 = peg$c93(s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -6189,7 +6280,7 @@ module.exports = (function() { function peg$parsememberAccess() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 47, + var key = peg$currPos * 205 + 47, cached = peg$cache[key]; if (cached) { @@ -6210,7 +6301,7 @@ module.exports = (function() { s5 = peg$parseargumentList(); if (s5 !== peg$FAILED) { peg$reportedPos = s1; - s2 = peg$c90(s4, s5); + s2 = peg$c91(s4, s5); s1 = s2; } else { peg$currPos = s1; @@ -6276,7 +6367,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c93(s1, s2); + s1 = peg$c94(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -6298,7 +6389,7 @@ module.exports = (function() { function peg$parseMemberAccessOps() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; - var key = peg$currPos * 204 + 48, + var key = peg$currPos * 205 + 48, cached = peg$cache[key]; if (cached) { @@ -6310,11 +6401,11 @@ module.exports = (function() { s1 = peg$parseTERMINDENT(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 46) { - s2 = peg$c94; + s2 = peg$c95; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c95); } + if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s2 !== peg$FAILED) { s3 = peg$parse_(); @@ -6331,7 +6422,7 @@ module.exports = (function() { s6 = peg$parseDEDENT(); if (s6 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c96(s4); + s1 = peg$c97(s4); s0 = s1; } else { peg$currPos = s0; @@ -6367,11 +6458,11 @@ module.exports = (function() { s2 = peg$parse_(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 46) { - s3 = peg$c94; + s3 = peg$c95; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c95); } + if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s3 !== peg$FAILED) { s4 = peg$parseTERMINATOR(); @@ -6384,7 +6475,7 @@ module.exports = (function() { s6 = peg$parseidentifierName(); if (s6 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c96(s6); + s1 = peg$c97(s6); s0 = s1; } else { peg$currPos = s0; @@ -6412,12 +6503,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c97) { - s1 = peg$c97; + if (input.substr(peg$currPos, 2) === peg$c98) { + s1 = peg$c98; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c98); } + if (peg$silentFails === 0) { peg$fail(peg$c99); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6425,7 +6516,7 @@ module.exports = (function() { s3 = peg$parseidentifierName(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c99(s3); + s1 = peg$c100(s3); s0 = s1; } else { peg$currPos = s0; @@ -6442,11 +6533,11 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6456,15 +6547,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c102; + s5 = peg$c103; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c104(s3); + s1 = peg$c105(s3); s0 = s1; } else { peg$currPos = s0; @@ -6488,12 +6579,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c105) { - s1 = peg$c105; + if (input.substr(peg$currPos, 2) === peg$c106) { + s1 = peg$c106; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c106); } + if (peg$silentFails === 0) { peg$fail(peg$c107); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6503,15 +6594,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c102; + s5 = peg$c103; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c107(s3); + s1 = peg$c108(s3); s0 = s1; } else { peg$currPos = s0; @@ -6535,12 +6626,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c108) { - s1 = peg$c108; + if (input.substr(peg$currPos, 2) === peg$c109) { + s1 = peg$c109; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c109); } + if (peg$silentFails === 0) { peg$fail(peg$c110); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6548,7 +6639,7 @@ module.exports = (function() { s3 = peg$parseidentifierName(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c110(s3); + s1 = peg$c111(s3); s0 = s1; } else { peg$currPos = s0; @@ -6564,12 +6655,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c111) { - s1 = peg$c111; + if (input.substr(peg$currPos, 3) === peg$c112) { + s1 = peg$c112; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c112); } + if (peg$silentFails === 0) { peg$fail(peg$c113); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6579,15 +6670,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c102; + s5 = peg$c103; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c113(s3); + s1 = peg$c114(s3); s0 = s1; } else { peg$currPos = s0; @@ -6611,12 +6702,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c114) { - s1 = peg$c114; + if (input.substr(peg$currPos, 3) === peg$c115) { + s1 = peg$c115; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c115); } + if (peg$silentFails === 0) { peg$fail(peg$c116); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6624,7 +6715,7 @@ module.exports = (function() { s3 = peg$parseidentifierName(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c116(s3); + s1 = peg$c117(s3); s0 = s1; } else { peg$currPos = s0; @@ -6640,12 +6731,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c117) { - s1 = peg$c117; + if (input.substr(peg$currPos, 4) === peg$c118) { + s1 = peg$c118; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c118); } + if (peg$silentFails === 0) { peg$fail(peg$c119); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6655,15 +6746,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c102; + s5 = peg$c103; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c119(s3); + s1 = peg$c120(s3); s0 = s1; } else { peg$currPos = s0; @@ -6688,11 +6779,11 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -6704,20 +6795,20 @@ module.exports = (function() { if (s3 !== peg$FAILED) { s4 = peg$parse_(); if (s4 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c120) { - s5 = peg$c120; + if (input.substr(peg$currPos, 2) === peg$c121) { + s5 = peg$c121; peg$currPos += 2; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c121); } + if (peg$silentFails === 0) { peg$fail(peg$c122); } } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 46) { - s6 = peg$c94; + s6 = peg$c95; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c95); } + if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s6 === peg$FAILED) { s6 = peg$c1; @@ -6733,15 +6824,15 @@ module.exports = (function() { s9 = peg$parse_(); if (s9 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s10 = peg$c102; + s10 = peg$c103; peg$currPos++; } else { s10 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s10 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c122(s3, s6, s8); + s1 = peg$c123(s3, s6, s8); s0 = s1; } else { peg$currPos = s0; @@ -6801,7 +6892,7 @@ module.exports = (function() { function peg$parsememberExpressionNoImplicitObjectCall() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 49, + var key = peg$currPos * 205 + 49, cached = peg$cache[key]; if (cached) { @@ -6822,7 +6913,7 @@ module.exports = (function() { s5 = peg$parseargumentList(); if (s5 !== peg$FAILED) { peg$reportedPos = s1; - s2 = peg$c90(s4, s5); + s2 = peg$c91(s4, s5); s1 = s2; } else { peg$currPos = s1; @@ -6850,7 +6941,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c91(s1, s2); + s1 = peg$c92(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -6871,7 +6962,7 @@ module.exports = (function() { s4 = peg$parsesecondaryArgumentListNoImplicitObjectCall(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c92(s3, s4); + s1 = peg$c93(s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -6899,7 +6990,7 @@ module.exports = (function() { function peg$parseprimaryExpression() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 50, + var key = peg$currPos * 205 + 50, cached = peg$cache[key]; if (cached) { @@ -6923,16 +7014,16 @@ module.exports = (function() { s1 = peg$parseTHIS(); if (s1 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 64) { - s1 = peg$c123; + s1 = peg$c124; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c124); } + if (peg$silentFails === 0) { peg$fail(peg$c125); } } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c125(); + s1 = peg$c126(); } s0 = s1; if (s0 === peg$FAILED) { @@ -6981,7 +7072,7 @@ module.exports = (function() { } if (s6 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c126(s3); + s1 = peg$c127(s3); s0 = s1; } else { peg$currPos = s0; @@ -7039,7 +7130,7 @@ module.exports = (function() { } if (s7 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c126(s3); + s1 = peg$c127(s3); s0 = s1; } else { peg$currPos = s0; @@ -7094,7 +7185,7 @@ module.exports = (function() { function peg$parsecontextVar() { var s0, s1, s2; - var key = peg$currPos * 204 + 51, + var key = peg$currPos * 205 + 51, cached = peg$cache[key]; if (cached) { @@ -7105,22 +7196,22 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { - s2 = peg$c123; + s2 = peg$c124; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c124); } + if (peg$silentFails === 0) { peg$fail(peg$c125); } } if (s2 !== peg$FAILED) { peg$reportedPos = s1; - s2 = peg$c125(); + s2 = peg$c126(); } s1 = s2; if (s1 !== peg$FAILED) { s2 = peg$parseidentifierName(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c127(s1, s2); + s1 = peg$c128(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -7139,7 +7230,7 @@ module.exports = (function() { function peg$parseJSLiteral() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 52, + var key = peg$currPos * 205 + 52, cached = peg$cache[key]; if (cached) { @@ -7149,30 +7240,30 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 96) { - s1 = peg$c128; + s1 = peg$c129; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c129); } + if (peg$silentFails === 0) { peg$fail(peg$c130); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; - if (peg$c130.test(input.charAt(peg$currPos))) { + if (peg$c131.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c131); } + if (peg$silentFails === 0) { peg$fail(peg$c132); } } while (s4 !== peg$FAILED) { s3.push(s4); - if (peg$c130.test(input.charAt(peg$currPos))) { + if (peg$c131.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c131); } + if (peg$silentFails === 0) { peg$fail(peg$c132); } } } if (s3 !== peg$FAILED) { @@ -7181,15 +7272,15 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 96) { - s3 = peg$c128; + s3 = peg$c129; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c129); } + if (peg$silentFails === 0) { peg$fail(peg$c130); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c132(s2); + s1 = peg$c133(s2); s0 = s1; } else { peg$currPos = s0; @@ -7212,7 +7303,7 @@ module.exports = (function() { function peg$parsespread() { var s0, s1, s2; - var key = peg$currPos * 204 + 53, + var key = peg$currPos * 205 + 53, cached = peg$cache[key]; if (cached) { @@ -7223,16 +7314,16 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$parsepostfixExpression(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c133) { - s2 = peg$c133; + if (input.substr(peg$currPos, 3) === peg$c134) { + s2 = peg$c134; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c134); } + if (peg$silentFails === 0) { peg$fail(peg$c135); } } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c135(s1); + s1 = peg$c136(s1); s0 = s1; } else { peg$currPos = s0; @@ -7251,7 +7342,7 @@ module.exports = (function() { function peg$parsespreadNoImplicitObjectCall() { var s0, s1, s2; - var key = peg$currPos * 204 + 54, + var key = peg$currPos * 205 + 54, cached = peg$cache[key]; if (cached) { @@ -7262,16 +7353,16 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$parsepostfixExpressionNoImplicitObjectCall(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c133) { - s2 = peg$c133; + if (input.substr(peg$currPos, 3) === peg$c134) { + s2 = peg$c134; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c134); } + if (peg$silentFails === 0) { peg$fail(peg$c135); } } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c135(s1); + s1 = peg$c136(s1); s0 = s1; } else { peg$currPos = s0; @@ -7290,7 +7381,7 @@ module.exports = (function() { function peg$parseconditional() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 55, + var key = peg$currPos * 205 + 55, cached = peg$cache[key]; if (cached) { @@ -7316,7 +7407,7 @@ module.exports = (function() { } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c136(s1, s3, s4, s5); + s1 = peg$c137(s1, s3, s4, s5); s0 = s1; } else { peg$currPos = s0; @@ -7347,7 +7438,7 @@ module.exports = (function() { function peg$parseconditionalBody() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 56, + var key = peg$currPos * 205 + 56, cached = peg$cache[key]; if (cached) { @@ -7365,7 +7456,7 @@ module.exports = (function() { s4 = peg$parseDEDENT(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c137(s3); + s1 = peg$c138(s3); s0 = s1; } else { peg$currPos = s0; @@ -7399,7 +7490,7 @@ module.exports = (function() { s5 = peg$parsestatement(); if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c138(s5); + s1 = peg$c139(s5); s0 = s1; } else { peg$currPos = s0; @@ -7428,7 +7519,7 @@ module.exports = (function() { s2 = peg$parseTHEN(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c139(); + s1 = peg$c140(); s0 = s1; } else { peg$currPos = s0; @@ -7449,7 +7540,7 @@ module.exports = (function() { function peg$parseelseClause() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 57, + var key = peg$currPos * 205 + 57, cached = peg$cache[key]; if (cached) { @@ -7472,7 +7563,7 @@ module.exports = (function() { s5 = peg$parsefunctionBody(); if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c140(s5); + s1 = peg$c141(s5); s0 = s1; } else { peg$currPos = s0; @@ -7503,7 +7594,7 @@ module.exports = (function() { function peg$parsewhile() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 58, + var key = peg$currPos * 205 + 58, cached = peg$cache[key]; if (cached) { @@ -7524,7 +7615,7 @@ module.exports = (function() { s4 = peg$parseconditionalBody(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c141(s1, s3, s4); + s1 = peg$c142(s1, s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -7551,7 +7642,7 @@ module.exports = (function() { function peg$parseloop() { var s0, s1, s2; - var key = peg$currPos * 204 + 59, + var key = peg$currPos * 205 + 59, cached = peg$cache[key]; if (cached) { @@ -7565,7 +7656,7 @@ module.exports = (function() { s2 = peg$parseconditionalBody(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c142(s2); + s1 = peg$c143(s2); s0 = s1; } else { peg$currPos = s0; @@ -7584,7 +7675,7 @@ module.exports = (function() { function peg$parsetry() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 60, + var key = peg$currPos * 205 + 60, cached = peg$cache[key]; if (cached) { @@ -7608,7 +7699,7 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c143(s2, s3, s4); + s1 = peg$c144(s2, s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -7635,7 +7726,7 @@ module.exports = (function() { function peg$parsetryBody() { var s0, s1; - var key = peg$currPos * 204 + 61, + var key = peg$currPos * 205 + 61, cached = peg$cache[key]; if (cached) { @@ -7647,7 +7738,7 @@ module.exports = (function() { s1 = peg$parsefunctionBody(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c137(s1); + s1 = peg$c138(s1); } s0 = s1; @@ -7659,7 +7750,7 @@ module.exports = (function() { function peg$parsecatchClause() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 62, + var key = peg$currPos * 205 + 62, cached = peg$cache[key]; if (cached) { @@ -7690,7 +7781,7 @@ module.exports = (function() { } if (s6 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c144(s5, s6); + s1 = peg$c145(s5, s6); s0 = s1; } else { peg$currPos = s0; @@ -7725,7 +7816,7 @@ module.exports = (function() { function peg$parsefinallyClause() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 63, + var key = peg$currPos * 205 + 63, cached = peg$cache[key]; if (cached) { @@ -7749,7 +7840,7 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c145(s4); + s1 = peg$c146(s4); s0 = s1; } else { peg$currPos = s0; @@ -7776,7 +7867,7 @@ module.exports = (function() { function peg$parseclass() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 64, + var key = peg$currPos * 205 + 64, cached = peg$cache[key]; if (cached) { @@ -7842,7 +7933,7 @@ module.exports = (function() { s4 = peg$parseclassBody(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c146(s2, s3, s4); + s1 = peg$c147(s2, s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -7869,7 +7960,7 @@ module.exports = (function() { function peg$parseclassBody() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 65, + var key = peg$currPos * 205 + 65, cached = peg$cache[key]; if (cached) { @@ -7887,7 +7978,7 @@ module.exports = (function() { s4 = peg$parseDEDENT(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c140(s3); + s1 = peg$c141(s3); s0 = s1; } else { peg$currPos = s0; @@ -7964,7 +8055,7 @@ module.exports = (function() { function peg$parseclassBlock() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 66, + var key = peg$currPos * 205 + 66, cached = peg$cache[key]; if (cached) { @@ -8065,7 +8156,7 @@ module.exports = (function() { function peg$parseclassStatement() { var s0; - var key = peg$currPos * 204 + 67, + var key = peg$currPos * 205 + 67, cached = peg$cache[key]; if (cached) { @@ -8092,7 +8183,7 @@ module.exports = (function() { function peg$parseconstructor() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 68, + var key = peg$currPos * 205 + 68, cached = peg$cache[key]; if (cached) { @@ -8105,7 +8196,7 @@ module.exports = (function() { s2 = peg$parseObjectInitialiserKeys(); if (s2 !== peg$FAILED) { peg$reportedPos = peg$currPos; - s3 = peg$c147(s2); + s3 = peg$c148(s2); if (s3) { s3 = peg$c6; } else { @@ -8126,11 +8217,11 @@ module.exports = (function() { s2 = peg$parse_(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s3 = peg$c148; + s3 = peg$c149; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c149); } + if (peg$silentFails === 0) { peg$fail(peg$c150); } } if (s3 !== peg$FAILED) { s4 = peg$parse_(); @@ -8186,7 +8277,7 @@ module.exports = (function() { } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c150(s2, s5); + s1 = peg$c151(s2, s5); s0 = s1; } else { peg$currPos = s0; @@ -8217,7 +8308,7 @@ module.exports = (function() { function peg$parsestaticAssignment() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 69, + var key = peg$currPos * 205 + 69, cached = peg$cache[key]; if (cached) { @@ -8231,11 +8322,11 @@ module.exports = (function() { s2 = peg$parse_(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s3 = peg$c148; + s3 = peg$c149; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c149); } + if (peg$silentFails === 0) { peg$fail(peg$c150); } } if (s3 !== peg$FAILED) { s4 = peg$parse_(); @@ -8248,7 +8339,7 @@ module.exports = (function() { s8 = peg$parseDEDENT(); if (s8 !== peg$FAILED) { peg$reportedPos = s5; - s6 = peg$c151(s7); + s6 = peg$c152(s7); s5 = s6; } else { peg$currPos = s5; @@ -8274,7 +8365,7 @@ module.exports = (function() { s8 = peg$parseexpression(); if (s8 !== peg$FAILED) { peg$reportedPos = s5; - s6 = peg$c151(s8); + s6 = peg$c152(s8); s5 = s6; } else { peg$currPos = s5; @@ -8291,7 +8382,7 @@ module.exports = (function() { } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c152(s1, s5); + s1 = peg$c153(s1, s5); s0 = s1; } else { peg$currPos = s0; @@ -8322,7 +8413,7 @@ module.exports = (function() { function peg$parseclassProtoAssignment() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 70, + var key = peg$currPos * 205 + 70, cached = peg$cache[key]; if (cached) { @@ -8336,11 +8427,11 @@ module.exports = (function() { s2 = peg$parse_(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s3 = peg$c148; + s3 = peg$c149; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c149); } + if (peg$silentFails === 0) { peg$fail(peg$c150); } } if (s3 !== peg$FAILED) { s4 = peg$parse_(); @@ -8353,7 +8444,7 @@ module.exports = (function() { s8 = peg$parseDEDENT(); if (s8 !== peg$FAILED) { peg$reportedPos = s5; - s6 = peg$c151(s7); + s6 = peg$c152(s7); s5 = s6; } else { peg$currPos = s5; @@ -8372,7 +8463,7 @@ module.exports = (function() { s6 = peg$parsesingleLineImplicitObjectLiteral(); if (s6 !== peg$FAILED) { peg$reportedPos = s5; - s6 = peg$c151(s6); + s6 = peg$c152(s6); } s5 = s6; if (s5 === peg$FAILED) { @@ -8387,7 +8478,7 @@ module.exports = (function() { s8 = peg$parsesecondaryExpression(); if (s8 !== peg$FAILED) { peg$reportedPos = s5; - s6 = peg$c151(s8); + s6 = peg$c152(s8); s5 = s6; } else { peg$currPos = s5; @@ -8405,7 +8496,7 @@ module.exports = (function() { } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c153(s1, s5); + s1 = peg$c154(s1, s5); s0 = s1; } else { peg$currPos = s0; @@ -8436,7 +8527,7 @@ module.exports = (function() { function peg$parseforOf() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; - var key = peg$currPos * 204 + 71, + var key = peg$currPos * 205 + 71, cached = peg$cache[key]; if (cached) { @@ -8553,7 +8644,7 @@ module.exports = (function() { s12 = peg$parseconditionalBody(); if (s12 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c154(s3, s4, s6, s9, s11, s12); + s1 = peg$c155(s3, s4, s6, s9, s11, s12); s0 = s1; } else { peg$currPos = s0; @@ -8612,7 +8703,7 @@ module.exports = (function() { function peg$parseforIn() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; - var key = peg$currPos * 204 + 72, + var key = peg$currPos * 205 + 72, cached = peg$cache[key]; if (cached) { @@ -8762,7 +8853,7 @@ module.exports = (function() { s10 = peg$parseconditionalBody(); if (s10 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c155(s3, s6, s8, s9, s10); + s1 = peg$c156(s3, s6, s8, s9, s10); s0 = s1; } else { peg$currPos = s0; @@ -8813,7 +8904,7 @@ module.exports = (function() { function peg$parseswitch() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 73, + var key = peg$currPos * 205 + 73, cached = peg$cache[key]; if (cached) { @@ -8837,7 +8928,7 @@ module.exports = (function() { s4 = peg$parseswitchBody(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c156(s3, s4); + s1 = peg$c157(s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -8864,7 +8955,7 @@ module.exports = (function() { function peg$parseswitchBody() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 74, + var key = peg$currPos * 205 + 74, cached = peg$cache[key]; if (cached) { @@ -8882,7 +8973,7 @@ module.exports = (function() { s4 = peg$parseDEDENT(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c157(s3); + s1 = peg$c158(s3); s0 = s1; } else { peg$currPos = s0; @@ -8911,7 +9002,7 @@ module.exports = (function() { s4 = peg$parsecase(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c158(s4); + s1 = peg$c159(s4); s0 = s1; } else { peg$currPos = s0; @@ -8936,7 +9027,7 @@ module.exports = (function() { s2 = peg$parseTHEN(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c159(); + s1 = peg$c160(); s0 = s1; } else { peg$currPos = s0; @@ -8957,7 +9048,7 @@ module.exports = (function() { function peg$parseswitchBlock() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 75, + var key = peg$currPos * 205 + 75, cached = peg$cache[key]; if (cached) { @@ -8979,7 +9070,7 @@ module.exports = (function() { s7 = peg$parsecase(); if (s7 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c160(s7); + s4 = peg$c161(s7); s3 = s4; } else { peg$currPos = s3; @@ -9009,7 +9100,7 @@ module.exports = (function() { s7 = peg$parsecase(); if (s7 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c160(s7); + s4 = peg$c161(s7); s3 = s4; } else { peg$currPos = s3; @@ -9067,7 +9158,7 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c161(s1, s2, s3); + s1 = peg$c162(s1, s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -9094,7 +9185,7 @@ module.exports = (function() { function peg$parsecase() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 76, + var key = peg$currPos * 205 + 76, cached = peg$cache[key]; if (cached) { @@ -9112,7 +9203,7 @@ module.exports = (function() { s4 = peg$parseconditionalBody(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c162(s3, s4); + s1 = peg$c163(s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -9139,7 +9230,7 @@ module.exports = (function() { function peg$parsecaseConditions() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 77, + var key = peg$currPos * 205 + 77, cached = peg$cache[key]; if (cached) { @@ -9167,7 +9258,7 @@ module.exports = (function() { s7 = peg$parseassignmentExpressionNoImplicitObjectCall(); if (s7 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c160(s7); + s4 = peg$c161(s7); s3 = s4; } else { peg$currPos = s3; @@ -9203,7 +9294,7 @@ module.exports = (function() { s7 = peg$parseassignmentExpressionNoImplicitObjectCall(); if (s7 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c160(s7); + s4 = peg$c161(s7); s3 = s4; } else { peg$currPos = s3; @@ -9224,7 +9315,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c163(s1, s2); + s1 = peg$c164(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -9243,7 +9334,7 @@ module.exports = (function() { function peg$parsefunctionLiteral() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 78, + var key = peg$currPos * 205 + 78, cached = peg$cache[key]; if (cached) { @@ -9273,7 +9364,7 @@ module.exports = (function() { s8 = peg$parseTERMINATOR(); if (s8 !== peg$FAILED) { peg$reportedPos = s4; - s5 = peg$c164(s6); + s5 = peg$c165(s6); s4 = s5; } else { peg$currPos = s4; @@ -9311,7 +9402,7 @@ module.exports = (function() { s7 = peg$parse_(); if (s7 !== peg$FAILED) { peg$reportedPos = s1; - s2 = peg$c164(s4); + s2 = peg$c165(s4); s1 = s2; } else { peg$currPos = s1; @@ -9341,20 +9432,20 @@ module.exports = (function() { s1 = peg$c1; } if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c165) { - s2 = peg$c165; + if (input.substr(peg$currPos, 2) === peg$c166) { + s2 = peg$c166; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c166); } + if (peg$silentFails === 0) { peg$fail(peg$c167); } } if (s2 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c167) { - s2 = peg$c167; + if (input.substr(peg$currPos, 2) === peg$c168) { + s2 = peg$c168; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c168); } + if (peg$silentFails === 0) { peg$fail(peg$c169); } } } if (s2 !== peg$FAILED) { @@ -9364,7 +9455,7 @@ module.exports = (function() { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c169(s1, s2, s3); + s1 = peg$c170(s1, s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -9387,7 +9478,7 @@ module.exports = (function() { function peg$parsefunctionBody() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 79, + var key = peg$currPos * 205 + 79, cached = peg$cache[key]; if (cached) { @@ -9405,7 +9496,7 @@ module.exports = (function() { s4 = peg$parseDEDENT(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c140(s3); + s1 = peg$c141(s3); s0 = s1; } else { peg$currPos = s0; @@ -9450,7 +9541,7 @@ module.exports = (function() { function peg$parseparameter() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 80, + var key = peg$currPos * 205 + 80, cached = peg$cache[key]; if (cached) { @@ -9476,7 +9567,7 @@ module.exports = (function() { s5 = peg$parsesecondaryExpression(); if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c170(s1, s5); + s1 = peg$c171(s1, s5); s0 = s1; } else { peg$currPos = s0; @@ -9510,7 +9601,7 @@ module.exports = (function() { function peg$parserest() { var s0, s1, s2; - var key = peg$currPos * 204 + 81, + var key = peg$currPos * 205 + 81, cached = peg$cache[key]; if (cached) { @@ -9521,19 +9612,19 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$parseAssignable(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c133) { - s2 = peg$c133; + if (input.substr(peg$currPos, 3) === peg$c134) { + s2 = peg$c134; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c134); } + if (peg$silentFails === 0) { peg$fail(peg$c135); } } if (s2 === peg$FAILED) { s2 = peg$c1; } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c171(s1, s2); + s1 = peg$c172(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -9552,7 +9643,7 @@ module.exports = (function() { function peg$parseparameterList() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 82, + var key = peg$currPos * 205 + 82, cached = peg$cache[key]; if (cached) { @@ -9696,7 +9787,7 @@ module.exports = (function() { function peg$parserange() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; - var key = peg$currPos * 204 + 83, + var key = peg$currPos * 205 + 83, cached = peg$cache[key]; if (cached) { @@ -9706,11 +9797,11 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -9719,20 +9810,20 @@ module.exports = (function() { if (s3 !== peg$FAILED) { s4 = peg$parse_(); if (s4 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c120) { - s5 = peg$c120; + if (input.substr(peg$currPos, 2) === peg$c121) { + s5 = peg$c121; peg$currPos += 2; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c121); } + if (peg$silentFails === 0) { peg$fail(peg$c122); } } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 46) { - s6 = peg$c94; + s6 = peg$c95; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c95); } + if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s6 === peg$FAILED) { s6 = peg$c1; @@ -9745,15 +9836,15 @@ module.exports = (function() { s9 = peg$parse_(); if (s9 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s10 = peg$c102; + s10 = peg$c103; peg$currPos++; } else { s10 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s10 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c172(s3, s6, s8); + s1 = peg$c173(s3, s6, s8); s0 = s1; } else { peg$currPos = s0; @@ -9804,7 +9895,7 @@ module.exports = (function() { function peg$parsearrayLiteral() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 84, + var key = peg$currPos * 205 + 84, cached = peg$cache[key]; if (cached) { @@ -9814,11 +9905,11 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = peg$parsearrayLiteralBody(); @@ -9831,15 +9922,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c102; + s5 = peg$c103; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c173(s2); + s1 = peg$c174(s2); s0 = s1; } else { peg$currPos = s0; @@ -9870,7 +9961,7 @@ module.exports = (function() { function peg$parsearrayLiteralBody() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 85, + var key = peg$currPos * 205 + 85, cached = peg$cache[key]; if (cached) { @@ -9886,7 +9977,7 @@ module.exports = (function() { s3 = peg$parseDEDENT(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c174(s2); + s1 = peg$c175(s2); s0 = s1; } else { peg$currPos = s0; @@ -9910,7 +10001,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c175(s2); + s1 = peg$c176(s2); s0 = s1; } else { peg$currPos = s0; @@ -9930,7 +10021,7 @@ module.exports = (function() { function peg$parsearrayLiteralMemberList() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 86, + var key = peg$currPos * 205 + 86, cached = peg$cache[key]; if (cached) { @@ -10037,7 +10128,7 @@ module.exports = (function() { function peg$parsearrayLiteralMember() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 87, + var key = peg$currPos * 205 + 87, cached = peg$cache[key]; if (cached) { @@ -10082,7 +10173,7 @@ module.exports = (function() { function peg$parsearrayLiteralMemberSeparator() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 88, + var key = peg$currPos * 205 + 88, cached = peg$cache[key]; if (cached) { @@ -10171,7 +10262,7 @@ module.exports = (function() { function peg$parseobjectLiteral() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 89, + var key = peg$currPos * 205 + 89, cached = peg$cache[key]; if (cached) { @@ -10181,11 +10272,11 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { - s1 = peg$c176; + s1 = peg$c177; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c177); } + if (peg$silentFails === 0) { peg$fail(peg$c178); } } if (s1 !== peg$FAILED) { s2 = peg$parseobjectLiteralBody(); @@ -10198,15 +10289,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s5 = peg$c178; + s5 = peg$c179; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c180(s2); + s1 = peg$c181(s2); s0 = s1; } else { peg$currPos = s0; @@ -10237,7 +10328,7 @@ module.exports = (function() { function peg$parseobjectLiteralBody() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 90, + var key = peg$currPos * 205 + 90, cached = peg$cache[key]; if (cached) { @@ -10253,7 +10344,7 @@ module.exports = (function() { s3 = peg$parseDEDENT(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c174(s2); + s1 = peg$c175(s2); s0 = s1; } else { peg$currPos = s0; @@ -10277,7 +10368,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c175(s2); + s1 = peg$c176(s2); s0 = s1; } else { peg$currPos = s0; @@ -10297,7 +10388,7 @@ module.exports = (function() { function peg$parseobjectLiteralMemberList() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 91, + var key = peg$currPos * 205 + 91, cached = peg$cache[key]; if (cached) { @@ -10410,7 +10501,7 @@ module.exports = (function() { function peg$parseobjectLiteralMember() { var s0, s1; - var key = peg$currPos * 204 + 92, + var key = peg$currPos * 205 + 92, cached = peg$cache[key]; if (cached) { @@ -10424,7 +10515,7 @@ module.exports = (function() { s1 = peg$parsecontextVar(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c181(s1); + s1 = peg$c182(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -10432,7 +10523,7 @@ module.exports = (function() { s1 = peg$parseObjectInitialiserKeys(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c182(s1); + s1 = peg$c183(s1); } s0 = s1; } @@ -10446,7 +10537,7 @@ module.exports = (function() { function peg$parseObjectInitialiserKeys() { var s0, s1; - var key = peg$currPos * 204 + 93, + var key = peg$currPos * 205 + 93, cached = peg$cache[key]; if (cached) { @@ -10458,7 +10549,7 @@ module.exports = (function() { s1 = peg$parseidentifierName(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c183(s1); + s1 = peg$c184(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -10476,7 +10567,7 @@ module.exports = (function() { function peg$parseimplicitObjectLiteral() { var s0, s1; - var key = peg$currPos * 204 + 94, + var key = peg$currPos * 205 + 94, cached = peg$cache[key]; if (cached) { @@ -10488,7 +10579,7 @@ module.exports = (function() { s1 = peg$parseimplicitObjectLiteralMemberList(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c180(s1); + s1 = peg$c181(s1); } s0 = s1; @@ -10500,7 +10591,7 @@ module.exports = (function() { function peg$parseimplicitObjectLiteralMemberList() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 95, + var key = peg$currPos * 205 + 95, cached = peg$cache[key]; if (cached) { @@ -10568,7 +10659,7 @@ module.exports = (function() { function peg$parseimplicitObjectLiteralMemberSeparator() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 96, + var key = peg$currPos * 205 + 96, cached = peg$cache[key]; if (cached) { @@ -10653,7 +10744,7 @@ module.exports = (function() { function peg$parseimplicitObjectLiteralMember() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 97, + var key = peg$currPos * 205 + 97, cached = peg$cache[key]; if (cached) { @@ -10667,11 +10758,11 @@ module.exports = (function() { s2 = peg$parse_(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s3 = peg$c148; + s3 = peg$c149; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c149); } + if (peg$silentFails === 0) { peg$fail(peg$c150); } } if (s3 !== peg$FAILED) { s4 = peg$parse_(); @@ -10679,7 +10770,7 @@ module.exports = (function() { s5 = peg$parseimplicitObjectLiteralMemberValue(); if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c184(s1, s5); + s1 = peg$c185(s1, s5); s0 = s1; } else { peg$currPos = s0; @@ -10710,7 +10801,7 @@ module.exports = (function() { function peg$parseimplicitObjectLiteralMemberValue() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 98, + var key = peg$currPos * 205 + 98, cached = peg$cache[key]; if (cached) { @@ -10755,7 +10846,7 @@ module.exports = (function() { function peg$parsesingleLineImplicitObjectLiteral() { var s0, s1; - var key = peg$currPos * 204 + 99, + var key = peg$currPos * 205 + 99, cached = peg$cache[key]; if (cached) { @@ -10767,7 +10858,7 @@ module.exports = (function() { s1 = peg$parsesingleLineImplicitObjectLiteralMemberList(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c180(s1); + s1 = peg$c181(s1); } s0 = s1; @@ -10779,7 +10870,7 @@ module.exports = (function() { function peg$parsesingleLineImplicitObjectLiteralMemberList() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 100, + var key = peg$currPos * 205 + 100, cached = peg$cache[key]; if (cached) { @@ -10847,7 +10938,7 @@ module.exports = (function() { function peg$parsesingleLineImplicitObjectLiteralMemberSeparator() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 101, + var key = peg$currPos * 205 + 101, cached = peg$cache[key]; if (cached) { @@ -10891,7 +10982,7 @@ module.exports = (function() { function peg$parsemacro() { var s0, s1; - var key = peg$currPos * 204 + 102, + var key = peg$currPos * 205 + 102, cached = peg$cache[key]; if (cached) { @@ -10900,88 +10991,103 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c185) { - s1 = peg$c185; + if (input.substr(peg$currPos, 8) === peg$c186) { + s1 = peg$c186; peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c186); } + if (peg$silentFails === 0) { peg$fail(peg$c187); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c187(); + s1 = peg$c188(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 12) === peg$c188) { - s1 = peg$c188; + if (input.substr(peg$currPos, 12) === peg$c189) { + s1 = peg$c189; peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c189); } + if (peg$silentFails === 0) { peg$fail(peg$c190); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c190(); + s1 = peg$c191(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c191) { - s1 = peg$c191; + if (input.substr(peg$currPos, 8) === peg$c192) { + s1 = peg$c192; peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c192); } + if (peg$silentFails === 0) { peg$fail(peg$c193); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c193(); + s1 = peg$c194(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c194) { - s1 = peg$c194; + if (input.substr(peg$currPos, 8) === peg$c195) { + s1 = peg$c195; peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c195); } + if (peg$silentFails === 0) { peg$fail(peg$c196); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c196(); + s1 = peg$c197(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 14) === peg$c197) { - s1 = peg$c197; + if (input.substr(peg$currPos, 14) === peg$c198) { + s1 = peg$c198; peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c198); } + if (peg$silentFails === 0) { peg$fail(peg$c199); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c199(); + s1 = peg$c200(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 18) === peg$c200) { - s1 = peg$c200; + if (input.substr(peg$currPos, 18) === peg$c201) { + s1 = peg$c201; peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c201); } + if (peg$silentFails === 0) { peg$fail(peg$c202); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c202(); + s1 = peg$c203(); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 14) === peg$c204) { + s1 = peg$c204; + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c205); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c206(); + } + s0 = s1; + } } } } @@ -10996,7 +11102,7 @@ module.exports = (function() { function peg$parsebool() { var s0, s1; - var key = peg$currPos * 204 + 103, + var key = peg$currPos * 205 + 103, cached = peg$cache[key]; if (cached) { @@ -11014,7 +11120,7 @@ module.exports = (function() { } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c203(); + s1 = peg$c207(); } s0 = s1; if (s0 === peg$FAILED) { @@ -11028,7 +11134,7 @@ module.exports = (function() { } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c204(); + s1 = peg$c208(); } s0 = s1; } @@ -11041,7 +11147,7 @@ module.exports = (function() { function peg$parseNumbers() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 104, + var key = peg$currPos * 205 + 104, cached = peg$cache[key]; if (cached) { @@ -11050,12 +11156,12 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c205) { - s1 = peg$c205; + if (input.substr(peg$currPos, 2) === peg$c209) { + s1 = peg$c209; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c206); } + if (peg$silentFails === 0) { peg$fail(peg$c210); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -11075,7 +11181,7 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c207(s2); + s1 = peg$c211(s2); s0 = s1; } else { peg$currPos = s0; @@ -11087,12 +11193,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c208) { - s1 = peg$c208; + if (input.substr(peg$currPos, 2) === peg$c212) { + s1 = peg$c212; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c209); } + if (peg$silentFails === 0) { peg$fail(peg$c213); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -11112,7 +11218,7 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c210(s2); + s1 = peg$c214(s2); s0 = s1; } else { peg$currPos = s0; @@ -11124,12 +11230,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c211) { - s1 = peg$c211; + if (input.substr(peg$currPos, 2) === peg$c215) { + s1 = peg$c215; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c212); } + if (peg$silentFails === 0) { peg$fail(peg$c216); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -11149,7 +11255,7 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c213(s2); + s1 = peg$c217(s2); s0 = s1; } else { peg$currPos = s0; @@ -11163,20 +11269,20 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$parsedecimal(); if (s1 !== peg$FAILED) { - if (peg$c214.test(input.charAt(peg$currPos))) { + if (peg$c218.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c215); } + if (peg$silentFails === 0) { peg$fail(peg$c219); } } if (s2 !== peg$FAILED) { - if (peg$c216.test(input.charAt(peg$currPos))) { + if (peg$c220.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c217); } + if (peg$silentFails === 0) { peg$fail(peg$c221); } } if (s3 === peg$FAILED) { s3 = peg$c1; @@ -11185,7 +11291,7 @@ module.exports = (function() { s4 = peg$parsedecimal(); if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c218(s1, s2, s3, s4); + s1 = peg$c222(s1, s2, s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -11218,7 +11324,7 @@ module.exports = (function() { function peg$parsedecimal() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 105, + var key = peg$currPos * 205 + 105, cached = peg$cache[key]; if (cached) { @@ -11232,11 +11338,11 @@ module.exports = (function() { s2 = peg$currPos; s3 = peg$currPos; if (input.charCodeAt(peg$currPos) === 46) { - s4 = peg$c94; + s4 = peg$c95; peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c95); } + if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s4 !== peg$FAILED) { s5 = []; @@ -11269,7 +11375,7 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c219(s1, s2); + s1 = peg$c223(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -11288,7 +11394,7 @@ module.exports = (function() { function peg$parseinteger() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 106, + var key = peg$currPos * 205 + 106, cached = peg$cache[key]; if (cached) { @@ -11297,21 +11403,21 @@ module.exports = (function() { } if (input.charCodeAt(peg$currPos) === 48) { - s0 = peg$c220; + s0 = peg$c224; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c221); } + if (peg$silentFails === 0) { peg$fail(peg$c225); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$currPos; - if (peg$c222.test(input.charAt(peg$currPos))) { + if (peg$c226.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c223); } + if (peg$silentFails === 0) { peg$fail(peg$c227); } } if (s2 !== peg$FAILED) { s3 = []; @@ -11345,7 +11451,7 @@ module.exports = (function() { function peg$parsedecimalDigit() { var s0; - var key = peg$currPos * 204 + 107, + var key = peg$currPos * 205 + 107, cached = peg$cache[key]; if (cached) { @@ -11353,12 +11459,12 @@ module.exports = (function() { return cached.result; } - if (peg$c224.test(input.charAt(peg$currPos))) { + if (peg$c228.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c225); } + if (peg$silentFails === 0) { peg$fail(peg$c229); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -11369,7 +11475,7 @@ module.exports = (function() { function peg$parsehexDigit() { var s0; - var key = peg$currPos * 204 + 108, + var key = peg$currPos * 205 + 108, cached = peg$cache[key]; if (cached) { @@ -11377,12 +11483,12 @@ module.exports = (function() { return cached.result; } - if (peg$c226.test(input.charAt(peg$currPos))) { + if (peg$c230.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c227); } + if (peg$silentFails === 0) { peg$fail(peg$c231); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -11393,7 +11499,7 @@ module.exports = (function() { function peg$parseoctalDigit() { var s0; - var key = peg$currPos * 204 + 109, + var key = peg$currPos * 205 + 109, cached = peg$cache[key]; if (cached) { @@ -11401,12 +11507,12 @@ module.exports = (function() { return cached.result; } - if (peg$c228.test(input.charAt(peg$currPos))) { + if (peg$c232.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c229); } + if (peg$silentFails === 0) { peg$fail(peg$c233); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -11417,7 +11523,7 @@ module.exports = (function() { function peg$parsebit() { var s0; - var key = peg$currPos * 204 + 110, + var key = peg$currPos * 205 + 110, cached = peg$cache[key]; if (cached) { @@ -11425,12 +11531,12 @@ module.exports = (function() { return cached.result; } - if (peg$c230.test(input.charAt(peg$currPos))) { + if (peg$c234.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c231); } + if (peg$silentFails === 0) { peg$fail(peg$c235); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -11441,7 +11547,7 @@ module.exports = (function() { function peg$parsestring() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; - var key = peg$currPos * 204 + 111, + var key = peg$currPos * 205 + 111, cached = peg$cache[key]; if (cached) { @@ -11450,41 +11556,41 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c232) { - s1 = peg$c232; + if (input.substr(peg$currPos, 3) === peg$c236) { + s1 = peg$c236; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c233); } + if (peg$silentFails === 0) { peg$fail(peg$c237); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c234; + s3 = peg$c238; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s3 === peg$FAILED) { s3 = peg$currPos; s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s5 = peg$c236; + s5 = peg$c240; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c236; + s6 = peg$c240; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s6 === peg$FAILED) { s6 = peg$c1; @@ -11493,11 +11599,11 @@ module.exports = (function() { s7 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 34) { - s8 = peg$c236; + s8 = peg$c240; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } peg$silentFails--; if (s8 === peg$FAILED) { @@ -11533,29 +11639,29 @@ module.exports = (function() { s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c234; + s3 = peg$c238; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s3 === peg$FAILED) { s3 = peg$currPos; s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s5 = peg$c236; + s5 = peg$c240; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c236; + s6 = peg$c240; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s6 === peg$FAILED) { s6 = peg$c1; @@ -11564,11 +11670,11 @@ module.exports = (function() { s7 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 34) { - s8 = peg$c236; + s8 = peg$c240; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } peg$silentFails--; if (s8 === peg$FAILED) { @@ -11603,16 +11709,16 @@ module.exports = (function() { s2 = peg$c0; } if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c232) { - s3 = peg$c232; + if (input.substr(peg$currPos, 3) === peg$c236) { + s3 = peg$c236; peg$currPos += 3; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c233); } + if (peg$silentFails === 0) { peg$fail(peg$c237); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c238(s2); + s1 = peg$c242(s2); s0 = s1; } else { peg$currPos = s0; @@ -11628,49 +11734,49 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c239) { - s1 = peg$c239; + if (input.substr(peg$currPos, 3) === peg$c243) { + s1 = peg$c243; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c240); } + if (peg$silentFails === 0) { peg$fail(peg$c244); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c236; + s3 = peg$c240; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s3 = peg$c241; + s3 = peg$c245; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s3 === peg$FAILED) { s3 = peg$currPos; s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s6 = peg$c234; + s6 = peg$c238; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s6 === peg$FAILED) { s6 = peg$c1; @@ -11679,11 +11785,11 @@ module.exports = (function() { s7 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 39) { - s8 = peg$c234; + s8 = peg$c238; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } peg$silentFails--; if (s8 === peg$FAILED) { @@ -11720,37 +11826,37 @@ module.exports = (function() { s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c236; + s3 = peg$c240; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s3 = peg$c241; + s3 = peg$c245; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s3 === peg$FAILED) { s3 = peg$currPos; s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s6 = peg$c234; + s6 = peg$c238; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s6 === peg$FAILED) { s6 = peg$c1; @@ -11759,11 +11865,11 @@ module.exports = (function() { s7 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 39) { - s8 = peg$c234; + s8 = peg$c238; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } peg$silentFails--; if (s8 === peg$FAILED) { @@ -11799,16 +11905,16 @@ module.exports = (function() { s2 = peg$c0; } if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c239) { - s3 = peg$c239; + if (input.substr(peg$currPos, 3) === peg$c243) { + s3 = peg$c243; peg$currPos += 3; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c240); } + if (peg$silentFails === 0) { peg$fail(peg$c244); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c238(s2); + s1 = peg$c242(s2); s0 = s1; } else { peg$currPos = s0; @@ -11825,22 +11931,22 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s1 = peg$c236; + s1 = peg$c240; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c234; + s3 = peg$c238; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } } while (s3 !== peg$FAILED) { @@ -11848,25 +11954,25 @@ module.exports = (function() { s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c234; + s3 = peg$c238; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c236; + s3 = peg$c240; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c243(s2); + s1 = peg$c247(s2); s0 = s1; } else { peg$currPos = s0; @@ -11883,30 +11989,30 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 39) { - s1 = peg$c234; + s1 = peg$c238; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c236; + s3 = peg$c240; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s3 = peg$c241; + s3 = peg$c245; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } } } @@ -11915,34 +12021,34 @@ module.exports = (function() { s3 = peg$parsestringData(); if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c236; + s3 = peg$c240; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s3 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s3 = peg$c241; + s3 = peg$c245; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c234; + s3 = peg$c238; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c243(s2); + s1 = peg$c247(s2); s0 = s1; } else { peg$currPos = s0; @@ -11968,7 +12074,7 @@ module.exports = (function() { function peg$parsestringData() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 112, + var key = peg$currPos * 205 + 112, cached = peg$cache[key]; if (cached) { @@ -11976,23 +12082,23 @@ module.exports = (function() { return cached.result; } - if (peg$c244.test(input.charAt(peg$currPos))) { + if (peg$c248.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c245); } + if (peg$silentFails === 0) { peg$fail(peg$c249); } } if (s0 === peg$FAILED) { s0 = peg$parseUnicodeEscapeSequence(); if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c246) { - s1 = peg$c246; + if (input.substr(peg$currPos, 2) === peg$c250) { + s1 = peg$c250; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c247); } + if (peg$silentFails === 0) { peg$fail(peg$c251); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -12017,7 +12123,7 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c248(s2); + s1 = peg$c252(s2); s0 = s1; } else { peg$currPos = s0; @@ -12029,12 +12135,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c249) { - s1 = peg$c249; + if (input.substr(peg$currPos, 2) === peg$c253) { + s1 = peg$c253; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c250); } + if (peg$silentFails === 0) { peg$fail(peg$c254); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -12049,7 +12155,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c251(); + s1 = peg$c255(); s0 = s1; } else { peg$currPos = s0; @@ -12061,12 +12167,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c249) { - s1 = peg$c249; + if (input.substr(peg$currPos, 2) === peg$c253) { + s1 = peg$c253; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c250); } + if (peg$silentFails === 0) { peg$fail(peg$c254); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -12081,7 +12187,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c252(); + s1 = peg$c256(); s0 = s1; } else { peg$currPos = s0; @@ -12093,96 +12199,96 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c253) { - s1 = peg$c253; + if (input.substr(peg$currPos, 2) === peg$c257) { + s1 = peg$c257; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c254); } + if (peg$silentFails === 0) { peg$fail(peg$c258); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c255(); + s1 = peg$c259(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c256) { - s1 = peg$c256; + if (input.substr(peg$currPos, 2) === peg$c260) { + s1 = peg$c260; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c257); } + if (peg$silentFails === 0) { peg$fail(peg$c261); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c258(); + s1 = peg$c262(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c259) { - s1 = peg$c259; + if (input.substr(peg$currPos, 2) === peg$c263) { + s1 = peg$c263; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c260); } + if (peg$silentFails === 0) { peg$fail(peg$c264); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c261(); + s1 = peg$c265(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c262) { - s1 = peg$c262; + if (input.substr(peg$currPos, 2) === peg$c266) { + s1 = peg$c266; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c263); } + if (peg$silentFails === 0) { peg$fail(peg$c267); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c264(); + s1 = peg$c268(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c265) { - s1 = peg$c265; + if (input.substr(peg$currPos, 2) === peg$c269) { + s1 = peg$c269; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c266); } + if (peg$silentFails === 0) { peg$fail(peg$c270); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c267(); + s1 = peg$c271(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c268) { - s1 = peg$c268; + if (input.substr(peg$currPos, 2) === peg$c272) { + s1 = peg$c272; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c269); } + if (peg$silentFails === 0) { peg$fail(peg$c273); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c270(); + s1 = peg$c274(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c271; + s1 = peg$c275; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c272); } + if (peg$silentFails === 0) { peg$fail(peg$c276); } } if (s1 !== peg$FAILED) { if (input.length > peg$currPos) { @@ -12190,11 +12296,11 @@ module.exports = (function() { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c273); } + if (peg$silentFails === 0) { peg$fail(peg$c277); } } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c160(s2); + s1 = peg$c161(s2); s0 = s1; } else { peg$currPos = s0; @@ -12207,21 +12313,21 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 35) { - s1 = peg$c241; + s1 = peg$c245; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { - s3 = peg$c176; + s3 = peg$c177; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c177); } + if (peg$silentFails === 0) { peg$fail(peg$c178); } } peg$silentFails--; if (s3 === peg$FAILED) { @@ -12232,7 +12338,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c160(s1); + s1 = peg$c161(s1); s0 = s1; } else { peg$currPos = s0; @@ -12263,7 +12369,7 @@ module.exports = (function() { function peg$parseinterpolation() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; - var key = peg$currPos * 204 + 113, + var key = peg$currPos * 205 + 113, cached = peg$cache[key]; if (cached) { @@ -12272,12 +12378,12 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c232) { - s1 = peg$c232; + if (input.substr(peg$currPos, 3) === peg$c236) { + s1 = peg$c236; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c233); } + if (peg$silentFails === 0) { peg$fail(peg$c237); } } if (s1 !== peg$FAILED) { s2 = []; @@ -12286,29 +12392,29 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s5 === peg$FAILED) { s5 = peg$currPos; s6 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s7 = peg$c236; + s7 = peg$c240; peg$currPos++; } else { s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s8 = peg$c236; + s8 = peg$c240; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s8 === peg$FAILED) { s8 = peg$c1; @@ -12317,11 +12423,11 @@ module.exports = (function() { s9 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 34) { - s10 = peg$c236; + s10 = peg$c240; peg$currPos++; } else { s10 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } peg$silentFails--; if (s10 === peg$FAILED) { @@ -12357,29 +12463,29 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s5 === peg$FAILED) { s5 = peg$currPos; s6 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s7 = peg$c236; + s7 = peg$c240; peg$currPos++; } else { s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s8 = peg$c236; + s8 = peg$c240; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s8 === peg$FAILED) { s8 = peg$c1; @@ -12388,11 +12494,11 @@ module.exports = (function() { s9 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 34) { - s10 = peg$c236; + s10 = peg$c240; peg$currPos++; } else { s10 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } peg$silentFails--; if (s10 === peg$FAILED) { @@ -12428,17 +12534,17 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c243(s4); + s4 = peg$c247(s4); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c274) { - s4 = peg$c274; + if (input.substr(peg$currPos, 2) === peg$c278) { + s4 = peg$c278; peg$currPos += 2; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c275); } + if (peg$silentFails === 0) { peg$fail(peg$c279); } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); @@ -12448,11 +12554,11 @@ module.exports = (function() { s7 = peg$parse_(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s8 = peg$c178; + s8 = peg$c179; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s8 !== peg$FAILED) { peg$reportedPos = s3; @@ -12487,29 +12593,29 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s5 === peg$FAILED) { s5 = peg$currPos; s6 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s7 = peg$c236; + s7 = peg$c240; peg$currPos++; } else { s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s8 = peg$c236; + s8 = peg$c240; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s8 === peg$FAILED) { s8 = peg$c1; @@ -12518,11 +12624,11 @@ module.exports = (function() { s9 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 34) { - s10 = peg$c236; + s10 = peg$c240; peg$currPos++; } else { s10 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } peg$silentFails--; if (s10 === peg$FAILED) { @@ -12558,29 +12664,29 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } if (s5 === peg$FAILED) { s5 = peg$currPos; s6 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s7 = peg$c236; + s7 = peg$c240; peg$currPos++; } else { s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s8 = peg$c236; + s8 = peg$c240; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s8 === peg$FAILED) { s8 = peg$c1; @@ -12589,11 +12695,11 @@ module.exports = (function() { s9 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 34) { - s10 = peg$c236; + s10 = peg$c240; peg$currPos++; } else { s10 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } peg$silentFails--; if (s10 === peg$FAILED) { @@ -12629,17 +12735,17 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c243(s4); + s4 = peg$c247(s4); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c274) { - s4 = peg$c274; + if (input.substr(peg$currPos, 2) === peg$c278) { + s4 = peg$c278; peg$currPos += 2; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c275); } + if (peg$silentFails === 0) { peg$fail(peg$c279); } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); @@ -12649,11 +12755,11 @@ module.exports = (function() { s7 = peg$parse_(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s8 = peg$c178; + s8 = peg$c179; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s8 !== peg$FAILED) { peg$reportedPos = s3; @@ -12685,16 +12791,16 @@ module.exports = (function() { s2 = peg$c0; } if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c232) { - s3 = peg$c232; + if (input.substr(peg$currPos, 3) === peg$c236) { + s3 = peg$c236; peg$currPos += 3; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c233); } + if (peg$silentFails === 0) { peg$fail(peg$c237); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c276(s2); + s1 = peg$c280(s2); s0 = s1; } else { peg$currPos = s0; @@ -12711,11 +12817,11 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { - s1 = peg$c236; + s1 = peg$c240; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s1 !== peg$FAILED) { s2 = []; @@ -12724,11 +12830,11 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } } if (s5 !== peg$FAILED) { @@ -12737,11 +12843,11 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } } } @@ -12750,17 +12856,17 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c243(s4); + s4 = peg$c247(s4); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c274) { - s4 = peg$c274; + if (input.substr(peg$currPos, 2) === peg$c278) { + s4 = peg$c278; peg$currPos += 2; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c275); } + if (peg$silentFails === 0) { peg$fail(peg$c279); } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); @@ -12770,11 +12876,11 @@ module.exports = (function() { s7 = peg$parse_(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s8 = peg$c178; + s8 = peg$c179; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s8 !== peg$FAILED) { peg$reportedPos = s3; @@ -12809,11 +12915,11 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } } if (s5 !== peg$FAILED) { @@ -12822,11 +12928,11 @@ module.exports = (function() { s5 = peg$parsestringData(); if (s5 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c234; + s5 = peg$c238; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c235); } + if (peg$silentFails === 0) { peg$fail(peg$c239); } } } } @@ -12835,17 +12941,17 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c243(s4); + s4 = peg$c247(s4); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c274) { - s4 = peg$c274; + if (input.substr(peg$currPos, 2) === peg$c278) { + s4 = peg$c278; peg$currPos += 2; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c275); } + if (peg$silentFails === 0) { peg$fail(peg$c279); } } if (s4 !== peg$FAILED) { s5 = peg$parse_(); @@ -12855,11 +12961,11 @@ module.exports = (function() { s7 = peg$parse_(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s8 = peg$c178; + s8 = peg$c179; peg$currPos++; } else { s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s8 !== peg$FAILED) { peg$reportedPos = s3; @@ -12892,15 +12998,15 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c236; + s3 = peg$c240; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c237); } + if (peg$silentFails === 0) { peg$fail(peg$c241); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c277(s2); + s1 = peg$c281(s2); s0 = s1; } else { peg$currPos = s0; @@ -12924,7 +13030,7 @@ module.exports = (function() { function peg$parseregexp() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 114, + var key = peg$currPos * 205 + 114, cached = peg$cache[key]; if (cached) { @@ -12933,33 +13039,33 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c278) { - s1 = peg$c278; + if (input.substr(peg$currPos, 3) === peg$c282) { + s1 = peg$c282; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c279); } + if (peg$silentFails === 0) { peg$fail(peg$c283); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; s4 = []; - if (peg$c280.test(input.charAt(peg$currPos))) { + if (peg$c284.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c281); } + if (peg$silentFails === 0) { peg$fail(peg$c285); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c280.test(input.charAt(peg$currPos))) { + if (peg$c284.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c281); } + if (peg$silentFails === 0) { peg$fail(peg$c285); } } } } else { @@ -12967,29 +13073,29 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c282(); + s4 = peg$c286(); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; s4 = peg$currPos; s5 = []; - if (peg$c283.test(input.charAt(peg$currPos))) { + if (peg$c287.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c284); } + if (peg$silentFails === 0) { peg$fail(peg$c288); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); - if (peg$c283.test(input.charAt(peg$currPos))) { + if (peg$c287.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c284); } + if (peg$silentFails === 0) { peg$fail(peg$c288); } } } } else { @@ -13001,7 +13107,7 @@ module.exports = (function() { s4 = s5; if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c285(s4); + s4 = peg$c289(s4); } s3 = s4; if (s3 === peg$FAILED) { @@ -13013,22 +13119,22 @@ module.exports = (function() { s2.push(s3); s3 = peg$currPos; s4 = []; - if (peg$c280.test(input.charAt(peg$currPos))) { + if (peg$c284.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c281); } + if (peg$silentFails === 0) { peg$fail(peg$c285); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c280.test(input.charAt(peg$currPos))) { + if (peg$c284.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c281); } + if (peg$silentFails === 0) { peg$fail(peg$c285); } } } } else { @@ -13036,29 +13142,29 @@ module.exports = (function() { } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c282(); + s4 = peg$c286(); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; s4 = peg$currPos; s5 = []; - if (peg$c283.test(input.charAt(peg$currPos))) { + if (peg$c287.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c284); } + if (peg$silentFails === 0) { peg$fail(peg$c288); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); - if (peg$c283.test(input.charAt(peg$currPos))) { + if (peg$c287.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c284); } + if (peg$silentFails === 0) { peg$fail(peg$c288); } } } } else { @@ -13070,7 +13176,7 @@ module.exports = (function() { s4 = s5; if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c285(s4); + s4 = peg$c289(s4); } s3 = s4; if (s3 === peg$FAILED) { @@ -13082,35 +13188,35 @@ module.exports = (function() { s2 = peg$c0; } if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c278) { - s3 = peg$c278; + if (input.substr(peg$currPos, 3) === peg$c282) { + s3 = peg$c282; peg$currPos += 3; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c279); } + if (peg$silentFails === 0) { peg$fail(peg$c283); } } if (s3 !== peg$FAILED) { s4 = []; - if (peg$c286.test(input.charAt(peg$currPos))) { + if (peg$c290.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c287); } + if (peg$silentFails === 0) { peg$fail(peg$c291); } } while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c286.test(input.charAt(peg$currPos))) { + if (peg$c290.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c287); } + if (peg$silentFails === 0) { peg$fail(peg$c291); } } } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c288(s2, s4); + s1 = peg$c292(s2, s4); s0 = s1; } else { peg$currPos = s0; @@ -13131,11 +13237,11 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 47) { - s1 = peg$c289; + s1 = peg$c293; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c290); } + if (peg$silentFails === 0) { peg$fail(peg$c294); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -13143,22 +13249,22 @@ module.exports = (function() { s4 = peg$parseregexpData(); if (s4 === peg$FAILED) { s4 = []; - if (peg$c291.test(input.charAt(peg$currPos))) { + if (peg$c295.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c292); } + if (peg$silentFails === 0) { peg$fail(peg$c296); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c291.test(input.charAt(peg$currPos))) { + if (peg$c295.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c292); } + if (peg$silentFails === 0) { peg$fail(peg$c296); } } } } else { @@ -13170,22 +13276,22 @@ module.exports = (function() { s4 = peg$parseregexpData(); if (s4 === peg$FAILED) { s4 = []; - if (peg$c291.test(input.charAt(peg$currPos))) { + if (peg$c295.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c292); } + if (peg$silentFails === 0) { peg$fail(peg$c296); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c291.test(input.charAt(peg$currPos))) { + if (peg$c295.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c292); } + if (peg$silentFails === 0) { peg$fail(peg$c296); } } } } else { @@ -13199,34 +13305,34 @@ module.exports = (function() { s2 = s3; if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 47) { - s3 = peg$c289; + s3 = peg$c293; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c290); } + if (peg$silentFails === 0) { peg$fail(peg$c294); } } if (s3 !== peg$FAILED) { s4 = []; - if (peg$c286.test(input.charAt(peg$currPos))) { + if (peg$c290.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c287); } + if (peg$silentFails === 0) { peg$fail(peg$c291); } } while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c286.test(input.charAt(peg$currPos))) { + if (peg$c290.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c287); } + if (peg$silentFails === 0) { peg$fail(peg$c291); } } } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c293(s2, s4); + s1 = peg$c297(s2, s4); s0 = s1; } else { peg$currPos = s0; @@ -13254,7 +13360,7 @@ module.exports = (function() { function peg$parseregexpData() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 115, + var key = peg$currPos * 205 + 115, cached = peg$cache[key]; if (cached) { @@ -13264,32 +13370,32 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = []; - if (peg$c294.test(input.charAt(peg$currPos))) { + if (peg$c298.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c295); } + if (peg$silentFails === 0) { peg$fail(peg$c299); } } if (s3 === peg$FAILED) { s3 = peg$parseregexpData(); } while (s3 !== peg$FAILED) { s2.push(s3); - if (peg$c294.test(input.charAt(peg$currPos))) { + if (peg$c298.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c295); } + if (peg$silentFails === 0) { peg$fail(peg$c299); } } if (s3 === peg$FAILED) { s3 = peg$parseregexpData(); @@ -13297,11 +13403,11 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s3 = peg$c102; + s3 = peg$c103; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; @@ -13321,11 +13427,11 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c271; + s1 = peg$c275; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c272); } + if (peg$silentFails === 0) { peg$fail(peg$c276); } } if (s1 !== peg$FAILED) { if (input.length > peg$currPos) { @@ -13333,7 +13439,7 @@ module.exports = (function() { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c273); } + if (peg$silentFails === 0) { peg$fail(peg$c277); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -13356,7 +13462,7 @@ module.exports = (function() { function peg$parsehereregexpData() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 116, + var key = peg$currPos * 205 + 116, cached = peg$cache[key]; if (cached) { @@ -13366,11 +13472,11 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = []; @@ -13378,21 +13484,21 @@ module.exports = (function() { s4 = peg$parsehereregexpData(); if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c296(s4); + s4 = peg$c300(s4); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; - if (peg$c297.test(input.charAt(peg$currPos))) { + if (peg$c301.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c298); } + if (peg$silentFails === 0) { peg$fail(peg$c302); } } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c299(s4); + s4 = peg$c303(s4); } s3 = s4; } @@ -13402,36 +13508,36 @@ module.exports = (function() { s4 = peg$parsehereregexpData(); if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c296(s4); + s4 = peg$c300(s4); } s3 = s4; if (s3 === peg$FAILED) { s3 = peg$currPos; - if (peg$c297.test(input.charAt(peg$currPos))) { + if (peg$c301.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c298); } + if (peg$silentFails === 0) { peg$fail(peg$c302); } } if (s4 !== peg$FAILED) { peg$reportedPos = s3; - s4 = peg$c299(s4); + s4 = peg$c303(s4); } s3 = s4; } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s3 = peg$c102; + s3 = peg$c103; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c300(s2); + s1 = peg$c304(s2); s0 = s1; } else { peg$currPos = s0; @@ -13450,11 +13556,11 @@ module.exports = (function() { s1 = peg$currPos; s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s3 = peg$c271; + s3 = peg$c275; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c272); } + if (peg$silentFails === 0) { peg$fail(peg$c276); } } if (s3 !== peg$FAILED) { if (input.length > peg$currPos) { @@ -13462,7 +13568,7 @@ module.exports = (function() { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c273); } + if (peg$silentFails === 0) { peg$fail(peg$c277); } } if (s4 !== peg$FAILED) { s3 = [s3, s4]; @@ -13481,7 +13587,7 @@ module.exports = (function() { s1 = s2; if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c301(s1); + s1 = peg$c305(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -13489,19 +13595,19 @@ module.exports = (function() { s1 = peg$currPos; s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 47) { - s3 = peg$c289; + s3 = peg$c293; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c290); } + if (peg$silentFails === 0) { peg$fail(peg$c294); } } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 47) { - s4 = peg$c289; + s4 = peg$c293; peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c290); } + if (peg$silentFails === 0) { peg$fail(peg$c294); } } if (s4 === peg$FAILED) { s4 = peg$c1; @@ -13510,11 +13616,11 @@ module.exports = (function() { s5 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 47) { - s6 = peg$c289; + s6 = peg$c293; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c290); } + if (peg$silentFails === 0) { peg$fail(peg$c294); } } peg$silentFails--; if (s6 === peg$FAILED) { @@ -13544,27 +13650,27 @@ module.exports = (function() { s1 = s2; if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c302(s1); + s1 = peg$c306(s1); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 35) { - s1 = peg$c241; + s1 = peg$c245; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { - s3 = peg$c176; + s3 = peg$c177; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c177); } + if (peg$silentFails === 0) { peg$fail(peg$c178); } } peg$silentFails--; if (s3 === peg$FAILED) { @@ -13575,7 +13681,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c303(s1); + s1 = peg$c307(s1); s0 = s1; } else { peg$currPos = s0; @@ -13587,12 +13693,12 @@ module.exports = (function() { } if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c274) { - s1 = peg$c274; + if (input.substr(peg$currPos, 2) === peg$c278) { + s1 = peg$c278; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c275); } + if (peg$silentFails === 0) { peg$fail(peg$c279); } } if (s1 !== peg$FAILED) { s2 = peg$parse_(); @@ -13602,15 +13708,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s5 = peg$c178; + s5 = peg$c179; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c304(s3); + s1 = peg$c308(s3); s0 = s1; } else { peg$currPos = s0; @@ -13645,7 +13751,7 @@ module.exports = (function() { function peg$parsethrow() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 117, + var key = peg$currPos * 205 + 117, cached = peg$cache[key]; if (cached) { @@ -13661,7 +13767,7 @@ module.exports = (function() { s3 = peg$parsesecondaryExpression(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c305(s3); + s1 = peg$c309(s3); s0 = s1; } else { peg$currPos = s0; @@ -13684,7 +13790,7 @@ module.exports = (function() { function peg$parsereturn() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 118, + var key = peg$currPos * 205 + 118, cached = peg$cache[key]; if (cached) { @@ -13703,7 +13809,7 @@ module.exports = (function() { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c306(s3); + s1 = peg$c310(s3); s0 = s1; } else { peg$currPos = s0; @@ -13726,7 +13832,7 @@ module.exports = (function() { function peg$parsecontinue() { var s0, s1; - var key = peg$currPos * 204 + 119, + var key = peg$currPos * 205 + 119, cached = peg$cache[key]; if (cached) { @@ -13738,7 +13844,7 @@ module.exports = (function() { s1 = peg$parseCONTINUE(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c307(); + s1 = peg$c311(); } s0 = s1; @@ -13750,7 +13856,7 @@ module.exports = (function() { function peg$parsebreak() { var s0, s1; - var key = peg$currPos * 204 + 120, + var key = peg$currPos * 205 + 120, cached = peg$cache[key]; if (cached) { @@ -13762,7 +13868,7 @@ module.exports = (function() { s1 = peg$parseBREAK(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c308(); + s1 = peg$c312(); } s0 = s1; @@ -13774,7 +13880,7 @@ module.exports = (function() { function peg$parsedebugger() { var s0, s1; - var key = peg$currPos * 204 + 121, + var key = peg$currPos * 205 + 121, cached = peg$cache[key]; if (cached) { @@ -13786,7 +13892,7 @@ module.exports = (function() { s1 = peg$parseDEBUGGER(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c309(); + s1 = peg$c313(); } s0 = s1; @@ -13798,7 +13904,7 @@ module.exports = (function() { function peg$parseundefined() { var s0, s1; - var key = peg$currPos * 204 + 122, + var key = peg$currPos * 205 + 122, cached = peg$cache[key]; if (cached) { @@ -13810,7 +13916,7 @@ module.exports = (function() { s1 = peg$parseUNDEFINED(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c310(); + s1 = peg$c314(); } s0 = s1; @@ -13822,7 +13928,7 @@ module.exports = (function() { function peg$parsenull() { var s0, s1; - var key = peg$currPos * 204 + 123, + var key = peg$currPos * 205 + 123, cached = peg$cache[key]; if (cached) { @@ -13834,7 +13940,7 @@ module.exports = (function() { s1 = peg$parseNULL(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c311(); + s1 = peg$c315(); } s0 = s1; @@ -13846,7 +13952,7 @@ module.exports = (function() { function peg$parseunassignable() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 124, + var key = peg$currPos * 205 + 124, cached = peg$cache[key]; if (cached) { @@ -13855,20 +13961,20 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 9) === peg$c312) { - s1 = peg$c312; + if (input.substr(peg$currPos, 9) === peg$c316) { + s1 = peg$c316; peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c313); } + if (peg$silentFails === 0) { peg$fail(peg$c317); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c314) { - s1 = peg$c314; + if (input.substr(peg$currPos, 4) === peg$c318) { + s1 = peg$c318; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c315); } + if (peg$silentFails === 0) { peg$fail(peg$c319); } } } if (s1 !== peg$FAILED) { @@ -13902,7 +14008,7 @@ module.exports = (function() { function peg$parseCompoundAssignable() { var s0, s1, s2; - var key = peg$currPos * 204 + 125, + var key = peg$currPos * 205 + 125, cached = peg$cache[key]; if (cached) { @@ -13927,7 +14033,7 @@ module.exports = (function() { s2 = peg$parseidentifier(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c316(s2); + s1 = peg$c320(s2); s0 = s1; } else { peg$currPos = s0; @@ -13947,7 +14053,7 @@ module.exports = (function() { function peg$parseAssignable() { var s0, s1, s2; - var key = peg$currPos * 204 + 126, + var key = peg$currPos * 205 + 126, cached = peg$cache[key]; if (cached) { @@ -13972,7 +14078,7 @@ module.exports = (function() { s2 = peg$parseidentifier(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c316(s2); + s1 = peg$c320(s2); s0 = s1; } else { peg$currPos = s0; @@ -13998,7 +14104,7 @@ module.exports = (function() { function peg$parsepositionalDestructuring() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 127, + var key = peg$currPos * 205 + 127, cached = peg$cache[key]; if (cached) { @@ -14008,11 +14114,11 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c100; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c101); } + if (peg$silentFails === 0) { peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = peg$parsepositionalDestructuringBody(); @@ -14025,15 +14131,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c102; + s5 = peg$c103; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c103); } + if (peg$silentFails === 0) { peg$fail(peg$c104); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c173(s2); + s1 = peg$c174(s2); s0 = s1; } else { peg$currPos = s0; @@ -14064,7 +14170,7 @@ module.exports = (function() { function peg$parsepositionalDestructuringBody() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 128, + var key = peg$currPos * 205 + 128, cached = peg$cache[key]; if (cached) { @@ -14080,7 +14186,7 @@ module.exports = (function() { s3 = peg$parseDEDENT(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c174(s2); + s1 = peg$c175(s2); s0 = s1; } else { peg$currPos = s0; @@ -14104,7 +14210,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c175(s2); + s1 = peg$c176(s2); s0 = s1; } else { peg$currPos = s0; @@ -14124,7 +14230,7 @@ module.exports = (function() { function peg$parsepositionalDestructuringMemberList() { var s0, s1, s2, s3, s4, s5, s6, s7; - var key = peg$currPos * 204 + 129, + var key = peg$currPos * 205 + 129, cached = peg$cache[key]; if (cached) { @@ -14228,7 +14334,7 @@ module.exports = (function() { function peg$parsepositionalDestructuringMember() { var s0; - var key = peg$currPos * 204 + 130, + var key = peg$currPos * 205 + 130, cached = peg$cache[key]; if (cached) { @@ -14249,7 +14355,7 @@ module.exports = (function() { function peg$parsenamedDestructuring() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 131, + var key = peg$currPos * 205 + 131, cached = peg$cache[key]; if (cached) { @@ -14259,11 +14365,11 @@ module.exports = (function() { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { - s1 = peg$c176; + s1 = peg$c177; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c177); } + if (peg$silentFails === 0) { peg$fail(peg$c178); } } if (s1 !== peg$FAILED) { s2 = peg$parsenamedDestructuringBody(); @@ -14276,15 +14382,15 @@ module.exports = (function() { s4 = peg$parse_(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s5 = peg$c178; + s5 = peg$c179; peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c179); } + if (peg$silentFails === 0) { peg$fail(peg$c180); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c180(s2); + s1 = peg$c181(s2); s0 = s1; } else { peg$currPos = s0; @@ -14315,7 +14421,7 @@ module.exports = (function() { function peg$parsenamedDestructuringBody() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 132, + var key = peg$currPos * 205 + 132, cached = peg$cache[key]; if (cached) { @@ -14331,7 +14437,7 @@ module.exports = (function() { s3 = peg$parseDEDENT(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c174(s2); + s1 = peg$c175(s2); s0 = s1; } else { peg$currPos = s0; @@ -14355,7 +14461,7 @@ module.exports = (function() { } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c175(s2); + s1 = peg$c176(s2); s0 = s1; } else { peg$currPos = s0; @@ -14375,7 +14481,7 @@ module.exports = (function() { function peg$parsenamedDestructuringMemberList() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - var key = peg$currPos * 204 + 133, + var key = peg$currPos * 205 + 133, cached = peg$cache[key]; if (cached) { @@ -14521,7 +14627,7 @@ module.exports = (function() { function peg$parsenamedDestructuringMember() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 134, + var key = peg$currPos * 205 + 134, cached = peg$cache[key]; if (cached) { @@ -14535,11 +14641,11 @@ module.exports = (function() { s2 = peg$parse_(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s3 = peg$c148; + s3 = peg$c149; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c149); } + if (peg$silentFails === 0) { peg$fail(peg$c150); } } if (s3 !== peg$FAILED) { s4 = peg$parse_(); @@ -14547,7 +14653,7 @@ module.exports = (function() { s5 = peg$parseAssignable(); if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c184(s1, s5); + s1 = peg$c185(s1, s5); s0 = s1; } else { peg$currPos = s0; @@ -14574,7 +14680,7 @@ module.exports = (function() { s1 = peg$parsecontextVar(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c317(s1); + s1 = peg$c321(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -14593,7 +14699,7 @@ module.exports = (function() { s2 = peg$parseidentifier(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c318(s2); + s1 = peg$c322(s2); s0 = s1; } else { peg$currPos = s0; @@ -14614,7 +14720,7 @@ module.exports = (function() { function peg$parseidentifier() { var s0, s1, s2; - var key = peg$currPos * 204 + 135, + var key = peg$currPos * 205 + 135, cached = peg$cache[key]; if (cached) { @@ -14637,7 +14743,7 @@ module.exports = (function() { s2 = peg$parseidentifierName(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c183(s2); + s1 = peg$c184(s2); s0 = s1; } else { peg$currPos = s0; @@ -14656,7 +14762,7 @@ module.exports = (function() { function peg$parseidentifierName() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 136, + var key = peg$currPos * 205 + 136, cached = peg$cache[key]; if (cached) { @@ -14698,7 +14804,7 @@ module.exports = (function() { function peg$parseidentifierStart() { var s0; - var key = peg$currPos * 204 + 137, + var key = peg$currPos * 205 + 137, cached = peg$cache[key]; if (cached) { @@ -14708,12 +14814,12 @@ module.exports = (function() { s0 = peg$parseUnicodeLetter(); if (s0 === peg$FAILED) { - if (peg$c319.test(input.charAt(peg$currPos))) { + if (peg$c323.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c320); } + if (peg$silentFails === 0) { peg$fail(peg$c324); } } if (s0 === peg$FAILED) { s0 = peg$parseUnicodeEscapeSequence(); @@ -14728,7 +14834,7 @@ module.exports = (function() { function peg$parseidentifierPart() { var s0; - var key = peg$currPos * 204 + 138, + var key = peg$currPos * 205 + 138, cached = peg$cache[key]; if (cached) { @@ -14761,7 +14867,7 @@ module.exports = (function() { function peg$parse__() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 139, + var key = peg$currPos * 205 + 139, cached = peg$cache[key]; if (cached) { @@ -14833,7 +14939,7 @@ module.exports = (function() { function peg$parse_() { var s0; - var key = peg$currPos * 204 + 140, + var key = peg$currPos * 205 + 140, cached = peg$cache[key]; if (cached) { @@ -14854,7 +14960,7 @@ module.exports = (function() { function peg$parsecomment() { var s0; - var key = peg$currPos * 204 + 141, + var key = peg$currPos * 205 + 141, cached = peg$cache[key]; if (cached) { @@ -14875,7 +14981,7 @@ module.exports = (function() { function peg$parsesingleLineComment() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 142, + var key = peg$currPos * 205 + 142, cached = peg$cache[key]; if (cached) { @@ -14886,11 +14992,11 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; if (input.charCodeAt(peg$currPos) === 35) { - s2 = peg$c241; + s2 = peg$c245; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s2 !== peg$FAILED) { s3 = []; @@ -14911,7 +15017,7 @@ module.exports = (function() { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c273); } + if (peg$silentFails === 0) { peg$fail(peg$c277); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; @@ -14943,7 +15049,7 @@ module.exports = (function() { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c273); } + if (peg$silentFails === 0) { peg$fail(peg$c277); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; @@ -14981,7 +15087,7 @@ module.exports = (function() { function peg$parseblockComment() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - var key = peg$currPos * 204 + 143, + var key = peg$currPos * 205 + 143, cached = peg$cache[key]; if (cached) { @@ -14991,46 +15097,46 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c321) { - s2 = peg$c321; + if (input.substr(peg$currPos, 3) === peg$c325) { + s2 = peg$c325; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c322); } + if (peg$silentFails === 0) { peg$fail(peg$c326); } } if (s2 !== peg$FAILED) { - if (peg$c323.test(input.charAt(peg$currPos))) { + if (peg$c327.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c324); } + if (peg$silentFails === 0) { peg$fail(peg$c328); } } if (s3 !== peg$FAILED) { s4 = []; - if (peg$c323.test(input.charAt(peg$currPos))) { + if (peg$c327.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c324); } + if (peg$silentFails === 0) { peg$fail(peg$c328); } } if (s5 === peg$FAILED) { s5 = peg$currPos; if (input.charCodeAt(peg$currPos) === 35) { - s6 = peg$c241; + s6 = peg$c245; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s7 = peg$c241; + s7 = peg$c245; peg$currPos++; } else { s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s7 === peg$FAILED) { s7 = peg$c1; @@ -15039,11 +15145,11 @@ module.exports = (function() { s8 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 35) { - s9 = peg$c241; + s9 = peg$c245; peg$currPos++; } else { s9 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } peg$silentFails--; if (s9 === peg$FAILED) { @@ -15070,29 +15176,29 @@ module.exports = (function() { } while (s5 !== peg$FAILED) { s4.push(s5); - if (peg$c323.test(input.charAt(peg$currPos))) { + if (peg$c327.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c324); } + if (peg$silentFails === 0) { peg$fail(peg$c328); } } if (s5 === peg$FAILED) { s5 = peg$currPos; if (input.charCodeAt(peg$currPos) === 35) { - s6 = peg$c241; + s6 = peg$c245; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { - s7 = peg$c241; + s7 = peg$c245; peg$currPos++; } else { s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } if (s7 === peg$FAILED) { s7 = peg$c1; @@ -15101,11 +15207,11 @@ module.exports = (function() { s8 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 35) { - s9 = peg$c241; + s9 = peg$c245; peg$currPos++; } else { s9 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c242); } + if (peg$silentFails === 0) { peg$fail(peg$c246); } } peg$silentFails--; if (s9 === peg$FAILED) { @@ -15132,12 +15238,12 @@ module.exports = (function() { } } if (s4 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c321) { - s5 = peg$c321; + if (input.substr(peg$currPos, 3) === peg$c325) { + s5 = peg$c325; peg$currPos += 3; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c322); } + if (peg$silentFails === 0) { peg$fail(peg$c326); } } if (s5 !== peg$FAILED) { s2 = [s2, s3, s4, s5]; @@ -15171,7 +15277,7 @@ module.exports = (function() { function peg$parsewhitespace() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 144, + var key = peg$currPos * 205 + 144, cached = peg$cache[key]; if (cached) { @@ -15179,49 +15285,49 @@ module.exports = (function() { return cached.result; } - if (peg$c325.test(input.charAt(peg$currPos))) { + if (peg$c329.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c326); } + if (peg$silentFails === 0) { peg$fail(peg$c330); } } if (s0 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 13) { - s0 = peg$c327; + s0 = peg$c331; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c328); } + if (peg$silentFails === 0) { peg$fail(peg$c332); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s2 = peg$c271; + s2 = peg$c275; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c272); } + if (peg$silentFails === 0) { peg$fail(peg$c276); } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 13) { - s3 = peg$c327; + s3 = peg$c331; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c328); } + if (peg$silentFails === 0) { peg$fail(peg$c332); } } if (s3 === peg$FAILED) { s3 = peg$c1; } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 10) { - s4 = peg$c329; + s4 = peg$c333; peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c330); } + if (peg$silentFails === 0) { peg$fail(peg$c334); } } if (s4 !== peg$FAILED) { s2 = [s2, s3, s4]; @@ -15253,7 +15359,7 @@ module.exports = (function() { function peg$parseINDENT() { var s0, s1, s2; - var key = peg$currPos * 204 + 145, + var key = peg$currPos * 205 + 145, cached = peg$cache[key]; if (cached) { @@ -15265,15 +15371,15 @@ module.exports = (function() { s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 61423) { - s2 = peg$c331; + s2 = peg$c335; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c332); } + if (peg$silentFails === 0) { peg$fail(peg$c336); } } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c333(s1); + s1 = peg$c337(s1); s0 = s1; } else { peg$currPos = s0; @@ -15292,7 +15398,7 @@ module.exports = (function() { function peg$parseDEDENT() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 146, + var key = peg$currPos * 205 + 146, cached = peg$cache[key]; if (cached) { @@ -15326,15 +15432,15 @@ module.exports = (function() { s1 = s2; if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 61438) { - s2 = peg$c334; + s2 = peg$c338; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c335); } + if (peg$silentFails === 0) { peg$fail(peg$c339); } } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c333(s1); + s1 = peg$c337(s1); s0 = s1; } else { peg$currPos = s0; @@ -15353,7 +15459,7 @@ module.exports = (function() { function peg$parseTERM() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 147, + var key = peg$currPos * 205 + 147, cached = peg$cache[key]; if (cached) { @@ -15364,22 +15470,22 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; if (input.charCodeAt(peg$currPos) === 13) { - s2 = peg$c327; + s2 = peg$c331; peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c328); } + if (peg$silentFails === 0) { peg$fail(peg$c332); } } if (s2 === peg$FAILED) { s2 = peg$c1; } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 10) { - s3 = peg$c329; + s3 = peg$c333; peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c330); } + if (peg$silentFails === 0) { peg$fail(peg$c334); } } if (s3 !== peg$FAILED) { s2 = [s2, s3]; @@ -15399,15 +15505,15 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 61439) { - s1 = peg$c336; + s1 = peg$c340; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c337); } + if (peg$silentFails === 0) { peg$fail(peg$c341); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c338(); + s1 = peg$c342(); } s0 = s1; } @@ -15420,7 +15526,7 @@ module.exports = (function() { function peg$parseTERMINATOR() { var s0, s1, s2, s3, s4, s5, s6; - var key = peg$currPos * 204 + 148, + var key = peg$currPos * 205 + 148, cached = peg$cache[key]; if (cached) { @@ -15516,7 +15622,7 @@ module.exports = (function() { function peg$parseTERMINDENT() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 149, + var key = peg$currPos * 205 + 149, cached = peg$cache[key]; if (cached) { @@ -15553,7 +15659,7 @@ module.exports = (function() { function peg$parseAND() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 150, + var key = peg$currPos * 205 + 150, cached = peg$cache[key]; if (cached) { @@ -15563,12 +15669,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c339) { - s2 = peg$c339; + if (input.substr(peg$currPos, 3) === peg$c343) { + s2 = peg$c343; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c340); } + if (peg$silentFails === 0) { peg$fail(peg$c344); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15605,7 +15711,7 @@ module.exports = (function() { function peg$parseBREAK() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 151, + var key = peg$currPos * 205 + 151, cached = peg$cache[key]; if (cached) { @@ -15615,12 +15721,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c341) { - s2 = peg$c341; + if (input.substr(peg$currPos, 5) === peg$c345) { + s2 = peg$c345; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c342); } + if (peg$silentFails === 0) { peg$fail(peg$c346); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15657,7 +15763,7 @@ module.exports = (function() { function peg$parseBY() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 152, + var key = peg$currPos * 205 + 152, cached = peg$cache[key]; if (cached) { @@ -15667,12 +15773,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c343) { - s2 = peg$c343; + if (input.substr(peg$currPos, 2) === peg$c347) { + s2 = peg$c347; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c344); } + if (peg$silentFails === 0) { peg$fail(peg$c348); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15709,7 +15815,7 @@ module.exports = (function() { function peg$parseCATCH() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 153, + var key = peg$currPos * 205 + 153, cached = peg$cache[key]; if (cached) { @@ -15719,12 +15825,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c345) { - s2 = peg$c345; + if (input.substr(peg$currPos, 5) === peg$c349) { + s2 = peg$c349; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c346); } + if (peg$silentFails === 0) { peg$fail(peg$c350); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15761,7 +15867,7 @@ module.exports = (function() { function peg$parseCONTINUE() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 154, + var key = peg$currPos * 205 + 154, cached = peg$cache[key]; if (cached) { @@ -15771,12 +15877,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c347) { - s2 = peg$c347; + if (input.substr(peg$currPos, 8) === peg$c351) { + s2 = peg$c351; peg$currPos += 8; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c348); } + if (peg$silentFails === 0) { peg$fail(peg$c352); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15813,7 +15919,7 @@ module.exports = (function() { function peg$parseCLASS() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 155, + var key = peg$currPos * 205 + 155, cached = peg$cache[key]; if (cached) { @@ -15823,12 +15929,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c349) { - s2 = peg$c349; + if (input.substr(peg$currPos, 5) === peg$c353) { + s2 = peg$c353; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c350); } + if (peg$silentFails === 0) { peg$fail(peg$c354); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15865,7 +15971,7 @@ module.exports = (function() { function peg$parseDELETE() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 156, + var key = peg$currPos * 205 + 156, cached = peg$cache[key]; if (cached) { @@ -15875,12 +15981,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c351) { - s2 = peg$c351; + if (input.substr(peg$currPos, 6) === peg$c355) { + s2 = peg$c355; peg$currPos += 6; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c352); } + if (peg$silentFails === 0) { peg$fail(peg$c356); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15917,7 +16023,7 @@ module.exports = (function() { function peg$parseDEBUGGER() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 157, + var key = peg$currPos * 205 + 157, cached = peg$cache[key]; if (cached) { @@ -15927,12 +16033,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c353) { - s2 = peg$c353; + if (input.substr(peg$currPos, 8) === peg$c357) { + s2 = peg$c357; peg$currPos += 8; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c354); } + if (peg$silentFails === 0) { peg$fail(peg$c358); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -15969,7 +16075,7 @@ module.exports = (function() { function peg$parseDO() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 158, + var key = peg$currPos * 205 + 158, cached = peg$cache[key]; if (cached) { @@ -15979,12 +16085,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c355) { - s2 = peg$c355; + if (input.substr(peg$currPos, 2) === peg$c359) { + s2 = peg$c359; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c356); } + if (peg$silentFails === 0) { peg$fail(peg$c360); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16021,7 +16127,7 @@ module.exports = (function() { function peg$parseELSE() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 159, + var key = peg$currPos * 205 + 159, cached = peg$cache[key]; if (cached) { @@ -16031,12 +16137,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c357) { - s2 = peg$c357; + if (input.substr(peg$currPos, 4) === peg$c361) { + s2 = peg$c361; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c358); } + if (peg$silentFails === 0) { peg$fail(peg$c362); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16073,7 +16179,7 @@ module.exports = (function() { function peg$parseEXTENDS() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 160, + var key = peg$currPos * 205 + 160, cached = peg$cache[key]; if (cached) { @@ -16083,12 +16189,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 7) === peg$c359) { - s2 = peg$c359; + if (input.substr(peg$currPos, 7) === peg$c363) { + s2 = peg$c363; peg$currPos += 7; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c360); } + if (peg$silentFails === 0) { peg$fail(peg$c364); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16125,7 +16231,7 @@ module.exports = (function() { function peg$parseFALSE() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 161, + var key = peg$currPos * 205 + 161, cached = peg$cache[key]; if (cached) { @@ -16135,12 +16241,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c361) { - s2 = peg$c361; + if (input.substr(peg$currPos, 5) === peg$c365) { + s2 = peg$c365; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c362); } + if (peg$silentFails === 0) { peg$fail(peg$c366); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16177,7 +16283,7 @@ module.exports = (function() { function peg$parseFINALLY() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 162, + var key = peg$currPos * 205 + 162, cached = peg$cache[key]; if (cached) { @@ -16187,12 +16293,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 7) === peg$c363) { - s2 = peg$c363; + if (input.substr(peg$currPos, 7) === peg$c367) { + s2 = peg$c367; peg$currPos += 7; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c364); } + if (peg$silentFails === 0) { peg$fail(peg$c368); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16229,7 +16335,7 @@ module.exports = (function() { function peg$parseFOR() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 163, + var key = peg$currPos * 205 + 163, cached = peg$cache[key]; if (cached) { @@ -16239,12 +16345,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c365) { - s2 = peg$c365; + if (input.substr(peg$currPos, 3) === peg$c369) { + s2 = peg$c369; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c366); } + if (peg$silentFails === 0) { peg$fail(peg$c370); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16281,7 +16387,7 @@ module.exports = (function() { function peg$parseIF() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 164, + var key = peg$currPos * 205 + 164, cached = peg$cache[key]; if (cached) { @@ -16291,12 +16397,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c367) { - s2 = peg$c367; + if (input.substr(peg$currPos, 2) === peg$c371) { + s2 = peg$c371; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c368); } + if (peg$silentFails === 0) { peg$fail(peg$c372); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16333,7 +16439,7 @@ module.exports = (function() { function peg$parseIN() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 165, + var key = peg$currPos * 205 + 165, cached = peg$cache[key]; if (cached) { @@ -16343,12 +16449,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c369) { - s2 = peg$c369; + if (input.substr(peg$currPos, 2) === peg$c373) { + s2 = peg$c373; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c370); } + if (peg$silentFails === 0) { peg$fail(peg$c374); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16385,7 +16491,7 @@ module.exports = (function() { function peg$parseINSTANCEOF() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 166, + var key = peg$currPos * 205 + 166, cached = peg$cache[key]; if (cached) { @@ -16395,12 +16501,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 10) === peg$c371) { - s2 = peg$c371; + if (input.substr(peg$currPos, 10) === peg$c375) { + s2 = peg$c375; peg$currPos += 10; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c372); } + if (peg$silentFails === 0) { peg$fail(peg$c376); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16437,7 +16543,7 @@ module.exports = (function() { function peg$parseIS() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 167, + var key = peg$currPos * 205 + 167, cached = peg$cache[key]; if (cached) { @@ -16447,12 +16553,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c373) { - s2 = peg$c373; + if (input.substr(peg$currPos, 2) === peg$c377) { + s2 = peg$c377; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c374); } + if (peg$silentFails === 0) { peg$fail(peg$c378); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16489,7 +16595,7 @@ module.exports = (function() { function peg$parseISNT() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 168, + var key = peg$currPos * 205 + 168, cached = peg$cache[key]; if (cached) { @@ -16499,12 +16605,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c375) { - s2 = peg$c375; + if (input.substr(peg$currPos, 4) === peg$c379) { + s2 = peg$c379; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c376); } + if (peg$silentFails === 0) { peg$fail(peg$c380); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16541,7 +16647,7 @@ module.exports = (function() { function peg$parseLOOP() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 169, + var key = peg$currPos * 205 + 169, cached = peg$cache[key]; if (cached) { @@ -16551,12 +16657,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c377) { - s2 = peg$c377; + if (input.substr(peg$currPos, 4) === peg$c381) { + s2 = peg$c381; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c378); } + if (peg$silentFails === 0) { peg$fail(peg$c382); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16593,7 +16699,7 @@ module.exports = (function() { function peg$parseNEW() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 170, + var key = peg$currPos * 205 + 170, cached = peg$cache[key]; if (cached) { @@ -16603,12 +16709,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c379) { - s2 = peg$c379; + if (input.substr(peg$currPos, 3) === peg$c383) { + s2 = peg$c383; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c380); } + if (peg$silentFails === 0) { peg$fail(peg$c384); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16645,7 +16751,7 @@ module.exports = (function() { function peg$parseNO() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 171, + var key = peg$currPos * 205 + 171, cached = peg$cache[key]; if (cached) { @@ -16655,12 +16761,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c381) { - s2 = peg$c381; + if (input.substr(peg$currPos, 2) === peg$c385) { + s2 = peg$c385; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c382); } + if (peg$silentFails === 0) { peg$fail(peg$c386); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16697,7 +16803,7 @@ module.exports = (function() { function peg$parseNOT() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 172, + var key = peg$currPos * 205 + 172, cached = peg$cache[key]; if (cached) { @@ -16707,12 +16813,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c383) { - s2 = peg$c383; + if (input.substr(peg$currPos, 3) === peg$c387) { + s2 = peg$c387; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c384); } + if (peg$silentFails === 0) { peg$fail(peg$c388); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16749,7 +16855,7 @@ module.exports = (function() { function peg$parseNULL() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 173, + var key = peg$currPos * 205 + 173, cached = peg$cache[key]; if (cached) { @@ -16759,12 +16865,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c385) { - s2 = peg$c385; + if (input.substr(peg$currPos, 4) === peg$c389) { + s2 = peg$c389; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c386); } + if (peg$silentFails === 0) { peg$fail(peg$c390); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16801,7 +16907,7 @@ module.exports = (function() { function peg$parseOF() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 174, + var key = peg$currPos * 205 + 174, cached = peg$cache[key]; if (cached) { @@ -16811,12 +16917,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c387) { - s2 = peg$c387; + if (input.substr(peg$currPos, 2) === peg$c391) { + s2 = peg$c391; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c388); } + if (peg$silentFails === 0) { peg$fail(peg$c392); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16853,7 +16959,7 @@ module.exports = (function() { function peg$parseOFF() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 175, + var key = peg$currPos * 205 + 175, cached = peg$cache[key]; if (cached) { @@ -16863,12 +16969,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c389) { - s2 = peg$c389; + if (input.substr(peg$currPos, 3) === peg$c393) { + s2 = peg$c393; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c390); } + if (peg$silentFails === 0) { peg$fail(peg$c394); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16905,7 +17011,7 @@ module.exports = (function() { function peg$parseON() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 176, + var key = peg$currPos * 205 + 176, cached = peg$cache[key]; if (cached) { @@ -16915,12 +17021,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c391) { - s2 = peg$c391; + if (input.substr(peg$currPos, 2) === peg$c395) { + s2 = peg$c395; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c392); } + if (peg$silentFails === 0) { peg$fail(peg$c396); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -16957,7 +17063,7 @@ module.exports = (function() { function peg$parseOR() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 177, + var key = peg$currPos * 205 + 177, cached = peg$cache[key]; if (cached) { @@ -16967,12 +17073,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c393) { - s2 = peg$c393; + if (input.substr(peg$currPos, 2) === peg$c397) { + s2 = peg$c397; peg$currPos += 2; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c394); } + if (peg$silentFails === 0) { peg$fail(peg$c398); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17009,7 +17115,7 @@ module.exports = (function() { function peg$parseOWN() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 178, + var key = peg$currPos * 205 + 178, cached = peg$cache[key]; if (cached) { @@ -17019,12 +17125,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c395) { - s2 = peg$c395; + if (input.substr(peg$currPos, 3) === peg$c399) { + s2 = peg$c399; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c396); } + if (peg$silentFails === 0) { peg$fail(peg$c400); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17061,7 +17167,7 @@ module.exports = (function() { function peg$parseRETURN() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 179, + var key = peg$currPos * 205 + 179, cached = peg$cache[key]; if (cached) { @@ -17071,12 +17177,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c397) { - s2 = peg$c397; + if (input.substr(peg$currPos, 6) === peg$c401) { + s2 = peg$c401; peg$currPos += 6; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c398); } + if (peg$silentFails === 0) { peg$fail(peg$c402); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17113,7 +17219,7 @@ module.exports = (function() { function peg$parseSWITCH() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 180, + var key = peg$currPos * 205 + 180, cached = peg$cache[key]; if (cached) { @@ -17123,12 +17229,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c399) { - s2 = peg$c399; + if (input.substr(peg$currPos, 6) === peg$c403) { + s2 = peg$c403; peg$currPos += 6; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c400); } + if (peg$silentFails === 0) { peg$fail(peg$c404); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17165,7 +17271,7 @@ module.exports = (function() { function peg$parseTHEN() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 181, + var key = peg$currPos * 205 + 181, cached = peg$cache[key]; if (cached) { @@ -17175,12 +17281,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c401) { - s2 = peg$c401; + if (input.substr(peg$currPos, 4) === peg$c405) { + s2 = peg$c405; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c402); } + if (peg$silentFails === 0) { peg$fail(peg$c406); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17217,7 +17323,7 @@ module.exports = (function() { function peg$parseTHIS() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 182, + var key = peg$currPos * 205 + 182, cached = peg$cache[key]; if (cached) { @@ -17227,12 +17333,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c403) { - s2 = peg$c403; + if (input.substr(peg$currPos, 4) === peg$c407) { + s2 = peg$c407; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c404); } + if (peg$silentFails === 0) { peg$fail(peg$c408); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17269,7 +17375,7 @@ module.exports = (function() { function peg$parseTHROW() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 183, + var key = peg$currPos * 205 + 183, cached = peg$cache[key]; if (cached) { @@ -17279,12 +17385,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c405) { - s2 = peg$c405; + if (input.substr(peg$currPos, 5) === peg$c409) { + s2 = peg$c409; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c406); } + if (peg$silentFails === 0) { peg$fail(peg$c410); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17321,7 +17427,7 @@ module.exports = (function() { function peg$parseTRUE() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 184, + var key = peg$currPos * 205 + 184, cached = peg$cache[key]; if (cached) { @@ -17331,12 +17437,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c407) { - s2 = peg$c407; + if (input.substr(peg$currPos, 4) === peg$c411) { + s2 = peg$c411; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c408); } + if (peg$silentFails === 0) { peg$fail(peg$c412); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17373,7 +17479,7 @@ module.exports = (function() { function peg$parseTRY() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 185, + var key = peg$currPos * 205 + 185, cached = peg$cache[key]; if (cached) { @@ -17383,12 +17489,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c409) { - s2 = peg$c409; + if (input.substr(peg$currPos, 3) === peg$c413) { + s2 = peg$c413; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c410); } + if (peg$silentFails === 0) { peg$fail(peg$c414); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17425,7 +17531,7 @@ module.exports = (function() { function peg$parseTYPEOF() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 186, + var key = peg$currPos * 205 + 186, cached = peg$cache[key]; if (cached) { @@ -17435,12 +17541,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c411) { - s2 = peg$c411; + if (input.substr(peg$currPos, 6) === peg$c415) { + s2 = peg$c415; peg$currPos += 6; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c412); } + if (peg$silentFails === 0) { peg$fail(peg$c416); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17477,7 +17583,7 @@ module.exports = (function() { function peg$parseUNDEFINED() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 187, + var key = peg$currPos * 205 + 187, cached = peg$cache[key]; if (cached) { @@ -17487,12 +17593,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 9) === peg$c413) { - s2 = peg$c413; + if (input.substr(peg$currPos, 9) === peg$c417) { + s2 = peg$c417; peg$currPos += 9; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c414); } + if (peg$silentFails === 0) { peg$fail(peg$c418); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17529,7 +17635,7 @@ module.exports = (function() { function peg$parseUNLESS() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 188, + var key = peg$currPos * 205 + 188, cached = peg$cache[key]; if (cached) { @@ -17539,12 +17645,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c415) { - s2 = peg$c415; + if (input.substr(peg$currPos, 6) === peg$c419) { + s2 = peg$c419; peg$currPos += 6; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c416); } + if (peg$silentFails === 0) { peg$fail(peg$c420); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17581,7 +17687,7 @@ module.exports = (function() { function peg$parseUNTIL() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 189, + var key = peg$currPos * 205 + 189, cached = peg$cache[key]; if (cached) { @@ -17591,12 +17697,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c417) { - s2 = peg$c417; + if (input.substr(peg$currPos, 5) === peg$c421) { + s2 = peg$c421; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c418); } + if (peg$silentFails === 0) { peg$fail(peg$c422); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17633,7 +17739,7 @@ module.exports = (function() { function peg$parseWHEN() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 190, + var key = peg$currPos * 205 + 190, cached = peg$cache[key]; if (cached) { @@ -17643,12 +17749,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c419) { - s2 = peg$c419; + if (input.substr(peg$currPos, 4) === peg$c423) { + s2 = peg$c423; peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c420); } + if (peg$silentFails === 0) { peg$fail(peg$c424); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17685,7 +17791,7 @@ module.exports = (function() { function peg$parseWHILE() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 191, + var key = peg$currPos * 205 + 191, cached = peg$cache[key]; if (cached) { @@ -17695,12 +17801,12 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c421) { - s2 = peg$c421; + if (input.substr(peg$currPos, 5) === peg$c425) { + s2 = peg$c425; peg$currPos += 5; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c422); } + if (peg$silentFails === 0) { peg$fail(peg$c426); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17737,7 +17843,7 @@ module.exports = (function() { function peg$parseYES() { var s0, s1, s2, s3, s4; - var key = peg$currPos * 204 + 192, + var key = peg$currPos * 205 + 192, cached = peg$cache[key]; if (cached) { @@ -17747,12 +17853,64 @@ module.exports = (function() { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c423) { - s2 = peg$c423; + if (input.substr(peg$currPos, 3) === peg$c427) { + s2 = peg$c427; peg$currPos += 3; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c424); } + if (peg$silentFails === 0) { peg$fail(peg$c428); } + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + s4 = peg$parseidentifierPart(); + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = peg$c6; + } else { + peg$currPos = s3; + s3 = peg$c0; + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$c0; + } + } else { + peg$currPos = s1; + s1 = peg$c0; + } + if (s1 !== peg$FAILED) { + s1 = input.substring(s0, peg$currPos); + } + s0 = s1; + + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + + return s0; + } + + function peg$parseSUPER() { + var s0, s1, s2, s3, s4; + + var key = peg$currPos * 205 + 193, + cached = peg$cache[key]; + + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + + s0 = peg$currPos; + s1 = peg$currPos; + if (input.substr(peg$currPos, 5) === peg$c429) { + s2 = peg$c429; + peg$currPos += 5; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c430); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -17789,7 +17947,7 @@ module.exports = (function() { function peg$parseSharedKeywords() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 193, + var key = peg$currPos * 205 + 194, cached = peg$cache[key]; if (cached) { @@ -17798,212 +17956,212 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c407) { - s1 = peg$c407; + if (input.substr(peg$currPos, 4) === peg$c411) { + s1 = peg$c411; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c408); } + if (peg$silentFails === 0) { peg$fail(peg$c412); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c361) { - s1 = peg$c361; + if (input.substr(peg$currPos, 5) === peg$c365) { + s1 = peg$c365; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c362); } + if (peg$silentFails === 0) { peg$fail(peg$c366); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c385) { - s1 = peg$c385; + if (input.substr(peg$currPos, 4) === peg$c389) { + s1 = peg$c389; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c386); } + if (peg$silentFails === 0) { peg$fail(peg$c390); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c403) { - s1 = peg$c403; + if (input.substr(peg$currPos, 4) === peg$c407) { + s1 = peg$c407; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c404); } + if (peg$silentFails === 0) { peg$fail(peg$c408); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c379) { - s1 = peg$c379; + if (input.substr(peg$currPos, 3) === peg$c383) { + s1 = peg$c383; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c380); } + if (peg$silentFails === 0) { peg$fail(peg$c384); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c351) { - s1 = peg$c351; + if (input.substr(peg$currPos, 6) === peg$c355) { + s1 = peg$c355; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c352); } + if (peg$silentFails === 0) { peg$fail(peg$c356); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c411) { - s1 = peg$c411; + if (input.substr(peg$currPos, 6) === peg$c415) { + s1 = peg$c415; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c412); } + if (peg$silentFails === 0) { peg$fail(peg$c416); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 10) === peg$c371) { - s1 = peg$c371; + if (input.substr(peg$currPos, 10) === peg$c375) { + s1 = peg$c375; peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c372); } + if (peg$silentFails === 0) { peg$fail(peg$c376); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c369) { - s1 = peg$c369; + if (input.substr(peg$currPos, 2) === peg$c373) { + s1 = peg$c373; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c370); } + if (peg$silentFails === 0) { peg$fail(peg$c374); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c397) { - s1 = peg$c397; + if (input.substr(peg$currPos, 6) === peg$c401) { + s1 = peg$c401; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c398); } + if (peg$silentFails === 0) { peg$fail(peg$c402); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c405) { - s1 = peg$c405; + if (input.substr(peg$currPos, 5) === peg$c409) { + s1 = peg$c409; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c406); } + if (peg$silentFails === 0) { peg$fail(peg$c410); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c341) { - s1 = peg$c341; + if (input.substr(peg$currPos, 5) === peg$c345) { + s1 = peg$c345; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c342); } + if (peg$silentFails === 0) { peg$fail(peg$c346); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 8) === peg$c347) { - s1 = peg$c347; + if (input.substr(peg$currPos, 8) === peg$c351) { + s1 = peg$c351; peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c348); } + if (peg$silentFails === 0) { peg$fail(peg$c352); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 8) === peg$c353) { - s1 = peg$c353; + if (input.substr(peg$currPos, 8) === peg$c357) { + s1 = peg$c357; peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c354); } + if (peg$silentFails === 0) { peg$fail(peg$c358); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c367) { - s1 = peg$c367; + if (input.substr(peg$currPos, 2) === peg$c371) { + s1 = peg$c371; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c368); } + if (peg$silentFails === 0) { peg$fail(peg$c372); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c357) { - s1 = peg$c357; + if (input.substr(peg$currPos, 4) === peg$c361) { + s1 = peg$c361; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c358); } + if (peg$silentFails === 0) { peg$fail(peg$c362); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c399) { - s1 = peg$c399; + if (input.substr(peg$currPos, 6) === peg$c403) { + s1 = peg$c403; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c400); } + if (peg$silentFails === 0) { peg$fail(peg$c404); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c365) { - s1 = peg$c365; + if (input.substr(peg$currPos, 3) === peg$c369) { + s1 = peg$c369; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c366); } + if (peg$silentFails === 0) { peg$fail(peg$c370); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c421) { - s1 = peg$c421; + if (input.substr(peg$currPos, 5) === peg$c425) { + s1 = peg$c425; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c422); } + if (peg$silentFails === 0) { peg$fail(peg$c426); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c355) { - s1 = peg$c355; + if (input.substr(peg$currPos, 2) === peg$c359) { + s1 = peg$c359; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c356); } + if (peg$silentFails === 0) { peg$fail(peg$c360); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c409) { - s1 = peg$c409; + if (input.substr(peg$currPos, 3) === peg$c413) { + s1 = peg$c413; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c410); } + if (peg$silentFails === 0) { peg$fail(peg$c414); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c345) { - s1 = peg$c345; + if (input.substr(peg$currPos, 5) === peg$c349) { + s1 = peg$c349; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c346); } + if (peg$silentFails === 0) { peg$fail(peg$c350); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 7) === peg$c363) { - s1 = peg$c363; + if (input.substr(peg$currPos, 7) === peg$c367) { + s1 = peg$c367; peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c364); } + if (peg$silentFails === 0) { peg$fail(peg$c368); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c349) { - s1 = peg$c349; + if (input.substr(peg$currPos, 5) === peg$c353) { + s1 = peg$c353; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c350); } + if (peg$silentFails === 0) { peg$fail(peg$c354); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 7) === peg$c359) { - s1 = peg$c359; + if (input.substr(peg$currPos, 7) === peg$c363) { + s1 = peg$c363; peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c360); } + if (peg$silentFails === 0) { peg$fail(peg$c364); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c425) { - s1 = peg$c425; + if (input.substr(peg$currPos, 5) === peg$c429) { + s1 = peg$c429; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c426); } + if (peg$silentFails === 0) { peg$fail(peg$c430); } } } } @@ -18061,7 +18219,7 @@ module.exports = (function() { function peg$parseJSKeywords() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 194, + var key = peg$currPos * 205 + 195, cached = peg$cache[key]; if (cached) { @@ -18070,164 +18228,164 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c427) { - s1 = peg$c427; + if (input.substr(peg$currPos, 4) === peg$c431) { + s1 = peg$c431; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c428); } + if (peg$silentFails === 0) { peg$fail(peg$c432); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 7) === peg$c429) { - s1 = peg$c429; + if (input.substr(peg$currPos, 7) === peg$c433) { + s1 = peg$c433; peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c430); } + if (peg$silentFails === 0) { peg$fail(peg$c434); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 8) === peg$c431) { - s1 = peg$c431; + if (input.substr(peg$currPos, 8) === peg$c435) { + s1 = peg$c435; peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c432); } + if (peg$silentFails === 0) { peg$fail(peg$c436); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c433) { - s1 = peg$c433; + if (input.substr(peg$currPos, 3) === peg$c437) { + s1 = peg$c437; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c434); } + if (peg$silentFails === 0) { peg$fail(peg$c438); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c435) { - s1 = peg$c435; + if (input.substr(peg$currPos, 4) === peg$c439) { + s1 = peg$c439; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c436); } + if (peg$silentFails === 0) { peg$fail(peg$c440); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c437) { - s1 = peg$c437; + if (input.substr(peg$currPos, 4) === peg$c441) { + s1 = peg$c441; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c438); } + if (peg$silentFails === 0) { peg$fail(peg$c442); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c439) { - s1 = peg$c439; + if (input.substr(peg$currPos, 5) === peg$c443) { + s1 = peg$c443; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c440); } + if (peg$silentFails === 0) { peg$fail(peg$c444); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c441) { - s1 = peg$c441; + if (input.substr(peg$currPos, 3) === peg$c445) { + s1 = peg$c445; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c442); } + if (peg$silentFails === 0) { peg$fail(peg$c446); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c443) { - s1 = peg$c443; + if (input.substr(peg$currPos, 4) === peg$c447) { + s1 = peg$c447; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c444); } + if (peg$silentFails === 0) { peg$fail(peg$c448); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c445) { - s1 = peg$c445; + if (input.substr(peg$currPos, 6) === peg$c449) { + s1 = peg$c449; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c446); } + if (peg$silentFails === 0) { peg$fail(peg$c450); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c447) { - s1 = peg$c447; + if (input.substr(peg$currPos, 6) === peg$c451) { + s1 = peg$c451; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c448); } + if (peg$silentFails === 0) { peg$fail(peg$c452); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c449) { - s1 = peg$c449; + if (input.substr(peg$currPos, 6) === peg$c453) { + s1 = peg$c453; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c450); } + if (peg$silentFails === 0) { peg$fail(peg$c454); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 10) === peg$c451) { - s1 = peg$c451; + if (input.substr(peg$currPos, 10) === peg$c455) { + s1 = peg$c455; peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c452); } + if (peg$silentFails === 0) { peg$fail(peg$c456); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 9) === peg$c453) { - s1 = peg$c453; + if (input.substr(peg$currPos, 9) === peg$c457) { + s1 = peg$c457; peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c454); } + if (peg$silentFails === 0) { peg$fail(peg$c458); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 7) === peg$c455) { - s1 = peg$c455; + if (input.substr(peg$currPos, 7) === peg$c459) { + s1 = peg$c459; peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c456); } + if (peg$silentFails === 0) { peg$fail(peg$c460); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 7) === peg$c457) { - s1 = peg$c457; + if (input.substr(peg$currPos, 7) === peg$c461) { + s1 = peg$c461; peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c458); } + if (peg$silentFails === 0) { peg$fail(peg$c462); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 9) === peg$c459) { - s1 = peg$c459; + if (input.substr(peg$currPos, 9) === peg$c463) { + s1 = peg$c463; peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c460); } + if (peg$silentFails === 0) { peg$fail(peg$c464); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c461) { - s1 = peg$c461; + if (input.substr(peg$currPos, 6) === peg$c465) { + s1 = peg$c465; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c462); } + if (peg$silentFails === 0) { peg$fail(peg$c466); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c463) { - s1 = peg$c463; + if (input.substr(peg$currPos, 6) === peg$c467) { + s1 = peg$c467; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c464); } + if (peg$silentFails === 0) { peg$fail(peg$c468); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c465) { - s1 = peg$c465; + if (input.substr(peg$currPos, 5) === peg$c469) { + s1 = peg$c469; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c466); } + if (peg$silentFails === 0) { peg$fail(peg$c470); } } } } @@ -18279,7 +18437,7 @@ module.exports = (function() { function peg$parseCSKeywords() { var s0, s1, s2, s3; - var key = peg$currPos * 204 + 195, + var key = peg$currPos * 205 + 196, cached = peg$cache[key]; if (cached) { @@ -18288,140 +18446,140 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 9) === peg$c413) { - s1 = peg$c413; + if (input.substr(peg$currPos, 9) === peg$c417) { + s1 = peg$c417; peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c414); } + if (peg$silentFails === 0) { peg$fail(peg$c418); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c401) { - s1 = peg$c401; + if (input.substr(peg$currPos, 4) === peg$c405) { + s1 = peg$c405; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c402); } + if (peg$silentFails === 0) { peg$fail(peg$c406); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c415) { - s1 = peg$c415; + if (input.substr(peg$currPos, 6) === peg$c419) { + s1 = peg$c419; peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c416); } + if (peg$silentFails === 0) { peg$fail(peg$c420); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c417) { - s1 = peg$c417; + if (input.substr(peg$currPos, 5) === peg$c421) { + s1 = peg$c421; peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c418); } + if (peg$silentFails === 0) { peg$fail(peg$c422); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c377) { - s1 = peg$c377; + if (input.substr(peg$currPos, 4) === peg$c381) { + s1 = peg$c381; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c378); } + if (peg$silentFails === 0) { peg$fail(peg$c382); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c389) { - s1 = peg$c389; + if (input.substr(peg$currPos, 3) === peg$c393) { + s1 = peg$c393; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c390); } + if (peg$silentFails === 0) { peg$fail(peg$c394); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c343) { - s1 = peg$c343; + if (input.substr(peg$currPos, 2) === peg$c347) { + s1 = peg$c347; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c344); } + if (peg$silentFails === 0) { peg$fail(peg$c348); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c419) { - s1 = peg$c419; + if (input.substr(peg$currPos, 4) === peg$c423) { + s1 = peg$c423; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c420); } + if (peg$silentFails === 0) { peg$fail(peg$c424); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c339) { - s1 = peg$c339; + if (input.substr(peg$currPos, 3) === peg$c343) { + s1 = peg$c343; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c340); } + if (peg$silentFails === 0) { peg$fail(peg$c344); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c393) { - s1 = peg$c393; + if (input.substr(peg$currPos, 2) === peg$c397) { + s1 = peg$c397; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c394); } + if (peg$silentFails === 0) { peg$fail(peg$c398); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c375) { - s1 = peg$c375; + if (input.substr(peg$currPos, 4) === peg$c379) { + s1 = peg$c379; peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c376); } + if (peg$silentFails === 0) { peg$fail(peg$c380); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c373) { - s1 = peg$c373; + if (input.substr(peg$currPos, 2) === peg$c377) { + s1 = peg$c377; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c374); } + if (peg$silentFails === 0) { peg$fail(peg$c378); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c383) { - s1 = peg$c383; + if (input.substr(peg$currPos, 3) === peg$c387) { + s1 = peg$c387; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c384); } + if (peg$silentFails === 0) { peg$fail(peg$c388); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c423) { - s1 = peg$c423; + if (input.substr(peg$currPos, 3) === peg$c427) { + s1 = peg$c427; peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c424); } + if (peg$silentFails === 0) { peg$fail(peg$c428); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c381) { - s1 = peg$c381; + if (input.substr(peg$currPos, 2) === peg$c385) { + s1 = peg$c385; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c382); } + if (peg$silentFails === 0) { peg$fail(peg$c386); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c391) { - s1 = peg$c391; + if (input.substr(peg$currPos, 2) === peg$c395) { + s1 = peg$c395; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c392); } + if (peg$silentFails === 0) { peg$fail(peg$c396); } } if (s1 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c387) { - s1 = peg$c387; + if (input.substr(peg$currPos, 2) === peg$c391) { + s1 = peg$c391; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c388); } + if (peg$silentFails === 0) { peg$fail(peg$c392); } } } } @@ -18470,7 +18628,7 @@ module.exports = (function() { function peg$parsereserved() { var s0, s1; - var key = peg$currPos * 204 + 196, + var key = peg$currPos * 205 + 197, cached = peg$cache[key]; if (cached) { @@ -18502,7 +18660,7 @@ module.exports = (function() { function peg$parseUnicodeEscapeSequence() { var s0, s1, s2, s3, s4, s5; - var key = peg$currPos * 204 + 197, + var key = peg$currPos * 205 + 198, cached = peg$cache[key]; if (cached) { @@ -18511,12 +18669,12 @@ module.exports = (function() { } s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c467) { - s1 = peg$c467; + if (input.substr(peg$currPos, 2) === peg$c471) { + s1 = peg$c471; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c468); } + if (peg$silentFails === 0) { peg$fail(peg$c472); } } if (s1 !== peg$FAILED) { s2 = peg$parsehexDigit(); @@ -18528,7 +18686,7 @@ module.exports = (function() { s5 = peg$parsehexDigit(); if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c469(s2, s3, s4, s5); + s1 = peg$c473(s2, s3, s4, s5); s0 = s1; } else { peg$currPos = s0; @@ -18559,7 +18717,7 @@ module.exports = (function() { function peg$parseUnicodeLetter() { var s0, s1, s2; - var key = peg$currPos * 204 + 198, + var key = peg$currPos * 205 + 199, cached = peg$cache[key]; if (cached) { @@ -18567,29 +18725,29 @@ module.exports = (function() { return cached.result; } - if (peg$c470.test(input.charAt(peg$currPos))) { + if (peg$c474.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c471); } + if (peg$silentFails === 0) { peg$fail(peg$c475); } } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55340) { - s1 = peg$c472; + s1 = peg$c476; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c473); } + if (peg$silentFails === 0) { peg$fail(peg$c477); } } if (s1 !== peg$FAILED) { - if (peg$c474.test(input.charAt(peg$currPos))) { + if (peg$c478.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c475); } + if (peg$silentFails === 0) { peg$fail(peg$c479); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18605,19 +18763,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55304) { - s1 = peg$c476; + s1 = peg$c480; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c477); } + if (peg$silentFails === 0) { peg$fail(peg$c481); } } if (s1 !== peg$FAILED) { - if (peg$c478.test(input.charAt(peg$currPos))) { + if (peg$c482.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c479); } + if (peg$silentFails === 0) { peg$fail(peg$c483); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18633,19 +18791,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55401) { - s1 = peg$c480; + s1 = peg$c484; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c481); } + if (peg$silentFails === 0) { peg$fail(peg$c485); } } if (s1 !== peg$FAILED) { - if (peg$c482.test(input.charAt(peg$currPos))) { + if (peg$c486.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c483); } + if (peg$silentFails === 0) { peg$fail(peg$c487); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18661,19 +18819,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55305) { - s1 = peg$c484; + s1 = peg$c488; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c485); } + if (peg$silentFails === 0) { peg$fail(peg$c489); } } if (s1 !== peg$FAILED) { - if (peg$c486.test(input.charAt(peg$currPos))) { + if (peg$c490.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c487); } + if (peg$silentFails === 0) { peg$fail(peg$c491); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18689,19 +18847,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55349) { - s1 = peg$c488; + s1 = peg$c492; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c489); } + if (peg$silentFails === 0) { peg$fail(peg$c493); } } if (s1 !== peg$FAILED) { - if (peg$c490.test(input.charAt(peg$currPos))) { + if (peg$c494.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c491); } + if (peg$silentFails === 0) { peg$fail(peg$c495); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18717,19 +18875,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55300) { - s1 = peg$c492; + s1 = peg$c496; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c493); } + if (peg$silentFails === 0) { peg$fail(peg$c497); } } if (s1 !== peg$FAILED) { - if (peg$c494.test(input.charAt(peg$currPos))) { + if (peg$c498.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c495); } + if (peg$silentFails === 0) { peg$fail(peg$c499); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18745,19 +18903,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55296) { - s1 = peg$c496; + s1 = peg$c500; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c497); } + if (peg$silentFails === 0) { peg$fail(peg$c501); } } if (s1 !== peg$FAILED) { - if (peg$c498.test(input.charAt(peg$currPos))) { + if (peg$c502.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c499); } + if (peg$silentFails === 0) { peg$fail(peg$c503); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18773,19 +18931,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55308) { - s1 = peg$c500; + s1 = peg$c504; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c501); } + if (peg$silentFails === 0) { peg$fail(peg$c505); } } if (s1 !== peg$FAILED) { - if (peg$c502.test(input.charAt(peg$currPos))) { + if (peg$c506.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c503); } + if (peg$silentFails === 0) { peg$fail(peg$c507); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18801,19 +18959,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55297) { - s1 = peg$c504; + s1 = peg$c508; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c505); } + if (peg$silentFails === 0) { peg$fail(peg$c509); } } if (s1 !== peg$FAILED) { - if (peg$c506.test(input.charAt(peg$currPos))) { + if (peg$c510.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c507); } + if (peg$silentFails === 0) { peg$fail(peg$c511); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18829,19 +18987,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55406) { - s1 = peg$c508; + s1 = peg$c512; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c509); } + if (peg$silentFails === 0) { peg$fail(peg$c513); } } if (s1 !== peg$FAILED) { - if (peg$c510.test(input.charAt(peg$currPos))) { + if (peg$c514.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c511); } + if (peg$silentFails === 0) { peg$fail(peg$c515); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18857,19 +19015,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55299) { - s1 = peg$c512; + s1 = peg$c516; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c513); } + if (peg$silentFails === 0) { peg$fail(peg$c517); } } if (s1 !== peg$FAILED) { - if (peg$c514.test(input.charAt(peg$currPos))) { + if (peg$c518.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c515); } + if (peg$silentFails === 0) { peg$fail(peg$c519); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18885,19 +19043,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55360) { - s1 = peg$c516; + s1 = peg$c520; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c517); } + if (peg$silentFails === 0) { peg$fail(peg$c521); } } if (s1 !== peg$FAILED) { - if (peg$c518.test(input.charAt(peg$currPos))) { + if (peg$c522.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c519); } + if (peg$silentFails === 0) { peg$fail(peg$c523); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18913,19 +19071,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55422) { - s1 = peg$c520; + s1 = peg$c524; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c521); } + if (peg$silentFails === 0) { peg$fail(peg$c525); } } if (s1 !== peg$FAILED) { - if (peg$c522.test(input.charAt(peg$currPos))) { + if (peg$c526.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c523); } + if (peg$silentFails === 0) { peg$fail(peg$c527); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18941,19 +19099,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55405) { - s1 = peg$c524; + s1 = peg$c528; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c525); } + if (peg$silentFails === 0) { peg$fail(peg$c529); } } if (s1 !== peg$FAILED) { - if (peg$c526.test(input.charAt(peg$currPos))) { + if (peg$c530.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c527); } + if (peg$silentFails === 0) { peg$fail(peg$c531); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18969,19 +19127,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55322) { - s1 = peg$c528; + s1 = peg$c532; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c529); } + if (peg$silentFails === 0) { peg$fail(peg$c533); } } if (s1 !== peg$FAILED) { - if (peg$c530.test(input.charAt(peg$currPos))) { + if (peg$c534.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c531); } + if (peg$silentFails === 0) { peg$fail(peg$c535); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -18997,19 +19155,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55298) { - s1 = peg$c532; + s1 = peg$c536; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c533); } + if (peg$silentFails === 0) { peg$fail(peg$c537); } } if (s1 !== peg$FAILED) { - if (peg$c534.test(input.charAt(peg$currPos))) { + if (peg$c538.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c535); } + if (peg$silentFails === 0) { peg$fail(peg$c539); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19025,19 +19183,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55309) { - s1 = peg$c536; + s1 = peg$c540; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c537); } + if (peg$silentFails === 0) { peg$fail(peg$c541); } } if (s1 !== peg$FAILED) { - if (peg$c538.test(input.charAt(peg$currPos))) { + if (peg$c542.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c539); } + if (peg$silentFails === 0) { peg$fail(peg$c543); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19076,7 +19234,7 @@ module.exports = (function() { function peg$parseUnicodeCombiningMark() { var s0, s1, s2; - var key = peg$currPos * 204 + 199, + var key = peg$currPos * 205 + 200, cached = peg$cache[key]; if (cached) { @@ -19084,29 +19242,29 @@ module.exports = (function() { return cached.result; } - if (peg$c540.test(input.charAt(peg$currPos))) { + if (peg$c544.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c541); } + if (peg$silentFails === 0) { peg$fail(peg$c545); } } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 56128) { - s1 = peg$c542; + s1 = peg$c546; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c543); } + if (peg$silentFails === 0) { peg$fail(peg$c547); } } if (s1 !== peg$FAILED) { - if (peg$c544.test(input.charAt(peg$currPos))) { + if (peg$c548.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c545); } + if (peg$silentFails === 0) { peg$fail(peg$c549); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19122,19 +19280,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55348) { - s1 = peg$c546; + s1 = peg$c550; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c547); } + if (peg$silentFails === 0) { peg$fail(peg$c551); } } if (s1 !== peg$FAILED) { - if (peg$c548.test(input.charAt(peg$currPos))) { + if (peg$c552.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c549); } + if (peg$silentFails === 0) { peg$fail(peg$c553); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19150,19 +19308,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55300) { - s1 = peg$c492; + s1 = peg$c496; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c493); } + if (peg$silentFails === 0) { peg$fail(peg$c497); } } if (s1 !== peg$FAILED) { - if (peg$c550.test(input.charAt(peg$currPos))) { + if (peg$c554.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c551); } + if (peg$silentFails === 0) { peg$fail(peg$c555); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19178,19 +19336,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55296) { - s1 = peg$c496; + s1 = peg$c500; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c497); } + if (peg$silentFails === 0) { peg$fail(peg$c501); } } if (s1 !== peg$FAILED) { - if (peg$c552.test(input.charAt(peg$currPos))) { + if (peg$c556.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c553); } + if (peg$silentFails === 0) { peg$fail(peg$c557); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19206,19 +19364,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55298) { - s1 = peg$c532; + s1 = peg$c536; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c533); } + if (peg$silentFails === 0) { peg$fail(peg$c537); } } if (s1 !== peg$FAILED) { - if (peg$c554.test(input.charAt(peg$currPos))) { + if (peg$c558.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c555); } + if (peg$silentFails === 0) { peg$fail(peg$c559); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19245,7 +19403,7 @@ module.exports = (function() { function peg$parseUnicodeDigit() { var s0, s1, s2; - var key = peg$currPos * 204 + 200, + var key = peg$currPos * 205 + 201, cached = peg$cache[key]; if (cached) { @@ -19253,29 +19411,29 @@ module.exports = (function() { return cached.result; } - if (peg$c556.test(input.charAt(peg$currPos))) { + if (peg$c560.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c557); } + if (peg$silentFails === 0) { peg$fail(peg$c561); } } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55349) { - s1 = peg$c488; + s1 = peg$c492; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c489); } + if (peg$silentFails === 0) { peg$fail(peg$c493); } } if (s1 !== peg$FAILED) { - if (peg$c558.test(input.charAt(peg$currPos))) { + if (peg$c562.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c559); } + if (peg$silentFails === 0) { peg$fail(peg$c563); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19291,19 +19449,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55300) { - s1 = peg$c492; + s1 = peg$c496; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c493); } + if (peg$silentFails === 0) { peg$fail(peg$c497); } } if (s1 !== peg$FAILED) { - if (peg$c560.test(input.charAt(peg$currPos))) { + if (peg$c564.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c561); } + if (peg$silentFails === 0) { peg$fail(peg$c565); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19319,19 +19477,19 @@ module.exports = (function() { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 55297) { - s1 = peg$c504; + s1 = peg$c508; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c505); } + if (peg$silentFails === 0) { peg$fail(peg$c509); } } if (s1 !== peg$FAILED) { - if (peg$c562.test(input.charAt(peg$currPos))) { + if (peg$c566.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c563); } + if (peg$silentFails === 0) { peg$fail(peg$c567); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -19356,7 +19514,7 @@ module.exports = (function() { function peg$parseUnicodeConnectorPunctuation() { var s0; - var key = peg$currPos * 204 + 201, + var key = peg$currPos * 205 + 202, cached = peg$cache[key]; if (cached) { @@ -19364,12 +19522,12 @@ module.exports = (function() { return cached.result; } - if (peg$c564.test(input.charAt(peg$currPos))) { + if (peg$c568.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c565); } + if (peg$silentFails === 0) { peg$fail(peg$c569); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -19380,7 +19538,7 @@ module.exports = (function() { function peg$parseZWNJ() { var s0; - var key = peg$currPos * 204 + 202, + var key = peg$currPos * 205 + 203, cached = peg$cache[key]; if (cached) { @@ -19389,11 +19547,11 @@ module.exports = (function() { } if (input.charCodeAt(peg$currPos) === 8204) { - s0 = peg$c566; + s0 = peg$c570; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c567); } + if (peg$silentFails === 0) { peg$fail(peg$c571); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -19404,7 +19562,7 @@ module.exports = (function() { function peg$parseZWJ() { var s0; - var key = peg$currPos * 204 + 203, + var key = peg$currPos * 205 + 204, cached = peg$cache[key]; if (cached) { @@ -19413,11 +19571,11 @@ module.exports = (function() { } if (input.charCodeAt(peg$currPos) === 8205) { - s0 = peg$c568; + s0 = peg$c572; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c569); } + if (peg$silentFails === 0) { peg$fail(peg$c573); } } peg$cache[key] = { nextPos: peg$currPos, result: s0 }; @@ -19604,8 +19762,9 @@ module.exports = (function() { }; foldBinaryExpr = function (parts, ignoreChains) { var chainStack, expr, leftOperand, nextOp, nextPrec, operator, prec, rightOperand, stack; - if (parts.length < 3) + if (parts.length < 3) { return parts[0]; + } stack = [].slice.call(parts, 0, 3); parts = [].slice.call(parts, 3); while (parts.length > 0) { @@ -19623,8 +19782,9 @@ module.exports = (function() { nextPrec = precedenceTable[nextOp]; prec = precedenceTable[operator]; } - if (!(null != nextOp && (nextPrec > prec || in$(nextOp, chainableComparisonOps)))) + if (!(null != nextOp && (nextPrec > prec || in$(nextOp, chainableComparisonOps)))) { break; + } } stack.push(new CS.ChainedComparisonOp(foldBinaryExpr(chainStack, true))); continue; @@ -19687,16 +19847,19 @@ module.exports = (function() { }; isValidRegExpFlags = function (flags) { var f, flag; - if (!flags) + if (!flags) { return true; - if (flags.length > 4) + } + if (flags.length > 4) { return false; + } flags.sort(); flag = null; for (var i$1 = 0, length$1 = flags.length; i$1 < length$1; ++i$1) { f = flags[i$1]; - if (flag === f) + if (flag === f) { return false; + } flag = f; } return true; @@ -19711,11 +19874,13 @@ module.exports = (function() { wholeMatch = cache$[0]; attempt = cache$[1]; matchStr = matchStr.slice(match.index + wholeMatch.length); - if (!(null != indent) || 0 < attempt.length && attempt.length < indent.length) + if (!(null != indent) || 0 < attempt.length && attempt.length < indent.length) { indent = attempt; + } } - if (indent) + if (indent) { str = str.replace(new RegExp('\\n' + indent, 'g'), '\n'); + } str = str.replace(/^\n/, ''); return str; }; @@ -19726,31 +19891,36 @@ module.exports = (function() { piece = pieces[i$1]; index = i$1; if (piece instanceof CS.String) { - if (index === pieces.length - 1) + if (index === pieces.length - 1) { piece.data = piece.data.replace(/\s+$/, ''); + } matchStr = piece.data; while (match = /\n+([^\n\S]*)/.exec(matchStr)) { cache$ = match; wholeMatch = cache$[0]; attempt = cache$[1]; matchStr = matchStr.slice(match.index + wholeMatch.length); - if (!(null != indent) || 0 < attempt.length && attempt.length < indent.length) + if (!(null != indent) || 0 < attempt.length && attempt.length < indent.length) { indent = attempt; + } } } } - if (indent) + if (indent) { for (var i$2 = 0, length$2 = pieces.length; i$2 < length$2; ++i$2) { piece = pieces[i$2]; index = i$2; if (piece instanceof CS.String) { piece.data = piece.data.replace(new RegExp('\\n' + indent, 'g'), '\n'); - if (index === pieces.length - 1) + if (index === pieces.length - 1) { piece.data = piece.data.replace(/(\n\s*)+$/, ''); - if (index === 0) + } + if (index === 0) { piece.data = piece.data.replace(/^\n/, ''); + } } } + } return pieces; }; r = function (node) { @@ -19775,8 +19945,9 @@ module.exports = (function() { id = function (x) { return x; }; - if (!options.raw) + if (!options.raw) { r = p = rp = id; + } eval('\n // XXX: this overrides the function with the same name generated by PEGjs; see comment within\n function peg$computePosDetails() {\n function advanceCachedReportedPos() {\n var ch;\n\n for (; peg$cachedPos < peg$reportedPos; peg$cachedPos++) {\n ch = input.charAt(peg$cachedPos);\n if (ch === "\\n") {\n if (!peg$cachedPosDetails.seenCR) { peg$cachedPosDetails.line++; }\n peg$cachedPosDetails.column = 1;\n peg$cachedPosDetails.seenCR = false;\n } else if (ch === "\\r" || ch === "\\u2028" || ch === "\\u2029") {\n peg$cachedPosDetails.line++;\n peg$cachedPosDetails.column = 1;\n peg$cachedPosDetails.seenCR = true;\n // XXX: strip control characters when calculating position information; see #117\n } else if(!/[\\uEFEF\\uEFFE\\uEFFF]/.test(ch)) {\n peg$cachedPosDetails.column++;\n peg$cachedPosDetails.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== peg$reportedPos) {\n if (peg$cachedPos > peg$reportedPos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advanceCachedReportedPos();\n }\n\n return peg$cachedPosDetails;\n }\n '); function isOwn$(o, p) { return {}.hasOwnProperty.call(o, p); diff --git a/lib/pegjs-coffee-plugin.js b/lib/pegjs-coffee-plugin.js index 5c714df8..f8728b2e 100644 --- a/lib/pegjs-coffee-plugin.js +++ b/lib/pegjs-coffee-plugin.js @@ -7,8 +7,9 @@ compile = function (csCode, options) { if (null == options) options = {}; csAST = CoffeeScript.parse('-> ' + csCode.trimRight()); - if (csAST.body.statements.length > 1) + if (csAST.body.statements.length > 1) { throw new Error('inconsistent base indentation'); + } jsAST = CoffeeScript.compile(csAST, { bare: true, inScope: options.inScope diff --git a/lib/preprocessor.js b/lib/preprocessor.js index 3450a9d5..e3d06baf 100644 --- a/lib/preprocessor.js +++ b/lib/preprocessor.js @@ -2,7 +2,7 @@ var DEDENT, INDENT, pointToErrorLocation, Preprocessor, StringScanner, TERM, ws; pointToErrorLocation = require('./helpers').pointToErrorLocation; StringScanner = require('StringScanner'); -this.Preprocessor = Preprocessor = function () { +exports.Preprocessor = Preprocessor = function () { ws = '\\t\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000\\uFEFF'; INDENT = '\uEFEF'; DEDENT = '\uEFFE'; @@ -82,34 +82,40 @@ this.Preprocessor = Preprocessor = function () { this.context.push(c); break; case DEDENT: - if (!(top === INDENT)) + if (!(top === INDENT)) { this.err(c); + } this.indents.pop(); this.context.pop(); break; case '\n': - if (!(top === '#' || top === 'heregexp-#')) + if (!(top === '#' || top === 'heregexp-#')) { this.err(c); + } this.context.pop(); break; case ']': - if (!(top === '[' || top === 'regexp-[' || top === 'heregexp-[')) + if (!(top === '[' || top === 'regexp-[' || top === 'heregexp-[')) { this.err(c); + } this.context.pop(); break; case ')': - if (!(top === '(' || top === 'regexp-(' || top === 'heregexp-(')) + if (!(top === '(' || top === 'regexp-(' || top === 'heregexp-(')) { this.err(c); + } this.context.pop(); break; case '}': - if (!(top === '#{' || top === '{' || top === 'regexp-{' || top === 'heregexp-{')) + if (!(top === '#{' || top === '{' || top === 'regexp-{' || top === 'heregexp-{')) { this.err(c); + } this.context.pop(); break; case 'end-\\': - if (!(top === '\\')) + if (!(top === '\\')) { this.err(c); + } this.context.pop(); break; default: @@ -118,8 +124,9 @@ this.Preprocessor = Preprocessor = function () { return this.context; }; Preprocessor.prototype.p = function (s) { - if (null != s) + if (null != s) { this.preprocessed = '' + this.preprocessed + s; + } return s; }; Preprocessor.prototype.scan = function (r) { @@ -174,14 +181,16 @@ this.Preprocessor = Preprocessor = function () { spaceBefore = new RegExp('[' + ws + ']').test(lastChar); impliedRegexp = /[;,=><*%^&|[(+!~-]/.test(lastChar); } - if (pos === 1 || impliedRegexp || spaceBefore && !this.ss.check(new RegExp('[' + ws + '=]')) && this.ss.check(/[^\r\n]*\//)) + if (pos === 1 || impliedRegexp || spaceBefore && !this.ss.check(new RegExp('[' + ws + '=]')) && this.ss.check(/[^\r\n]*\//)) { return this.observe('/'); + } } }; Preprocessor.prototype.process = function (input) { var tok; - if (this.options.literate) + if (this.options.literate) { input = input.replace(/^( {0,3}\S)/gm, ' #$1'); + } this.ss = new StringScanner(input); while (!this.ss.eos()) { switch (this.peek()) { @@ -228,8 +237,9 @@ this.Preprocessor = Preprocessor = function () { } break; case '\\': - if (this.scan(/[\s\S]/)) + if (this.scan(/[\s\S]/)) { this.observe('end-\\'); + } break; case '"""': this.scan(/(?:[^"#\\]+|""?(?!")|#(?!{)|\\.)+/); @@ -243,35 +253,41 @@ this.Preprocessor = Preprocessor = function () { case '"': this.scan(/(?:[^"#\\]+|#(?!{)|\\.)+/); this.ss.scan(/\\\n/); - if (tok = this.scan(/#{|"/)) + if (tok = this.scan(/#{|"/)) { this.observe(tok); + } break; case "'''": this.scan(/(?:[^'\\]+|''?(?!')|\\.)+/); this.ss.scan(/\\\n/); - if (tok = this.scan(/'''/)) + if (tok = this.scan(/'''/)) { this.observe(tok); + } break; case "'": this.scan(/(?:[^'\\]+|\\.)+/); this.ss.scan(/\\\n/); - if (tok = this.scan(/'/)) + if (tok = this.scan(/'/)) { this.observe(tok); + } break; case '###': this.scan(/(?:[^#]+|##?(?!#))+/); - if (tok = this.scan(/###/)) + if (tok = this.scan(/###/)) { this.observe(tok); + } break; case '#': this.scan(/[^\n]+/); - if (tok = this.scan(/\n/)) + if (tok = this.scan(/\n/)) { this.observe(tok); + } break; case '`': this.scan(/[^`]+/); - if (tok = this.scan(/`/)) + if (tok = this.scan(/`/)) { this.observe(tok); + } break; case '///': this.scan(/(?:[^[/#\\]+|\/\/?(?!\/)|\\.)+/); @@ -285,13 +301,15 @@ this.Preprocessor = Preprocessor = function () { break; case 'heregexp-[': this.scan(/(?:[^\]\/\\]+|\/\/?(?!\/))+/); - if (tok = this.scan(/[\]\\]|#{|\/\/\//)) + if (tok = this.scan(/[\]\\]|#{|\/\/\//)) { this.observe(tok); + } break; case 'heregexp-#': this.ss.scan(/(?:[^\n/]+|\/\/?(?!\/))+/); - if (tok = this.scan(/\n|\/\/\//)) + if (tok = this.scan(/\n|\/\/\//)) { this.observe(tok); + } break; case '/': this.scan(/[^[/\\]+/); @@ -303,8 +321,9 @@ this.Preprocessor = Preprocessor = function () { break; case 'regexp-[': this.scan(/[^\]\\]+/); - if (tok = this.scan(/[\]\\]/)) + if (tok = this.scan(/[\]\\]/)) { this.observe(tok); + } } } this.scan(new RegExp('[' + ws + '\\n]*$')); diff --git a/lib/repl.js b/lib/repl.js index eb71c11f..4d847841 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -35,8 +35,9 @@ addMultilineHandler = function (repl) { } }); return inputStream.on('keypress', function (char, key) { - if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) + if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) { return; + } if (enabled) { if (!buffer.match(/\n/)) { enabled = !enabled; @@ -44,8 +45,9 @@ addMultilineHandler = function (repl) { rli.prompt(true); return; } - if (null != rli.line && !rli.line.match(/^\s*$/)) + if (null != rli.line && !rli.line.match(/^\s*$/)) { return; + } enabled = !enabled; rli.line = ''; rli.cursor = 0; @@ -68,13 +70,16 @@ addHistory = function (repl, filename, maxSize) { size = Math.min(maxSize, stat.size); readFd = fs.openSync(filename, 'r'); buffer = new Buffer(size); - if (size) + if (size) { fs.readSync(readFd, buffer, 0, size, stat.size - size); + } repl.rli.history = buffer.toString().split('\n').reverse(); - if (stat.size > maxSize) + if (stat.size > maxSize) { repl.rli.history.pop(); - if (repl.rli.history[0] === '') + } + if (repl.rli.history[0] === '') { repl.rli.history.shift(); + } repl.rli.historyIndex = -1; } catch (e$) { e = e$; @@ -138,8 +143,9 @@ module.exports = { input = input.replace(/\uFF00/g, '\n'); input = input.replace(/^\(([\s\S]*)\n\)$/m, '$1'); input = input.replace(/(^|[\r\n]+)(\s*)##?(?:[^#\r\n][^\r\n]*|)($|[\r\n])/, '$1$2$3'); - if (/^\s*$/.test(input)) + if (/^\s*$/.test(input)) { return cb(null); + } try { inputAst = CoffeeScript.parse(input, { filename: filename, @@ -162,8 +168,9 @@ module.exports = { return repl.outputStream.write('\n'); }); addMultilineHandler(repl); - if (opts.historyFile) + if (opts.historyFile) { addHistory(repl, opts.historyFile, opts.historyMaxInputSize); + } repl.commands[getCommandId(repl, 'load')].help = 'Load code from a file into this REPL session'; return repl; } diff --git a/lib/reporter.js b/lib/reporter.js new file mode 100644 index 00000000..a573ec60 --- /dev/null +++ b/lib/reporter.js @@ -0,0 +1,86 @@ +// Generated by TypedCoffeeScript 0.8.5 +var pj, render, Reporter, TypeError; +pj = function () { + try { + return require('prettyjson'); + } catch (e$) { + return; + } +}.call(this); +render = function (obj) { + if (null != pj) + return pj.render(obj); +}; +TypeError = require('./type-helpers').TypeError; +Reporter = function () { + function Reporter() { + var instance$; + instance$ = this; + this.add_warning = function (a, b) { + return Reporter.prototype.add_warning.apply(instance$, arguments); + }; + this.clean = function () { + return Reporter.prototype.clean.apply(instance$, arguments); + }; + this.add_error = function (a, b) { + return Reporter.prototype.add_error.apply(instance$, arguments); + }; + this.errors = []; + this.warnings = []; + } + Reporter.prototype.has_errors = function () { + return this.errors.length > 0; + }; + Reporter.prototype.has_warnings = function () { + return this.warnings.length > 0; + }; + Reporter.prototype.report = function () { + var errors; + errors = this.errors.map(function (param$) { + var cache$, node, text; + { + cache$ = param$; + node = cache$[0]; + text = cache$[1]; + } + return '' + text + '\n at | ' + node.raw + ''; + }); + return '[Error]\n' + errors.join('\n') + ''; + }; + Reporter.prototype.add_error = function (node, text) { + return this.errors.push([ + node, + text + ]); + }; + Reporter.prototype.clean = function () { + return this.errors = []; + }; + Reporter.prototype.add_warning = function (node) { + var ws; + ws = arguments.length > 1 ? [].slice.call(arguments, 1) : []; + return this.warnings.push([ + node, + ws.join('') + ]); + }; + Reporter.prototype.dump = function (node, prefix) { + var key, next, val; + if (null == prefix) + prefix = ''; + console.log(prefix + ('[' + node.name + ']')); + for (key in node._vars) { + val = node._vars[key]; + console.log(prefix, ' +', key, '::', JSON.stringify(val)); + } + return function (accum$) { + for (var i$ = 0, length$ = node.nodes.length; i$ < length$; ++i$) { + next = node.nodes[i$]; + accum$.push(this.dump(next, prefix + ' ')); + } + return accum$; + }.call(this, []); + }; + return Reporter; +}(); +module.exports = new Reporter; diff --git a/lib/run.js b/lib/run.js index a567eb11..5f880347 100644 --- a/lib/run.js +++ b/lib/run.js @@ -6,8 +6,9 @@ CoffeeScript = require('./module'); SourceMapConsumer = require('source-map').SourceMapConsumer; patched = false; patchStackTrace = function () { - if (patched) + if (patched) { return; + } patched = true; if (null != Module._sourceMaps) Module._sourceMaps; @@ -30,8 +31,9 @@ patchStackTrace = function () { frames = function (accum$) { for (var i$ = 0, length$ = stack.length; i$ < length$; ++i$) { frame = stack[i$]; - if (frame.getFunction() === exports.runMain) + if (frame.getFunction() === exports.runMain) { break; + } accum$.push(' at ' + formatSourcePosition(frame, getSourceMapping)); } return accum$; @@ -48,8 +50,9 @@ formatSourcePosition = function (frame, getSourceMapping) { } else { if (frame.isEval()) { fileName = frame.getScriptNameOrSourceURL(); - if (!fileName) + if (!fileName) { fileLocation = '' + frame.getEvalOrigin() + ', '; + } } else { fileName = frame.getFileName(); } @@ -67,10 +70,12 @@ formatSourcePosition = function (frame, getSourceMapping) { typeName = frame.getTypeName(); if (functionName) { tp = as = ''; - if (typeName && functionName.indexOf(typeName)) + if (typeName && functionName.indexOf(typeName)) { tp = '' + typeName + '.'; - if (methodName && functionName.indexOf('.' + methodName) !== functionName.length - methodName.length - 1) + } + if (methodName && functionName.indexOf('.' + methodName) !== functionName.length - methodName.length - 1) { as = ' [as ' + methodName + ']'; + } return '' + tp + functionName + as + ' (' + fileLocation + ')'; } else { return '' + typeName + '.' + (methodName || '') + ' (' + fileLocation + ')'; diff --git a/lib/type-helpers.js b/lib/type-helpers.js new file mode 100644 index 00000000..f7570c1b --- /dev/null +++ b/lib/type-helpers.js @@ -0,0 +1,88 @@ +// Generated by TypedCoffeeScript 0.8.5 +var ArrayInterface, clone, NumberInterface, ObjectInterface, rewrite; +this.clone = clone = function (obj) { + var flags, key, newInstance; + if (!(null != obj) || typeof obj !== 'object') + return obj; + if (obj instanceof Date) + return new Date(obj.getTime()); + if (obj instanceof RegExp) { + flags = ''; + if (null != obj.global) + flags += 'g'; + if (null != obj.ignoreCase) + flags += 'i'; + if (null != obj.multiline) + flags += 'm'; + if (null != obj.sticky) + flags += 'y'; + return new RegExp(obj.source, flags); + } + newInstance = new obj.constructor; + for (key in obj) { + newInstance[key] = clone(obj[key]); + } + return newInstance; +}; +this.rewrite = rewrite = function (obj, replacer) { + var key, val; + if (typeof obj === 'string' || typeof obj === 'number') + return; + return function (accum$) { + for (key in obj) { + val = obj[key]; + accum$.push(typeof val === 'string' ? null != replacer[val] ? obj[key] = replacer[val] : void 0 : val instanceof Object ? rewrite(val, replacer) : void 0); + } + return accum$; + }.call(this, []); +}; +this.TypeError = function () { + function TypeError(param$) { + this.message = param$; + } + return TypeError; +}(); +NumberInterface = { + toString: { + name: 'function', + _args_: [], + _return_: 'String' + } +}; +ArrayInterface = { + length: 'Number', + push: { + name: 'function', + _args_: ['T'], + _return_: 'void' + }, + unshift: { + name: 'function', + _args_: ['T'], + _return_: 'void' + }, + shift: { + name: 'function', + _args_: [], + _return_: 'T' + }, + toString: { + name: 'function', + _args_: [], + _return_: 'String' + } +}; +ObjectInterface = function () { + return { + toString: { + name: 'function', + _args_: [], + _return_: 'String' + }, + keys: { + name: 'function', + _args_: ['Any'], + _return_: { array: 'String' } + } + }; +}; diff --git a/lib/type_checker.js b/lib/type_checker.js new file mode 100644 index 00000000..c8de10a8 --- /dev/null +++ b/lib/type_checker.js @@ -0,0 +1,658 @@ +// Generated by CoffeeScript 0.8.5 +var checkNodes, ClassScope, console, CS, FunctionScope, g, initializeGlobalTypes, pj, render, reporter, Scope, walk, walk_arrayInializer, walk_assignOp, walk_binOp, walk_block, walk_bool, walk_class, walk_classProtoAssignOp, walk_conditional, walk_float, walk_for, walk_function, walk_functionApplication, walk_identifier, walk_int, walk_memberAccess, walk_newOp, walk_numbers, walk_objectInitializer, walk_primitives, walk_program, walk_range, walk_return, walk_string, walk_struct, walk_switch, walk_this, walk_vardef; +console = { + log: function () { + } +}; +pj = function () { + try { + return require('prettyjson'); + } catch (e$) { + return; + } +}.call(this); +render = function (obj) { + if (null != pj) + return pj.render(obj); +}; +reporter = require('./reporter'); +CS = require('./nodes'); +cache$ = require('./types'); +initializeGlobalTypes = cache$.initializeGlobalTypes; +Scope = cache$.Scope; +ClassScope = cache$.ClassScope; +FunctionScope = cache$.FunctionScope; +g = 'undefined' !== typeof window && null != window ? window : global; +checkNodes = function (cs_ast) { + var i, root; + if (!(null != (null != cs_ast.body ? cs_ast.body.statements : void 0))) + return; + if (g._root_) { + root = g._root_; + } else { + g._root_ = root = new Scope; + root.name = 'root'; + for (var cache$1 = [ + 'global', + 'exports', + 'module' + ], i$ = 0, length$ = cache$1.length; i$ < length$; ++i$) { + i = cache$1[i$]; + root.addVar(i, 'Any', true); + } + initializeGlobalTypes(root); + } + walk(cs_ast, root); + return root; +}; +walk_struct = function (node, scope) { + if (node.name instanceof Object) { + return scope.addType(node.name._base_, node.expr, node.name._templates_); + } else { + return scope.addType(node.name, node.expr); + } +}; +walk_vardef = function (node, scope) { + var symbol; + symbol = node.name === 'constructor' ? '_constructor_' : node.name; + if (scope instanceof ClassScope) { + return scope.addThis(symbol, node.expr); + } else { + return scope.addVar(symbol, node.expr); + } +}; +walk_program = function (node, scope) { + walk(node.body.statements, scope); + return node.annotation = { dataType: 'Program' }; +}; +walk_block = function (node, scope) { + var last_annotation; + walk(node.statements, scope); + last_annotation = null != node.statements[node.statements.length - 1] ? node.statements[node.statements.length - 1].annotation : void 0; + return node.annotation = last_annotation; +}; +walk_return = function (node, scope) { + walk(node.expression, scope); + if (null != (null != node.expression && null != node.expression.annotation ? node.expression.annotation.dataType : void 0)) { + scope.addReturnable(node.expression.annotation.dataType); + return node.annotation = node.expression.annotation; + } +}; +walk_binOp = function (node, scope) { + var left_type, right_type; + walk(node.left, scope); + walk(node.right, scope); + left_type = null != node.left && null != node.left.annotation ? node.left.annotation.dataType : void 0; + right_type = null != node.right && null != node.right.annotation ? node.right.annotation.dataType : void 0; + if (left_type && right_type) { + if (left_type === 'String' || right_type === 'String') { + return node.annotation = { dataType: 'String' }; + } else if (left_type === 'Int' && right_type === 'Int') { + return node.annotation = { dataType: 'Int' }; + } else if ((left_type === 'Int' || left_type === 'Float') && (right_type === 'Int' || right_type === 'Float')) { + return node.annotation = { dataType: 'Float' }; + } else if ((left_type === 'Int' || left_type === 'Float' || left_type === 'Number') && (right_type === 'Int' || right_type === 'Float' || right_type === 'Number')) { + return node.annotation = { dataType: 'Number' }; + } else if (left_type === right_type) { + return node.annotation = { dataType: left_type }; + } + } else { + return node.annotation = { dataType: 'Any' }; + } +}; +walk_conditional = function (node, scope) { + var alternate_annotation, annotation, dataType, possibilities; + walk(node.condition, scope); + walk(node.consequent, scope); + if (null != node.alternate) + walk(node.alternate, scope); + alternate_annotation = null != (null != node.alternate ? node.alternate.annotation : void 0) ? null != node.alternate ? node.alternate.annotation : void 0 : { dataType: 'Undefined' }; + possibilities = []; + for (var cache$1 = [ + null != node.consequent ? node.consequent.annotation : void 0, + alternate_annotation + ], i$ = 0, length$ = cache$1.length; i$ < length$; ++i$) { + annotation = cache$1[i$]; + if (!('undefined' !== typeof annotation && null != annotation)) + continue; + if (null != (null != annotation.dataType ? annotation.dataType.possibilities : void 0)) { + for (var i$1 = 0, length$1 = annotation.dataType.possibilities.length; i$1 < length$1; ++i$1) { + dataType = annotation.dataType.possibilities[i$1]; + possibilities.push(dataType); + } + } else if (null != annotation.dataType) { + possibilities.push(annotation.dataType); + } + } + return node.annotation = { dataType: { possibilities: possibilities } }; +}; +walk_switch = function (node, scope) { + var alternate_annotation, c, cond, possibilities; + walk(node.expression, scope); + for (var i$ = 0, length$ = node.cases.length; i$ < length$; ++i$) { + c = node.cases[i$]; + for (var i$1 = 0, length$1 = c.conditions.length; i$1 < length$1; ++i$1) { + cond = c.conditions[i$1]; + walk(c, scope); + } + walk(c.consequent, scope); + } + walk(node.consequent, scope); + if (null != node.alternate) + walk(node.alternate, scope); + alternate_annotation = null != (null != node.alternate ? node.alternate.annotation : void 0) ? null != node.alternate ? node.alternate.annotation : void 0 : { dataType: 'Undefined' }; + possibilities = []; + for (var i$2 = 0, length$2 = node.cases.length; i$2 < length$2; ++i$2) { + c = node.cases[i$2]; + if (!(null != c.annotation)) + continue; + possibilities.push(c.consequent.annotation); + } + possibilities.push(alternate_annotation.dataType); + return node.annotation = { dataType: { possibilities: possibilities } }; +}; +walk_newOp = function (node, scope) { + var _args_, arg, err, Type; + for (var i$ = 0, length$ = node['arguments'].length; i$ < length$; ++i$) { + arg = node['arguments'][i$]; + walk(arg, scope); + } + Type = scope.getTypeInScope(node.ctor.data); + if (Type) { + _args_ = null != node['arguments'] ? node['arguments'].map(function (arg) { + return null != arg.annotation ? arg.annotation.dataType : void 0; + }) : void 0; + if (err = scope.checkAcceptableObject(Type.dataType._constructor_, { + _args_: null != _args_ ? _args_ : [], + _return_: 'Any' + })) + return reporter.add_error(node, err); + } + return node.annotation = { dataType: null != Type ? Type.dataType : void 0 }; +}; +walk_for = function (node, scope) { + var dataType, err, nop; + walk(node.target, scope); + if (null != node.valAssignee) + scope.addVar(node.valAssignee.data, null != (null != node.valAssignee && null != node.valAssignee.annotation ? node.valAssignee.annotation.dataType : void 0) ? null != node.valAssignee && null != node.valAssignee.annotation ? node.valAssignee.annotation.dataType : void 0 : 'Any'); + if (null != node.keyAssignee) + scope.addVar(node.keyAssignee.data, null != (null != node.keyAssignee && null != node.keyAssignee.annotation ? node.keyAssignee.annotation.dataType : void 0) ? null != node.keyAssignee && null != node.keyAssignee.annotation ? node.keyAssignee.annotation.dataType : void 0 : 'Any'); + if (null != node.valAssignee) + if (null != (null != node.target.annotation && null != node.target.annotation.dataType ? node.target.annotation.dataType.array : void 0)) { + if (err = scope.checkAcceptableObject(node.valAssignee.annotation.dataType, node.target.annotation.dataType.array)) { + return reporter.add_error(node, err); + } + } else if ((null != node.target && null != node.target.annotation ? node.target.annotation.dataType : void 0) instanceof Object) { + if (node.target.annotation.dataType instanceof Object) { + for (nop in node.target.annotation.dataType) { + dataType = node.target.annotation.dataType[nop]; + if (err = scope.checkAcceptableObject(node.valAssignee.annotation.dataType, dataType)) + return reporter.add_error(node, err); + } + } + } + walk(node.body, scope); + node.annotation = null != node.target ? node.target.annotation : void 0; + delete scope._vars[null != node.valAssignee ? node.valAssignee.data : void 0]; + return delete scope._vars[null != node.keyAssignee ? node.keyAssignee.data : void 0]; +}; +walk_classProtoAssignOp = function (node, scope) { + var left, right, symbol; + left = node.assignee; + right = node.expression; + symbol = left.data; + walk(left, scope); + if (right['instanceof'](CS.Function) && scope.getThis(symbol)) { + walk_function(right, scope, scope.getThis(symbol).dataType); + } else { + walk(right, scope); + } + symbol = left.data; + if (null != right.annotation) + return scope.addThis(symbol, right.annotation.dataType); +}; +walk_assignOp = function (node, scope) { + var err, index, l, l_type, left, member, pre_registered_annotation, r, right, symbol, T; + pre_registered_annotation = node.assignee.annotation; + left = node.assignee; + right = node.expression; + symbol = left.data; + walk(left, scope); + if (('function' === typeof right['instanceof'] ? right['instanceof'](CS.Function) : void 0) && scope.getVarInScope(symbol)) { + walk_function(right, scope, scope.getVarInScope(symbol).dataType); + } else if (('function' === typeof right['instanceof'] ? right['instanceof'](CS.Function) : void 0) && pre_registered_annotation) { + walk_function(right, scope, left.annotation.dataType); + } else { + walk(right, scope); + } + if (left['instanceof'](CS.ArrayInitialiser)) { + for (var i$ = 0, length$ = left.members.length; i$ < length$; ++i$) { + member = left.members[i$]; + index = i$; + if (!(null != member.data)) + continue; + l = null != left.annotation && null != left.annotation.dataType && null != left.annotation.dataType.array ? left.annotation.dataType.array[index] : void 0; + r = null != right.annotation && null != right.annotation.dataType && null != right.annotation.dataType.array ? right.annotation.dataType.array[index] : void 0; + if (err = scope.checkAcceptableObject(l, r)) + reporter.add_error(node, err); + if (l) { + scope.addVar(member.data, l, true); + } else { + scope.addVar(member.data, 'Any', false); + } + } + } else if (null != (null != left ? left.members : void 0)) { + for (var i$1 = 0, length$1 = left.members.length; i$1 < length$1; ++i$1) { + member = left.members[i$1]; + if (!(null != (null != member.key ? member.key.data : void 0))) + continue; + if (scope.getVarInScope(member.key.data)) { + l_type = scope.getVarInScope(member.key.data).dataType; + if (err = scope.checkAcceptableObject(l_type, null != right.annotation && null != right.annotation.dataType ? right.annotation.dataType[member.key.data] : void 0)) + reporter.add_error(node, err); + } else { + scope.addVar(member.key.data, 'Any', false); + } + } + } else if (left['instanceof'](CS.MemberAccessOp)) { + if (left.expression['instanceof'](CS.This)) { + T = scope.getThis(left.memberName); + if (null != T) + left.annotation = T; + if (null != T) + if (err = scope.checkAcceptableObject(left.annotation.dataType, right.annotation.dataType)) { + reporter.add_error(node, err); + } + } else if (null != (null != left.annotation ? left.annotation.dataType : void 0) && null != (null != right.annotation ? right.annotation.dataType : void 0)) { + if (left.annotation.dataType !== 'Any') { + if (err = scope.checkAcceptableObject(left.annotation.dataType, right.annotation.dataType)) { + return reporter.add_error(node, err); + } + } + } + } else if (left['instanceof'](CS.Identifier)) { + if (scope.getVarInScope(symbol) && pre_registered_annotation) + return reporter.add_error(node, 'double bind: ' + symbol); + if (null != left.annotation.dataType && null != right.annotation) + if (err = scope.checkAcceptableObject(left.annotation.dataType, right.annotation.dataType)) { + return reporter.add_error(node, err); + } + if (!pre_registered_annotation && (null != right.annotation ? right.annotation.explicit : void 0)) { + scope.addVar(symbol, right.annotation.dataType, true); + } else { + scope.addVar(symbol, left.annotation.dataType, true); + } + } else { + scope.addVar(symbol, 'Any', false); + } + console.log('left'); + console.log(render(left)); + console.log('right'); + return console.log(render(right)); +}; +walk_primitives = function (node, scope) { + switch (false) { + case !node['instanceof'](CS.String): + return walk_string(node, scope); + case !node['instanceof'](CS.Bool): + return walk_bool(node, scope); + case !node['instanceof'](CS.Int): + return walk_int(node, scope); + case !node['instanceof'](CS.Float): + return walk_float(node, scope); + case !node['instanceof'](CS.Numbers): + return walk_numbers(node, scope); + } +}; +walk_string = function (node, scope) { + return null != node.annotation ? node.annotation : node.annotation = { + dataType: 'String', + primitive: true + }; +}; +walk_int = function (node, scope) { + return null != node.annotation ? node.annotation : node.annotation = { + dataType: 'Int', + primitive: true + }; +}; +walk_float = function (node, scope) { + return null != node.annotation ? node.annotation : node.annotation = { + dataType: 'Float', + primitive: true + }; +}; +walk_numbers = function (node, scope) { + return null != node.annotation ? node.annotation : node.annotation = { + dataType: 'Number', + primitive: true + }; +}; +walk_bool = function (node, scope) { + return null != node.annotation ? node.annotation : node.annotation = { + dataType: 'Boolean', + primitive: true + }; +}; +walk_identifier = function (node, scope) { + var Var; + if (scope.getVarInScope(node.data)) { + Var = scope.getVarInScope(node.data); + return node.annotation = { + dataType: null != Var ? Var.dataType : void 0, + explicit: null != Var ? Var.explicit : void 0 + }; + } else { + if (null != node.annotation) + return node.annotation; + else + return node.annotation = { dataType: 'Any' }; + } +}; +walk_this = function (node, scope) { + var dataType, key, val; + dataType = {}; + for (key in scope._this) { + val = scope._this[key]; + dataType[key] = val.dataType; + } + return null != node.annotation ? node.annotation : node.annotation = { dataType: dataType }; +}; +walk_memberAccess = function (node, scope) { + var dataType; + if (node['instanceof'](CS.SoakedMemberAccessOp)) { + walk(node.expression, scope); + dataType = scope.extendTypeLiteral(null != node.expression.annotation ? node.expression.annotation.dataType : void 0); + if (null != dataType) { + return node.annotation = { + dataType: { + possibilities: [ + 'Undefined', + dataType[node.memberName] + ] + } + }; + } else { + return node.annotation = { + dataType: 'Any', + explicit: false + }; + } + } else if (node['instanceof'](CS.MemberAccessOp)) { + walk(node.expression, scope); + dataType = scope.extendTypeLiteral(null != node.expression.annotation ? node.expression.annotation.dataType : void 0); + if (null != dataType) { + return node.annotation = { + dataType: dataType[node.memberName], + explicit: true + }; + } else { + return node.annotation = { + dataType: 'Any', + explicit: false + }; + } + } +}; +walk_arrayInializer = function (node, scope) { + walk(node.members, scope); + return null != node.annotation ? node.annotation : node.annotation = { + dataType: { + array: null != node.members ? node.members.map(function (m) { + return null != m.annotation ? m.annotation.dataType : void 0; + }) : void 0 + } + }; +}; +walk_range = function (node, scope) { + return node.annotation = { dataType: { array: 'Number' } }; +}; +walk_objectInitializer = function (node, scope) { + var cache$1, expression, key, nextScope, obj; + obj = {}; + nextScope = new Scope(scope); + nextScope.name = 'object'; + for (var i$ = 0, length$ = node.members.length; i$ < length$; ++i$) { + { + cache$1 = node.members[i$]; + expression = cache$1.expression; + key = cache$1.key; + } + if (!('undefined' !== typeof key && null != key)) + continue; + walk(expression, nextScope); + obj[key.data] = null != expression.annotation ? expression.annotation.dataType : void 0; + } + return null != node.annotation ? node.annotation : node.annotation = { dataType: obj }; +}; +walk_class = function (node, scope) { + var classScope, cls, constructorScope, fname, index, key, name, param, parent, predef, statement, this_scope, val; + classScope = new ClassScope(scope); + this_scope = {}; + if (null != node.nameAssignee ? node.nameAssignee.data : void 0) { + if (null != node.parent ? node.parent.data : void 0) { + parent = scope.getTypeInScope(node.parent.data); + if (parent) + for (key in parent.dataType) { + val = parent.dataType[key]; + this_scope[key] = val; + } + } + if (null != (null != node.impl ? node.impl.length : void 0)) + for (var i$ = 0, length$ = node.impl.length; i$ < length$; ++i$) { + name = node.impl[i$]; + cls = scope.getTypeInScope(name); + if (cls) + for (key in cls.dataType) { + val = cls.dataType[key]; + this_scope[key] = val; + } + } + } + if (null != (null != node.body ? node.body.statements : void 0)) + for (var i$1 = 0, length$1 = node.body.statements.length; i$1 < length$1; ++i$1) { + statement = node.body.statements[i$1]; + if (!(statement.dataType === 'vardef')) + continue; + walk_vardef(statement, classScope); + } + if (null != node.ctor) { + constructorScope = new FunctionScope(classScope); + constructorScope._this = classScope._this; + if (null != node.ctor.expression.parameters) + if (constructorScope.getThis('_constructor_')) { + predef = constructorScope.getThis('_constructor_').dataType; + for (var i$2 = 0, length$2 = node.ctor.expression.parameters.length; i$2 < length$2; ++i$2) { + param = node.ctor.expression.parameters[i$2]; + index = i$2; + if (!('undefined' !== typeof param && null != param)) + continue; + walk(param, constructorScope); + constructorScope.addVar(param.data, null != (null != predef._args_ ? predef._args_[index] : void 0) ? null != predef._args_ ? predef._args_[index] : void 0 : 'Any'); + } + } else { + for (var i$3 = 0, length$3 = node.ctor.expression.parameters.length; i$3 < length$3; ++i$3) { + param = node.ctor.expression.parameters[i$3]; + index = i$3; + if (!(null != param)) + continue; + walk(param, constructorScope); + constructorScope.addVar(param.data, null != (null != param && null != param.annotation ? param.annotation.dataType : void 0) ? null != param && null != param.annotation ? param.annotation.dataType : void 0 : 'Any'); + } + } + if (null != (null != node.ctor.expression.body ? node.ctor.expression.body.statements : void 0)) + for (var i$4 = 0, length$4 = node.ctor.expression.body.statements.length; i$4 < length$4; ++i$4) { + statement = node.ctor.expression.body.statements[i$4]; + walk(statement, constructorScope); + } + } + if (null != (null != node.body ? node.body.statements : void 0)) + for (var i$5 = 0, length$5 = node.body.statements.length; i$5 < length$5; ++i$5) { + statement = node.body.statements[i$5]; + if (!(statement.dataType !== 'vardef')) + continue; + walk(statement, classScope); + } + if (null != node.nameAssignee ? node.nameAssignee.data : void 0) { + for (fname in classScope._this) { + val = classScope._this[fname]; + this_scope[fname] = val.dataType; + } + return scope.addType(node.nameAssignee.data, this_scope); + } +}; +walk_function = function (node, scope, predef) { + var _args_, err, functionScope, index, last_expr, member, param, t; + if (null == predef) + predef = null; + _args_ = null != node.parameters ? node.parameters.map(function (param) { + return null != (null != param.annotation ? param.annotation.dataType : void 0) ? null != param.annotation ? param.annotation.dataType : void 0 : 'Any'; + }) : void 0; + node.annotation.dataType._args_ = _args_; + functionScope = new Scope(scope); + functionScope._name_ = 'function'; + if (scope instanceof ClassScope) + functionScope._this = scope._this; + if (null != node.parameters) + if (predef) { + node.annotation.dataType = predef; + for (var i$ = 0, length$ = node.parameters.length; i$ < length$; ++i$) { + param = node.parameters[i$]; + index = i$; + if (param.members) { + for (var i$1 = 0, length$1 = param.members.length; i$1 < length$1; ++i$1) { + member = param.members[i$1]; + if ((null != member.expression && null != member.expression.expression ? member.expression.expression.raw : void 0) === '@' || (null != member.expression && null != member.expression.expression ? member.expression.expression.raw : void 0) === 'this') { + t = functionScope.getThis(member.key.data); + if (!(null != (null != t ? t.dataType : void 0))) + functionScope.addThis(member.key.data, 'Any'); + } else if (null != member.key ? member.key.data : void 0) { + functionScope.addVar(member.key.data, 'Any'); + } + } + } else if ((null != param.expression ? param.expression.raw : void 0) === '@' || (null != param.expression ? param.expression.raw : void 0) === 'this') { + t = functionScope.getThis(param.memberName); + if (err = scope.checkAcceptableObject(null != predef._args_ ? predef._args_[index] : void 0, null != t ? t.dataType : void 0)) + reporter.add_error(node, err); + if (!(null != (null != t ? t.dataType : void 0))) + functionScope.addThis(param.memberName, 'Any'); + } else { + functionScope.addVar(param.data, null != (null != predef._args_ ? predef._args_[index] : void 0) ? null != predef._args_ ? predef._args_[index] : void 0 : 'Any'); + } + } + } else { + for (var i$2 = 0, length$2 = node.parameters.length; i$2 < length$2; ++i$2) { + param = node.parameters[i$2]; + index = i$2; + if (param.members) { + for (var i$3 = 0, length$3 = param.members.length; i$3 < length$3; ++i$3) { + member = param.members[i$3]; + if ((null != member.expression && null != member.expression.expression ? member.expression.expression.raw : void 0) === '@' || (null != member.expression && null != member.expression.expression ? member.expression.expression.raw : void 0) === 'this') { + t = functionScope.getThis(member.key.data); + if (!(null != (null != t ? t.dataType : void 0))) + functionScope.addThis(member.key.data, 'Any'); + } else if (null != member.key ? member.key.data : void 0) { + functionScope.addVar(member.key.data, 'Any'); + } + } + } else if ((null != param.expression ? param.expression.raw : void 0) === '@' || (null != param.expression ? param.expression.raw : void 0) === 'this') { + t = functionScope.getThis(param.memberName); + if (!(null != (null != t ? t.dataType : void 0))) + functionScope.addThis(param.memberName, 'Any'); + } else { + functionScope.addVar(param.data, null != (null != param && null != param.annotation ? param.annotation.dataType : void 0) ? null != param && null != param.annotation ? param.annotation.dataType : void 0 : 'Any'); + } + } + } + walk(node.body, functionScope); + if ((null != node.annotation && null != node.annotation.dataType ? node.annotation.dataType._return_ : void 0) !== 'Any') { + last_expr = (null != node.body && null != node.body.statements ? node.body.statements.length : void 0) ? null != node.body.statements ? node.body.statements[(null != node.body && null != node.body.statements ? node.body.statements.length : void 0) - 1] : void 0 : node.body; + if (err = scope.checkAcceptableObject(null != node.annotation ? node.annotation.dataType._return_ : void 0, null != last_expr && null != last_expr.annotation ? last_expr.annotation.dataType : void 0)) + return reporter.add_error(node, err); + } else { + last_expr = (null != node.body && null != node.body.statements ? node.body.statements.length : void 0) ? null != node.body.statements ? node.body.statements[(null != node.body && null != node.body.statements ? node.body.statements.length : void 0) - 1] : void 0 : node.body; + if (null != node.annotation) + return node.annotation.dataType._return_ = null != last_expr && null != last_expr.annotation ? last_expr.annotation.dataType : void 0; + } +}; +walk_functionApplication = function (node, scope) { + var _args_, arg, err; + for (var i$ = 0, length$ = node['arguments'].length; i$ < length$; ++i$) { + arg = node['arguments'][i$]; + walk(arg, scope); + } + walk(node['function'], scope); + node.annotation = { dataType: null != node['function'].annotation && null != node['function'].annotation.dataType ? node['function'].annotation.dataType._return_ : void 0 }; + if (node['function'].annotation) { + _args_ = null != node['arguments'] ? node['arguments'].map(function (arg) { + return null != arg.annotation ? arg.annotation.dataType : void 0; + }) : void 0; + if (err = scope.checkAcceptableObject(node['function'].annotation.dataType, { + _args_: null != _args_ ? _args_ : [], + _return_: 'Any' + })) + return reporter.add_error(node, err); + } +}; +walk = function (node, scope) { + var s; + console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); + console.log('---', null != node ? node.className : void 0, '---', null != node ? node.raw : void 0); + switch (false) { + case !!(null != node): + return; + case !(null != node.length): + return function (accum$) { + for (var i$ = 0, length$ = node.length; i$ < length$; ++i$) { + s = node[i$]; + accum$.push(walk(s, scope)); + } + return accum$; + }.call(this, []); + case !(node.dataType === 'struct'): + return walk_struct(node, scope); + case !(node.dataType === 'vardef'): + return walk_vardef(node, scope); + case !node['instanceof'](CS.Program): + return walk_program(node, scope); + case !node['instanceof'](CS.Block): + return walk_block(node, scope); + case !node['instanceof'](CS.Return): + return walk_return(node, scope); + case !node['instanceof'](CS.NewOp): + return walk_newOp(node, scope); + case !(node['instanceof'](CS.PlusOp) || node['instanceof'](CS.MultiplyOp) || node['instanceof'](CS.DivideOp) || node['instanceof'](CS.SubtractOp)): + return walk_binOp(node, scope); + case !node['instanceof'](CS.Switch): + return walk_switch(node, scope); + case !node['instanceof'](CS.Conditional): + return walk_conditional(node, scope); + case !(node['instanceof'](CS.ForIn) || node['instanceof'](CS.ForOf)): + return walk_for(node, scope); + case !node['instanceof'](CS.Primitives): + return walk_primitives(node, scope); + case !node['instanceof'](CS.This): + return walk_this(node, scope); + case !node['instanceof'](CS.Identifier): + return walk_identifier(node, scope); + case !node['instanceof'](CS.ClassProtoAssignOp): + return walk_classProtoAssignOp(node, scope); + case !node['instanceof'](CS.MemberAccessOps): + return walk_memberAccess(node, scope); + case !node['instanceof'](CS.ArrayInitialiser): + return walk_arrayInializer(node, scope); + case !node['instanceof'](CS.Range): + return walk_range(node, scope); + case !node['instanceof'](CS.ObjectInitialiser): + return walk_objectInitializer(node, scope); + case !node['instanceof'](CS.Class): + return walk_class(node, scope); + case !node['instanceof'](CS.Function): + return walk_function(node, scope); + case !node['instanceof'](CS.FunctionApplication): + return walk_functionApplication(node, scope); + case !node['instanceof'](CS.AssignOp): + return walk_assignOp(node, scope); + } +}; +module.exports = { checkNodes: checkNodes }; diff --git a/lib/types.js b/lib/types.js new file mode 100644 index 00000000..4f9c60de --- /dev/null +++ b/lib/types.js @@ -0,0 +1,390 @@ +// Generated by CoffeeScript 0.8.5 +var ArrayType, checkAcceptableObject, ClassScope, clone, console, FunctionScope, initializeGlobalTypes, ObjectType, pj, Possibilites, render, reporter, rewrite, Scope, Type, TypeSymbol, VarSymbol; +console = { + log: function () { + } +}; +pj = function () { + try { + return require('prettyjson'); + } catch (e$) { + return; + } +}.call(this); +render = function (obj) { + if (null != pj) + return pj.render(obj); +}; +cache$ = require('./type-helpers'); +clone = cache$.clone; +rewrite = cache$.rewrite; +reporter = require('./reporter'); +Type = function () { + function Type() { + } + return Type; +}(); +ObjectType = function (super$) { + extends$(ObjectType, super$); + function ObjectType(param$) { + this.dataType = param$; + } + return ObjectType; +}(Type); +ArrayType = function (super$1) { + extends$(ArrayType, super$1); + function ArrayType(dataType) { + this.array = dataType; + } + return ArrayType; +}(Type); +Possibilites = function (super$2) { + extends$(Possibilites, super$2); + function Possibilites(arr) { + var i; + if (null == arr) + arr = []; + for (var i$ = 0, length$ = arr.length; i$ < length$; ++i$) { + i = arr[i$]; + this.push(i); + } + } + return Possibilites; +}(Array); +checkAcceptableObject = function (this$) { + return function (left, right, scope) { + var cur, extended_list, i, key, l_arg, lval, r, results; + if (null != (null != left ? left._base_ : void 0) && null != left._templates_) + left = left._base_; + console.log('checkAcceptableObject /', left, right); + if (null != (null != right ? right.possibilities : void 0)) { + results = function (accum$) { + for (var i$ = 0, length$ = right.possibilities.length; i$ < length$; ++i$) { + r = right.possibilities[i$]; + accum$.push(checkAcceptableObject(left, r, scope)); + } + return accum$; + }.call(this$, []); + return results.every(function (i) { + return !i; + }) ? false : results.filter(function (i) { + return i; + }).join('\n'); + } + if (left === 'Any') + return false; + if (null != left ? left._args_ : void 0) { + if (left === void 0 || left === 'Any') + return; + if (null != left._args_) + left._args_; + else + left._args_ = []; + results = function (accum$1) { + for (var i$1 = 0, length$1 = left._args_.length; i$1 < length$1; ++i$1) { + l_arg = left._args_[i$1]; + i = i$1; + accum$1.push(checkAcceptableObject(l_arg, right._args_[i], scope)); + } + return accum$1; + }.call(this$, []); + return results.every(function (i) { + return !i; + }) ? false : results.filter(function (i) { + return i; + }).join('\n'); + if (right._return_ !== 'Any') + return checkAcceptableObject(left._return_, right._return_, scope); + return false; + } + if (null != (null != left ? left.array : void 0)) { + if (right.array instanceof Array) { + results = function (accum$2) { + for (var i$2 = 0, length$2 = right.array.length; i$2 < length$2; ++i$2) { + r = right.array[i$2]; + accum$2.push(checkAcceptableObject(left.array, r, scope)); + } + return accum$2; + }.call(this$, []); + return results.every(function (i) { + return !i; + }) ? false : results.filter(function (i) { + return i; + }).join('\n'); + } else { + return checkAcceptableObject(left.array, right.array, scope); + } + } else if (null != (null != right ? right.array : void 0)) { + if (left === 'Array' || left === 'Any' || left === void 0) { + return false; + } else { + return 'object deep equal mismatch ' + JSON.stringify(left) + ', ' + JSON.stringify(right); + } + } else if (typeof left === 'string' && typeof right === 'string') { + cur = scope.getTypeInScope(left); + extended_list = [left]; + while (cur._extends_) { + extended_list.push(cur._extends_); + cur = scope.getTypeInScope(cur._extends_); + } + if (left === 'Any' || right === 'Any' || in$(right, extended_list)) { + return false; + } else { + return 'object deep equal mismatch ' + JSON.stringify(left) + ', ' + JSON.stringify(right); + } + } else if (typeof left === 'object' && typeof right === 'object') { + results = function (accum$3) { + for (key in left) { + lval = left[key]; + accum$3.push(right[key] === void 0 && ('undefined' !== typeof lval && null != lval) && !(key === '_return_' || key === 'type' || key === 'possibilities') ? "'" + key + "' is not defined on right" : checkAcceptableObject(lval, right[key], scope)); + } + return accum$3; + }.call(this$, []); + return results.every(function (i) { + return !i; + }) ? false : results.filter(function (i) { + return i; + }).join('\n'); + } else if (left === void 0 || right === void 0) { + return false; + } else { + return 'object deep equal mismatch ' + JSON.stringify(left) + ', ' + JSON.stringify(right); + } + }; +}(this); +initializeGlobalTypes = function (node) { + node.addTypeObject('String', new TypeSymbol({ dataType: 'String' })); + node.addTypeObject('Number', new TypeSymbol({ + dataType: 'Number', + _extends_: 'Float' + })); + node.addTypeObject('Int', new TypeSymbol({ dataType: 'Int' })); + node.addTypeObject('Float', new TypeSymbol({ + dataType: 'Float', + _extends_: 'Int' + })); + node.addTypeObject('Boolean', new TypeSymbol({ dataType: 'Boolean' })); + node.addTypeObject('Object', new TypeSymbol({ dataType: 'Object' })); + node.addTypeObject('Array', new TypeSymbol({ dataType: 'Array' })); + node.addTypeObject('Undefined', new TypeSymbol({ dataType: 'Undefined' })); + return node.addTypeObject('Any', new TypeSymbol({ dataType: 'Any' })); +}; +VarSymbol = function () { + function VarSymbol(param$) { + var cache$1; + { + cache$1 = param$; + this.dataType = cache$1.dataType; + this.explicit = cache$1.explicit; + } + if (null != this.explicit) + this.explicit; + else + this.explicit = false; + } + return VarSymbol; +}(); +TypeSymbol = function () { + function TypeSymbol(param$) { + var cache$1; + { + cache$1 = param$; + this.dataType = cache$1.dataType; + this['instanceof'] = cache$1['instanceof']; + this._templates_ = cache$1._templates_; + this._extends_ = cache$1._extends_; + } + } + return TypeSymbol; +}(); +Scope = function () { + function Scope(param$) { + var instance$; + instance$ = this; + this.extendTypeLiteral = function (a) { + return Scope.prototype.extendTypeLiteral.apply(instance$, arguments); + }; + if (null == param$) + param$ = null; + this.parent = param$; + if (null != this.parent) + this.parent.nodes.push(this); + this.name = ''; + this.nodes = []; + this._vars = {}; + this._types = {}; + this._this = {}; + this._returnables = []; + } + Scope.prototype.addReturnable = function (symbol, dataType) { + return this._returnables.push(dataType); + }; + Scope.prototype.getReturnables = function () { + return this._returnables; + }; + Scope.prototype.addType = function (symbol, dataType, _templates_) { + return this._types[symbol] = new TypeSymbol({ + dataType: dataType, + _templates_: _templates_ + }); + }; + Scope.prototype.addTypeObject = function (symbol, type_object) { + return this._types[symbol] = type_object; + }; + Scope.prototype.getType = function (symbol) { + return this._types[symbol]; + }; + Scope.prototype.getTypeInScope = function (symbol) { + return this.getType(symbol) || (null != this.parent ? this.parent.getTypeInScope(symbol) : void 0) || void 0; + }; + Scope.prototype.addThis = function (symbol, dataType) { + var n, obj, replacer, rewrite_to, T, t; + if (null != (null != dataType ? dataType._base_ : void 0)) { + T = this.getType(dataType._base_); + if (!T) + return; + obj = clone(T.dataType); + if (T._templates_) { + rewrite_to = dataType._templates_; + replacer = {}; + for (var i$ = 0, length$ = T._templates_.length; i$ < length$; ++i$) { + t = T._templates_[i$]; + n = i$; + replacer[t] = rewrite_to[n]; + } + rewrite(obj, replacer); + } + return this._this[symbol] = new VarSymbol({ dataType: obj }); + } else { + return this._this[symbol] = new VarSymbol({ dataType: dataType }); + } + }; + Scope.prototype.getThis = function (symbol) { + return this._this[symbol]; + }; + Scope.prototype.addVar = function (symbol, dataType, explicit) { + var n, obj, replacer, rewrite_to, T, t; + if (null != (null != dataType ? dataType._base_ : void 0)) { + T = this.getType(dataType._base_); + if (!T) + return; + obj = clone(T.dataType); + if (T._templates_) { + rewrite_to = dataType._templates_; + replacer = {}; + for (var i$ = 0, length$ = T._templates_.length; i$ < length$; ++i$) { + t = T._templates_[i$]; + n = i$; + replacer[t] = rewrite_to[n]; + } + rewrite(obj, replacer); + } + return this._vars[symbol] = new VarSymbol({ + dataType: obj, + explicit: explicit + }); + } else { + return this._vars[symbol] = new VarSymbol({ + dataType: dataType, + explicit: explicit + }); + } + }; + Scope.prototype.getVar = function (symbol) { + return this._vars[symbol]; + }; + Scope.prototype.getVarInScope = function (symbol) { + return this.getVar(symbol) || (null != this.parent ? this.parent.getVarInScope(symbol) : void 0) || void 0; + }; + Scope.prototype.isImplicitVarInScope = function (symbol) { + return this.isImplicitVar(symbol) || (null != this.parent ? this.parent.isImplicitVarInScope(symbol) : void 0) || void 0; + }; + Scope.prototype.extendTypeLiteral = function (node) { + var dataType, i, key, ret, val; + switch (typeof node) { + case 'object': + if (node instanceof Array) { + return function (accum$) { + for (var i$ = 0, length$ = node.length; i$ < length$; ++i$) { + i = node[i$]; + accum$.push(this.extendTypeLiteral(i)); + } + return accum$; + }.call(this, []); + } else { + ret = {}; + for (key in node) { + val = node[key]; + ret[key] = this.extendTypeLiteral(val); + } + return ret; + } + case 'string': + Type = this.getTypeInScope(node); + dataType = null != Type ? Type.dataType : void 0; + switch (typeof dataType) { + case 'object': + return this.extendTypeLiteral(dataType); + case 'string': + return dataType; + } + } + }; + Scope.prototype.checkAcceptableObject = function (left, right) { + var l, r; + l = this.extendTypeLiteral(left); + r = this.extendTypeLiteral(right); + return checkAcceptableObject(l, r, this); + }; + return Scope; +}(); +ClassScope = function (super$3) { + extends$(ClassScope, super$3); + function ClassScope() { + super$3.apply(this, arguments); + } + void 0; + return ClassScope; +}(Scope); +FunctionScope = function (super$4) { + extends$(FunctionScope, super$4); + function FunctionScope() { + super$4.apply(this, arguments); + } + void 0; + return FunctionScope; +}(Scope); +module.exports = { + checkAcceptableObject: checkAcceptableObject, + initializeGlobalTypes: initializeGlobalTypes, + VarSymbol: VarSymbol, + TypeSymbol: TypeSymbol, + Scope: Scope, + ClassScope: ClassScope, + FunctionScope: FunctionScope, + ArrayType: ArrayType, + ObjectType: ObjectType, + Type: Type, + Possibilites: Possibilites +}; +function isOwn$(o, p) { + return {}.hasOwnProperty.call(o, p); +} +function extends$(child, parent) { + for (var key in parent) + if (isOwn$(parent, key)) + child[key] = parent[key]; + function ctor() { + this.constructor = child; + } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; +} +function in$(member, list) { + for (var i = 0, length = list.length; i < length; ++i) + if (i in list && list[i] === member) + return true; + return false; +} diff --git a/package.json b/package.json index f17556ad..d3c43627 100644 --- a/package.json +++ b/package.json @@ -33,12 +33,13 @@ }, "dependencies": { "StringScanner": "~0.0.3", + "debug": "^2.2.0", "nopt": "~2.1.2" }, "optionalDependencies": { + "escodegen": "git://github.com/estools/escodegen#2e90c2b95274aae27910c28e086676b104b7ded4", "esmangle": "~1.0.0", "source-map": "0.1.x", - "escodegen": "~1.2.0", "cscodegen": "git+https://github.com/michaelficarra/cscodegen.git#73fd7202ac086c26f18c9d56f025b18b3c6f5383" }, "engines": { diff --git a/src/cli.coffee b/src/cli.coffee index a5c63a4e..0529cefc 100644 --- a/src/cli.coffee +++ b/src/cli.coffee @@ -33,7 +33,7 @@ optAliases = v: '--version' w: '--watch' -option 'parse', 'compile', 'optimise', 'debug', 'literate', 'raw', 'version', 'help' +option 'parse', 'compile', 'optimise', 'debug', 'literate', 'raw', 'version', 'help', 'target-es6' parameter 'cli', 'input', 'nodejs', 'output', 'watch' if escodegen? @@ -55,6 +55,7 @@ options.optimise ?= yes options.sourceMap = options['source-map'] options.sourceMapFile = options['source-map-file'] +options.targetES6 = options['target-es6'] # input validation @@ -209,6 +210,7 @@ else raw: options.raw or options.sourceMap or options.sourceMapFile or options.eval inputSource: inputSource literate: options.literate + targetES6: options.targetES6 catch e console.error e.message process.exit 1 @@ -245,7 +247,7 @@ else process.exit 1 # compile - jsAST = CoffeeScript.compile result, bare: options.bare + jsAST = CoffeeScript.compile result, bare: options.bare, targetES6: options.targetES6 # --compile if options.compile diff --git a/src/compiler.coffee b/src/compiler.coffee index d1e08ac4..7f3d0e28 100644 --- a/src/compiler.coffee +++ b/src/compiler.coffee @@ -1,7 +1,9 @@ -{any, concat, concatMap, difference, divMod, foldl, foldl1, intersect, map, nub, owns, partition, span, union} = require './functional-helpers' +{find, any, all, concat, concatMap, difference, divMod, foldl, foldl1, intersect, map, nub, owns, partition, span, union, zip} = require './functional-helpers' {beingDeclared, usedAsExpression, envEnrichments} = require './helpers' CS = require './nodes' JS = require './js-nodes' +debugES6 = require('debug')('es6') + exports = module?.exports ? this # TODO: this whole file could use a general cleanup @@ -34,7 +36,7 @@ mapChildNodes = (node, mapper, reducer, identity, opts={}) -> opts.listIdentity ?= identity foldl identity, (for childName in node.childNodes when node[childName]? if childName in node.listMembers - foldl opts.listIdentity, (mapper(child, childName) for child in node[childName] when child?), opts.listReducer + foldl opts.listIdentity, (mapper(child, childName) for child in node[childName]), opts.listReducer else mapper(node[childName], childName) ), reducer @@ -45,6 +47,8 @@ genSym = do -> stmt = (e) -> + # TODO: move these special cases into type-specific + # `becomeStatement` methods. return e unless e? if e.isStatement then e else if e.instanceof JS.SequenceExpression @@ -56,6 +60,8 @@ stmt = (e) -> else if e.instanceof JS.ConditionalExpression # TODO: drop either the consequent or the alternate if they don't have side effects new JS.IfStatement (expr e.test), (stmt e.consequent), stmt e.alternate + else if typeof e.becomeStatement == 'function' + e.becomeStatement() else new JS.ExpressionStatement e expr = (s) -> @@ -69,12 +75,12 @@ expr = (s) -> else if s.instanceof JS.ExpressionStatement s.expression else if s.instanceof JS.ThrowStatement - new JS.CallExpression (new JS.FunctionExpression null, [], forceBlock s), [] + new JS.CallExpression (funcExpr body: (forceBlock s)), [] else if s.instanceof JS.IfStatement consequent = expr (s.consequent ? helpers.undef()) alternate = expr (s.alternate ? helpers.undef()) new JS.ConditionalExpression s.test, consequent, alternate - else if s.instanceof JS.ForInStatement, JS.ForStatement, JS.WhileStatement + else if s.instanceof JS.ForInStatement, JS.ForOfStatement, JS.ForStatement, JS.WhileStatement accum = genSym 'accum' # TODO: remove accidental mutation like this in these helpers push = (x) -> stmt new JS.CallExpression (memberAccess accum, 'push'), [x] @@ -87,19 +93,30 @@ expr = (s) -> else s.body.body.push push helpers.undef() block = new JS.BlockStatement [s, new JS.ReturnStatement accum] - iife = new JS.FunctionExpression null, [accum], block + iife = funcExpr params: [accum], body: block new JS.CallExpression (memberAccess iife.g(), 'call'), [new JS.ThisExpression, new JS.ArrayExpression []] else if s.instanceof JS.SwitchStatement, JS.TryStatement block = new JS.BlockStatement [makeReturn s] - iife = new JS.FunctionExpression null, [], block + iife = funcExpr body: block new JS.CallExpression (memberAccess iife.g(), 'call'), [new JS.ThisExpression] + else if typeof s.becomeExpression == 'function' + s.becomeExpression() else # TODO: comprehensive throw new Error "expr: Cannot use a #{s.type} as a value" -isScopeBoundary = (node) -> +# When looking downward, it's up to us to control the scope +# boundaries, and we want them to stop only at user-created functions, +# not compiler-generated functions. +isDownwardScopeBoundary = (node) -> (node.instanceof JS.FunctionExpression, JS.FunctionDeclaration) and not node.generated +# When looking upward for scope boundaries, we need to respect the +# real Javascript scope boundaries because our declarations will not +# escape even compiler-generated functions. +isUpwardScopeBoundary = (node) -> + node.instanceof JS.FunctionExpression, JS.FunctionDeclaration + makeReturn = (node) -> return new JS.ReturnStatement unless node? if node.instanceof JS.BlockStatement @@ -123,30 +140,40 @@ makeReturn = (node) -> else if (node.instanceof JS.UnaryExpression) and node.operator is 'void' then new JS.ReturnStatement else new JS.ReturnStatement expr node - -generateMutatingWalker = (fn) -> (node, args...) -> - mapper = (child, nameInParent) -> [nameInParent, fn.apply(child, args)] +generateWalker = (makeIdentity) -> (fn) -> (node, args...) -> + mapper = (child, nameInParent) -> [nameInParent, (if child? then fn.apply(child, args) else child)] reducer = (parent, [name, newChild]) -> parent[name] = newChild; parent - mapChildNodes node, mapper, reducer, node, { + identity = makeIdentity(node) + mapChildNodes node, mapper, reducer, identity, { listReducer: ([_, accum],[name, newChild]) -> [name, accum.concat(newChild) ] listIdentity: [null, []] } +generateMutatingWalker = generateWalker (node) -> node +generateCopyingWalker = generateWalker (node) -> node.shallowCopy() + +declaredIdentifiers = (node) -> + return [] unless node? + if node.instanceof JS.Identifier then [node.name] + else if node.instanceof JS.MemberExpression then [] + else mapChildNodes node, declaredIdentifiers, ((a,b) -> a.concat(b)), [] + declarationsNeeded = (node) -> return [] unless node? - if (node.instanceof JS.AssignmentExpression) and node.operator is '=' and node.left.instanceof JS.Identifier then [node.left.name] - else if (node.instanceof JS.ForInStatement) and node.left.instanceof JS.Identifier then [node.left.name] - else [] + if ((node.instanceof JS.AssignmentExpression) and node.operator is '=') or (node.instanceof JS.ForInStatement) or (node.instanceof JS.ForOfStatement) + declaredIdentifiers(node.left) + else + [] declarationsNeededRecursive = (node) -> return [] unless node? - if isScopeBoundary(node) then [] + if isDownwardScopeBoundary(node) then [] else union (declarationsNeeded node), mapChildNodes(node, declarationsNeededRecursive, ((a,b)->a.concat(b)), []) variableDeclarations = (node) -> return [] unless node? if node.instanceof JS.FunctionDeclaration then [node.id] - else if isScopeBoundary(node) then [] + else if isUpwardScopeBoundary(node) then [] else if node.instanceof JS.VariableDeclarator then [node.id] else mapChildNodes(node, variableDeclarations, ((a,b)->a.concat(b)), []) @@ -155,6 +182,8 @@ collectIdentifiers = (node) -> nub switch when node.instanceof JS.Identifier then [node.name] when (node.instanceof JS.MemberExpression) and not node.computed collectIdentifiers node.object + when node.instanceof JS.ObjectPattern + map(node.properties, (p) -> collectIdentifiers(p.value)).reduce(((a,b) -> a.concat(b)), []) else mapChildNodes node, collectIdentifiers, ((a,b)->a.concat(b)), [] # TODO: something like Optimiser.mayHaveSideEffects @@ -194,12 +223,40 @@ dynamicMemberAccess = (e, index) -> then memberAccess e, index.value else new JS.MemberExpression yes, (expr e), expr index +es6AssignmentPattern = (assignee) -> + if assignee instanceof JS.ArrayExpression + elements = for elt, index in assignee.elements + if elt instanceof JS.Identifier + elt + else if elt.rest + if index == assignee.elements.length - 1 + new JS.RestElement elt.expression + else + es6AssignmentPattern(elt) + if all(elements, (elt) -> elt?) and elements.length > 0 + new JS.ArrayPattern(elements) + else if assignee instanceof JS.ObjectExpression + props = assignee.properties.map (p) -> + if p.value instanceof JS.Identifier + if p.value.name == p.key.name + p.shorthand = true + p + else if (pattern = es6AssignmentPattern p.value) + new JS.Property p.key, pattern + if all(props, (elt) -> elt?) and props.length > 0 + new JS.ObjectPattern props + + # TODO: rewrite this whole thing using the CS AST nodes -assignment = (assignee, expression, valueUsed = no) -> +assignment = (assignee, expression, options, valueUsed = no) -> assignments = [] expression = expr expression switch when assignee.rest then # do nothing for right now + + when options.targetES6 and (es6Pattern = es6AssignmentPattern(assignee)) + assignments.push new JS.AssignmentExpression '=', es6Pattern, expression + when assignee.instanceof JS.ArrayExpression e = expression # TODO: only cache expression when it needs it @@ -212,7 +269,7 @@ assignment = (assignee, expression, valueUsed = no) -> for m, i in elements break if m.rest - assignments.push assignment m, (dynamicMemberAccess e, new JS.Literal i), valueUsed + assignments.push assignment m, (dynamicMemberAccess e, new JS.Literal i), options, valueUsed if elements.length > 0 # TODO: see if this logic can be combined with rest-parameter handling @@ -251,7 +308,7 @@ assignment = (assignee, expression, valueUsed = no) -> for m in assignee.properties propName = if m.key.instanceof JS.Identifier then new JS.Literal m.key.name else m.key - assignments.push assignment m.value, (dynamicMemberAccess e, propName), valueUsed + assignments.push assignment m.value, (dynamicMemberAccess e, propName), options, valueUsed when assignee.instanceof JS.Identifier, JS.GenSym, JS.MemberExpression assignments.push new JS.AssignmentExpression '=', assignee, expr expression @@ -317,26 +374,46 @@ generateSoak = do -> new CS.Conditional (foldl1 tests, (memo, t) -> new CS.LogicalAndOp memo, t), e +baseExtends = (myName, copyClassProperties) -> + protoAccess = (e) -> memberAccess e, 'prototype' + child = new JS.Identifier 'child' + parent = new JS.Identifier 'parent' + ctor = new JS.Identifier 'ctor' + + block = [ + copyClassProperties(parent, child) + funcDecl(id: ctor , body: new JS.BlockStatement [ + stmt new JS.AssignmentExpression '=', (memberAccess new JS.ThisExpression, 'constructor'), child + ]) + new JS.AssignmentExpression '=', (protoAccess ctor), protoAccess parent + new JS.AssignmentExpression '=', (protoAccess child), new JS.NewExpression ctor, [] + new JS.AssignmentExpression '=', (memberAccess child, '__super__'), protoAccess parent + new JS.ReturnStatement child + ] + funcDecl(id: helperNames[myName], params: [child, parent], body: (new JS.BlockStatement map block, stmt)) + helperNames = {} helpers = extends: -> - protoAccess = (e) -> memberAccess e, 'prototype' - child = new JS.Identifier 'child' - parent = new JS.Identifier 'parent' - ctor = new JS.Identifier 'ctor' key = new JS.Identifier 'key' - block = [ + copyClassProperties = (parent, child) -> new JS.ForInStatement (new JS.VariableDeclaration 'var', [new JS.VariableDeclarator key, null]), parent, new JS.IfStatement (helpers.isOwn parent, key), f = # TODO: figure out how we can allow this stmt new JS.AssignmentExpression '=', (new JS.MemberExpression yes, child, key), new JS.MemberExpression yes, parent, key - new JS.FunctionDeclaration ctor, [], new JS.BlockStatement [ - stmt new JS.AssignmentExpression '=', (memberAccess new JS.ThisExpression, 'constructor'), child - ] - new JS.AssignmentExpression '=', (protoAccess ctor), protoAccess parent - new JS.AssignmentExpression '=', (protoAccess child), new JS.NewExpression ctor, [] - new JS.AssignmentExpression '=', (memberAccess child, '__super__'), protoAccess parent - new JS.ReturnStatement child - ] - new JS.FunctionDeclaration helperNames.extends, [child, parent], new JS.BlockStatement map block, stmt + baseExtends('extends', copyClassProperties) + extendsES6: -> + # This version of the extends helper makes a CoffeeScript-style + # class able to extend a real ES6 class. The usual `extends` + # helper doesn't work because the properties we're trying to copy + # are non-enumerable. + copyClassProperties = (parent, child) -> + propertyNames = new JS.CallExpression (memberAccess new JS.Identifier('Object'), 'getOwnPropertyNames'), [parent] + key = new JS.Identifier 'key' + copyKey = new JS.AssignmentExpression('=', (new JS.MemberExpression yes, child, key), (new JS.MemberExpression yes, parent, key)) + condition = ['callee', 'caller', 'arguments'].map((forbidden) -> new JS.BinaryExpression('!==', key, new JS.Literal(forbidden))).reduce (a,b) -> new JS.BinaryExpression('&&', a, b) + conditional = new JS.IfStatement condition, forceBlock copyKey + func = funcExpr(params: [key], body: forceBlock conditional) + new JS.CallExpression (memberAccess propertyNames, 'forEach'), [func] + baseExtends('extendsES6', copyClassProperties) construct: -> child = new JS.Identifier 'child' ctor = new JS.Identifier 'ctor' @@ -345,7 +422,7 @@ helpers = result = new JS.Identifier 'result' block = [ new JS.VariableDeclaration 'var', [ - new JS.VariableDeclarator fn, new JS.FunctionExpression null, [], new JS.BlockStatement [] + new JS.VariableDeclarator fn, (funcExpr body: (new JS.BlockStatement [])) ] new JS.AssignmentExpression '=', (memberAccess fn, 'prototype'), memberAccess ctor, 'prototype' new JS.VariableDeclaration 'var', [ @@ -354,12 +431,12 @@ helpers = ] new JS.ReturnStatement new JS.ConditionalExpression (new JS.BinaryExpression '===', result, new JS.CallExpression (new JS.Identifier 'Object'), [result]), result, child ] - new JS.FunctionDeclaration helperNames.construct, [ctor, args], new JS.BlockStatement map block, stmt + funcDecl(id: helperNames.construct, params: [ctor, args], body: (new JS.BlockStatement map block, stmt)) isOwn: -> hop = memberAccess (new JS.ObjectExpression []), 'hasOwnProperty' params = args = [(new JS.Identifier 'o'), new JS.Identifier 'p'] functionBody = [new JS.CallExpression (memberAccess hop, 'call'), args] - new JS.FunctionDeclaration helperNames.isOwn, params, makeReturn new JS.BlockStatement map functionBody, stmt + funcDecl(id: helperNames.isOwn, params: params, body: (makeReturn new JS.BlockStatement map functionBody, stmt)) in: -> member = new JS.Identifier 'member' list = new JS.Identifier 'list' @@ -374,7 +451,32 @@ helpers = new JS.ForStatement varDeclaration, (new JS.BinaryExpression '<', i, length), (new JS.UpdateExpression '++', yes, i), loopBody new JS.Literal no ] - new JS.FunctionDeclaration helperNames.in, [member, list], makeReturn new JS.BlockStatement map functionBody, stmt + funcDecl(id: helperNames.in, params: [member, list], body: (makeReturn new JS.BlockStatement map functionBody, stmt)) + range: -> + first = new JS.Identifier('first') + last = new JS.Identifier('last') + step = new JS.Identifier('step') + isInclusive = new JS.Identifier('isInclusive') + i = new JS.Identifier('i') + init = new JS.VariableDeclaration 'let', [ new JS.VariableDeclarator i, first ] + test = new JS.ConditionalExpression(isInclusive, (new JS.BinaryExpression '<=', i, last), (new JS.BinaryExpression '<', i, last)) + update = new JS.AssignmentExpression '=', i, new JS.BinaryExpression '+', i, step + body = [ + new JS.ForStatement init, test, update, new JS.BlockStatement [stmt new JS.YieldExpression i] + ] + fn = funcDecl(id: helperNames.range, params: [first, last, step, isInclusive], defaults: [null, null, new JS.Literal(1), new JS.Literal(false)], body: new JS.BlockStatement map body, stmt) + fn.generator = true + fn + + inclusiveRange: -> + first = new JS.Identifier('first') + last = new JS.Identifier('last') + step = new JS.Identifier('step') + body = [ + makeReturn helpers.range first, last, step, new JS.Literal(true) + ] + funcDecl(id: helperNames.inclusiveRange, params: [first, last, step], defaults: [null, null, new JS.Literal(1)], body: new JS.BlockStatement body ) + enabledHelpers = [] for own h, fn of helpers @@ -391,7 +493,156 @@ inlineHelpers = for own h, fn of inlineHelpers helpers[h] = fn +findES6Methods = (classIdentifier, ctor, isDerivedClass, body) -> + methods = [] + properties = [] + unmatched = [] + foundConstructor = false + + methodIdentifier = (expression) -> + prop = expression.left.property + if prop instanceof JS.Identifier + new JS.Identifier(prop.name) + else if prop instanceof JS.Literal + # ES6 allows method names that are the same as reserved keywords + new JS.Identifier(prop.value) + + rewriteSuper = generateCopyingWalker -> + if isDownwardScopeBoundary(this) then this + else if @toES6Super then @toES6Super() + else rewriteSuper this + + if ctor + ctor = rewriteSuper(ctor) + if (safeCtorBody = es6SafeConstructor(isDerivedClass, ctor.body)) + methods.push new JS.MethodDefinition(new JS.Identifier('constructor'), funcExpr(params: ctor.params, defaults: ctor.defaults, rest: ctor.rest, body: safeCtorBody)) + else + debugES6 "#{describeClass classIdentifier}'s constructor does not follow the ES6 rules for super." + unmatched.push ctor + + for statement in body.body + + if (statement instanceof JS.FunctionDeclaration) and not foundConstructor + # The first function declaration is the constructor inserted by + # the CS.Class rule, but it's not direclty usable because it + # obscures that there may be an external constructor. We rely on + # our ctor argument instead. + foundConstructor = true + continue + + expression = statement.expression + if (expression instanceof JS.AssignmentExpression) and (expression.operator == '=') and (expression.left instanceof JS.MemberExpression) + + property = expression.left.property + + propertyName = if property instanceof JS.Identifier + property.name + else if property instanceof JS.Literal + property.value + + object = expression.left.object + methodBody = if expression.right instanceof JS.FunctionExpression + funcExpr(id: expression.right.id, params: expression.right.params, defaults: expression.right.defaults, rest: expression.right.rest, body: rewriteSuper(expression.right.body)) + + if (object instanceof JS.MemberExpression) and (object.property.name == 'prototype') and (object.object.instanceof JS.ThisExpression) + if methodBody + methods.push(new JS.MethodDefinition(new JS.Identifier(propertyName), methodBody)) + else + properties.push new JS.AssignmentExpression('=', memberAccess(memberAccess(classIdentifier, 'prototype'), propertyName), expression.right) + else if object instanceof JS.ThisExpression + if methodBody + m = new JS.MethodDefinition(new JS.Identifier(propertyName), methodBody) + m.static = true + methods.push(m) + else + properties.push new JS.AssignmentExpression('=', memberAccess(classIdentifier, propertyName), expression.right) + else + unmatched.push(statement) + + rewriteThis = generateCopyingWalker -> + if @instanceof JS.ThisExpression then classIdentifier + else if isDownwardScopeBoundary(this) then this + else rewriteThis this + + properties = map properties, rewriteThis + + { methods, properties, unmatched } + + +es6SafeConstructor = (isDerivedClass, block) -> + return block unless isDerivedClass + + either = (a,b) -> a or b + + referencesThis = (node) -> + if node? and node instanceof JS.ThisExpression then true + else mapChildNodes(node, referencesThis, either, false) + + callsSuper = (node) -> + if node? and node instanceof JS.CallExpression and \ + node.callee instanceof JS.Identifier and \ + node.callee.name == 'super' + true + else + mapChildNodes(node, callsSuper, either, false) + + sawThis = calledSuper = false + for statement in block.body + sawThis = sawThis or referencesThis(statement) + if callsSuper(statement) + if sawThis + return null + else + calledSuper = true + if not calledSuper + block = new JS.BlockStatement(block.body.slice()) + block.body.unshift(stmt new JS.CallExpression(new JS.Identifier('super'), [])) + block + +es6SafeArrowExpression = (parameters, defaults, rest, block) -> + # A coffeescript bound function is *almost* the same as an ES6 arrow + # function, but they have a different meaning for the "arguments" + # keyword. In ES6, arguments still refers to the outer scope. + + usesArguments = (node) -> + if not node? then false + else if node instanceof JS.Identifier then node.name == 'arguments' + else mapChildNodes node, usesArguments, ((a,b) -> a or b), false + + if any block.body, usesArguments + if parameters.length > 0 + debugES6("Skipping arrow function conversion because your bound function refers to the 'arguments' keyword and has regular positional arguments") + return null + rest ?= genSym 'arguments' + rewriteArguments = generateMutatingWalker -> + if (@instanceof JS.Identifier) and @name == 'arguments' then rest + else if isDownwardScopeBoundary(this) then this + else rewriteArguments this + for statement in block.body + rewriteArguments(statement) + + if block.body.length == 1 && block.body[0] instanceof JS.ReturnStatement + fn = new JS.ArrowFunctionExpression parameters, defaults, rest, block.body[0].argument + fn.expression = true + return fn + else + return new JS.ArrowFunctionExpression parameters, defaults, rest, block + +describeClass = (name, parentNode) -> + return "class #{name.name}" if name?.name + if parentNode instanceof CS.AssignOp and parentNode.assignee instanceof CS.Identifier + return "An anonymous class assigned to identifier #{parentNode.assignee.data}" + if parentNode instanceof CS.ObjectInitialiserMember + return "An anonymous class assigned to property #{parentNode.key.data}" + return "An anonymous class" + + +funcExpr = ({id, params, defaults, rest, body}) -> + new JS.FunctionExpression(id ? null, params ? [], defaults ? [], rest ? null, body) + +funcDecl = ({id, params, defaults, rest, body}) -> + new JS.FunctionDeclaration(id ? null, params ? [], defaults ? [], rest ? null, body) class exports.Compiler @@ -415,13 +666,14 @@ class exports.Compiler decls = nub concatMap block, declarationsNeededRecursive if decls.length and not options.bare # add a function wrapper - block = [stmt new JS.UnaryExpression 'void', new JS.CallExpression (memberAccess (new JS.FunctionExpression null, [], new JS.BlockStatement block), 'call'), [new JS.ThisExpression]] + block = [stmt new JS.UnaryExpression 'void', new JS.CallExpression (memberAccess (funcExpr body: new JS.BlockStatement(block)), 'call'), [new JS.ThisExpression]] # generate node pkg = require './../package.json' program = new JS.Program block + ecmaMode = if options.targetES6 then '-es6' else '' program.leadingComments = [ type: 'Line' - value: " Generated by CoffeeScript #{pkg.version}" + value: " Generated by CoffeeScript #{pkg.version}#{ecmaMode}" ] program ] @@ -441,9 +693,28 @@ class exports.Compiler alternate = forceBlock alternate unless alternate.instanceof JS.IfStatement if alternate? or ancestry[0]?.instanceof CS.Conditional consequent = forceBlock consequent - new JS.IfStatement (expr condition), (stmt consequent), alternate + new JS.IfStatement (expr condition), (forceBlock consequent), alternate ] - [CS.ForIn, ({valAssignee, keyAssignee, target, step, filter, body, compile}) -> + [CS.ForIn, ({valAssignee, keyAssignee, target, step, filter, body, compile, options}) -> + if options.targetES6 and !filter + es6Target = if @target.instanceof CS.Range + rangeArgs = [compile(@target.left), compile(@target.right)] + unless (step instanceof JS.Literal) and step.value == 1 + rangeArgs.push step + if @target.isInclusive + helpers.inclusiveRange(rangeArgs...) + else + helpers.range(rangeArgs...) + else if (step instanceof JS.Literal) and step.value == 1 + target + + if es6Target and valAssignee and (valPattern = if (valAssignee instanceof JS.Identifier) then valAssignee else es6AssignmentPattern(valAssignee)) + if keyAssignee + return new JS.ForOfStatement(new JS.VariableDeclaration('var', [new JS.VariableDeclarator new JS.ArrayPattern([keyAssignee, valPattern])]), new JS.CallExpression((memberAccess es6Target, 'entries'), []), forceBlock body) + else + return new JS.ForOfStatement(new JS.VariableDeclaration('var', [new JS.VariableDeclarator valPattern]), es6Target, forceBlock body) + + i = genSym 'i' length = genSym 'length' block = forceBlock body @@ -485,12 +756,12 @@ class exports.Compiler # TODO: if block only has a single statement, wrap it instead of continuing block.body.unshift stmt new JS.IfStatement (new JS.UnaryExpression '!', filter), new JS.ContinueStatement if keyAssignee? - block.body.unshift stmt assignment keyAssignee, i + block.body.unshift stmt assignment keyAssignee, i, options if valAssignee? - block.body.unshift stmt assignment valAssignee, new JS.MemberExpression yes, e, i + block.body.unshift stmt assignment valAssignee, (new JS.MemberExpression yes, e, i), options new JS.ForStatement varDeclaration, (new JS.BinaryExpression '<', i, length), (increment i), block ] - [CS.ForOf, ({keyAssignee, valAssignee, target, filter, body}) -> + [CS.ForOf, ({keyAssignee, valAssignee, target, filter, body, options}) -> block = forceBlock body block.body.push stmt helpers.undef() unless block.body.length e = if @isOwn and needsCaching @target then genSym 'cache' else expr target @@ -498,7 +769,7 @@ class exports.Compiler # TODO: if block only has a single statement, wrap it instead of continuing block.body.unshift stmt new JS.IfStatement (new JS.UnaryExpression '!', filter), new JS.ContinueStatement if valAssignee? - block.body.unshift stmt assignment valAssignee, new JS.MemberExpression yes, e, keyAssignee + block.body.unshift stmt assignment valAssignee, (new JS.MemberExpression yes, e, keyAssignee), options if @isOwn block.body.unshift stmt new JS.IfStatement (new JS.UnaryExpression '!', helpers.isOwn e, keyAssignee), new JS.ContinueStatement right = if e is target then e else new JS.AssignmentExpression '=', e, target @@ -527,13 +798,13 @@ class exports.Compiler cases[cases.length - 1].consequent = block cases ] - [CS.Try, ({body, catchAssignee, catchBody, finallyBody}) -> + [CS.Try, ({body, catchAssignee, catchBody, finallyBody, options}) -> finallyBlock = if @finallyBody? then forceBlock finallyBody else null if @catchBody? or not @finallyBody? e = genSym 'e' catchBlock = forceBlock catchBody if catchAssignee? - catchBlock.body.unshift stmt assignment catchAssignee, e + catchBlock.body.unshift stmt assignment catchAssignee, e, options handlers = [new JS.CatchClause e, catchBlock] else handlers = [] @@ -577,9 +848,9 @@ class exports.Compiler body.push new JS.ForStatement vars, condition, update, stmt new JS.CallExpression (memberAccess accum, 'push'), [i] body.push new JS.ReturnStatement accum if any ancestry, (ancestor) -> ancestor.instanceof CS.Functions - new JS.CallExpression (memberAccess (new JS.FunctionExpression null, [], new JS.BlockStatement body), 'apply'), [new JS.ThisExpression, new JS.Identifier 'arguments'] + new JS.CallExpression (memberAccess (funcExpr body: new JS.BlockStatement body), 'apply'), [new JS.ThisExpression, new JS.Identifier 'arguments'] else - new JS.CallExpression (memberAccess (new JS.FunctionExpression null, [], new JS.BlockStatement body), 'call'), [new JS.ThisExpression] + new JS.CallExpression (memberAccess (funcExpr body: new JS.BlockStatement body), 'call'), [new JS.ThisExpression] ] [CS.ArrayInitialiser, do -> groupMembers = (members) -> @@ -591,13 +862,17 @@ class exports.Compiler [ys, zs] = [sliced, zs[1..]] else ys = new JS.ArrayExpression map ys, expr [ys].concat groupMembers zs - ({members, compile}) -> - if any members, (m) -> m.spread + ({members, compile, options}) -> + if (not options.targetES6) and any members, (m) -> m.spread grouped = map (groupMembers members), expr if grouped.length <= 1 then grouped[0] else new JS.CallExpression (memberAccess grouped[0], 'concat'), grouped[1..] else - new JS.ArrayExpression map members, expr + new JS.ArrayExpression map members, (m) -> + expr if m.spread + new JS.SpreadElement(m.expression) + else + m ] [CS.Spread, ({expression}) -> {spread: yes, expression: expr expression}] [CS.ObjectInitialiser, ({members}) -> new JS.ObjectExpression members] @@ -609,22 +884,26 @@ class exports.Compiler [CS.DefaultParam, ({param, default: d}) -> {param, default: d}] [CS.Function, CS.BoundFunction, do -> - handleParam = (param, original, block, inScope) -> switch + handleParam = (param, original, block, inScope, options) -> switch when original.instanceof CS.Rest then param # keep these for special processing later when original.instanceof CS.Identifier then param when original.instanceof CS.MemberAccessOps, CS.ObjectInitialiser, CS.ArrayInitialiser - p = genSym 'param' - decls = map (intersect inScope, beingDeclared original), (i) -> new JS.Identifier i - block.body.unshift stmt assignment param, p - block.body.unshift makeVarDeclaration decls if decls.length - p + if options.targetES6 and (pattern = es6AssignmentPattern(param)) + pattern + else + p = genSym 'param' + decls = map (intersect inScope, beingDeclared original), (i) -> new JS.Identifier i + block.body.unshift stmt assignment param, p, options + block.body.unshift makeVarDeclaration decls if decls.length + p when original.instanceof CS.DefaultParam - p = handleParam.call this, param.param, original.param, block, inScope - block.body.unshift new JS.IfStatement (new JS.BinaryExpression '==', (new JS.Literal null), p), stmt assignment p, param.default + p = handleParam.call this, param.param, original.param, block, inScope, options + if !options.targetES6 + block.body.unshift new JS.IfStatement (new JS.BinaryExpression '==', (new JS.Literal null), p), stmt assignment p, param.default, options p else throw new Error "Unsupported parameter type: #{original.className}" - ({parameters, body, ancestry, inScope}) -> + ({parameters, body, ancestry, inScope, options}) -> unless ancestry[0]?.instanceof CS.Constructor body = makeReturn body block = forceBlock body @@ -632,24 +911,42 @@ class exports.Compiler if (last?.instanceof JS.ReturnStatement) and not last.argument? block.body = block.body[...-1] + defaults = if options.targetES6 + zip(parameters, @parameters).map ([param, original]) -> + if original instanceof CS.DefaultParam + param.default + else + null + else + [] + parameters_ = if parameters.length is 0 then [] else pIndex = parameters.length while pIndex-- - handleParam.call this, parameters[pIndex], @parameters[pIndex], block, inScope + handleParam.call this, parameters[pIndex], @parameters[pIndex], block, inScope, options parameters = parameters_.reverse() if parameters.length > 0 if parameters[-1..][0].rest - paramName = parameters.pop().expression - numParams = parameters.length - test = new JS.BinaryExpression '>', (memberAccess (new JS.Identifier 'arguments'), 'length'), new JS.Literal numParams - consequent = helpers.slice (new JS.Identifier 'arguments'), new JS.Literal numParams - alternate = new JS.ArrayExpression [] - if (paramName.instanceof JS.Identifier) and paramName.name in inScope - block.body.unshift makeVarDeclaration [paramName] - block.body.unshift stmt new JS.AssignmentExpression '=', paramName, new JS.ConditionalExpression test, consequent, alternate + if options.targetES6 + expression = parameters.pop().expression + rest = if expression instanceof JS.Identifier + new JS.Identifier(expression.name) + else + sym = genSym 'rest' + block.body.unshift stmt new JS.AssignmentExpression '=', expression, sym + sym + else + paramName = parameters.pop().expression + numParams = parameters.length + test = new JS.BinaryExpression '>', (memberAccess (new JS.Identifier 'arguments'), 'length'), new JS.Literal numParams + consequent = helpers.slice (new JS.Identifier 'arguments'), new JS.Literal numParams + alternate = new JS.ArrayExpression [] + if (paramName.instanceof JS.Identifier) and paramName.name in inScope + block.body.unshift makeVarDeclaration [paramName] + block.body.unshift stmt new JS.AssignmentExpression '=', paramName, new JS.ConditionalExpression test, consequent, alternate else if any parameters, (p) -> p.rest paramName = index = null for p, i in parameters when p.rest @@ -657,6 +954,7 @@ class exports.Compiler index = i break parameters.splice index, 1 + defaults.splice index, 1 numParams = parameters.length numArgs = genSym 'numArgs' reassignments = new JS.IfStatement (new JS.BinaryExpression '>', (new JS.AssignmentExpression '=', numArgs, memberAccess (new JS.Identifier 'arguments'), 'length'), new JS.Literal numParams), (new JS.BlockStatement [ @@ -672,26 +970,85 @@ class exports.Compiler performedRewrite = no if @instanceof CS.BoundFunction - newThis = genSym 'this' - rewriteThis = generateMutatingWalker -> - if @instanceof JS.ThisExpression - performedRewrite = yes - newThis - else if @instanceof JS.FunctionExpression, JS.FunctionDeclaration then this - else rewriteThis this - rewriteThis block - - fn = new JS.FunctionExpression null, parameters, block + if options.targetES6 and (arrow = es6SafeArrowExpression(parameters, defaults, rest, block)) + return arrow + else + newThis = genSym 'this' + rewriteThis = generateMutatingWalker -> + if @instanceof JS.ThisExpression + performedRewrite = yes + newThis + else if @instanceof JS.FunctionExpression, JS.FunctionDeclaration then this + else rewriteThis this + rewriteThis block + + fn = funcExpr params:parameters, defaults:defaults, rest: rest, body: block + if performedRewrite - new JS.CallExpression (new JS.FunctionExpression null, [newThis], new JS.BlockStatement [ + new JS.CallExpression (funcExpr params: [newThis], body: new JS.BlockStatement [ new JS.ReturnStatement fn ]), [new JS.ThisExpression] else fn ] - [CS.Rest, ({expression}) -> {rest: yes, expression, isExpression: yes, isStatement: yes}] + [CS.Rest, ({expression, options}) -> {rest: yes, expression, isExpression: yes, isStatement: yes}] # TODO: comment - [CS.Class, ({nameAssignee, parent, name, ctor, body, compile}) -> + [CS.Class, ({nameAssignee, parent, name, ctor, body, compile, options, ancestry}) -> + if options.targetES6 + parentIdentifier = new JS.Identifier(parent.name) if parent + classIdentifier = if name.name + new JS.Identifier(name.name) + else + genSym 'klass' + + { methods, properties, unmatched } = findES6Methods(classIdentifier, ctor, parent?, forceBlock body) + + # Emit our ES6 class only if we were able to account for + # everything in its definition. Otherwise, fall through to the + # non-ES6 emulation + if @ctor and not @ctor.expression.instanceof CS.Functions + debugES6 "#{describeClass(name, ancestry[0])} was not converted to ES6 because its constructor is not a function expression." + else if @boundMembers.length > 0 + debugES6 "#{describeClass(name, ancestry[0])} was not converted to ES6 because it has bound function members." + else if nameAssignee and not nameAssignee.instanceof JS.Identifier + debugES6 "#{describeClass(name, ancestry[0])} was not converted to ES6 because it's being assigned to a compound name." + else if parent and not (parent instanceof JS.Identifier) + debugES6 "#{describeClass(name, ancestry[0])} was not converted to ES6 because it extends an expression." + else if unmatched.length > 0 + debugES6 "#{describeClass(name, ancestry[0])} was not converted to ES6 because its body contains code that we couldn't map directly to methods, static methods, prototype properties, or class properties." + else + # Key difference between coffeescript and ES6: in + # coffeescript, you get a local binding to the class's name + # whether or not you use the class as an expression + # value. In ES6, a class used as an expression value does + # not create a local binding. So to mimic coffeescript + # semantics in ES6, we convert `a = class B` to: + # + # var a, B; + # a = B = class B {} + # + # This is analogous to the way `var x = function y(){}` works. + classExpression = new JS.ClassExpression((if (classIdentifier instanceof JS.GenSym) then null else classIdentifier), parentIdentifier, new JS.ClassBody(methods)) + classAssignment = new JS.AssignmentExpression '=', classIdentifier, classExpression + return if properties.length == 0 + if classIdentifier instanceof JS.GenSym + # no properties, no name, so we can use just a bare anonymous expression + classExpression + else + # no properties, with name, so we use an assignment + # expression, and we provide the option to simplify to a + # declaration if we're used in a statement context. + classAssignment.becomeStatement = -> + statement = new JS.ClassDeclaration(classIdentifier, parentIdentifier, new JS.ClassBody(methods)) + statement.becomeExpression = -> classAssignment + statement + classAssignment + else + # need to set properties, so create an IIFE + block = new JS.BlockStatement([ stmt classAssignment ].concat(map properties, stmt).concat(makeReturn classIdentifier)) + new JS.CallExpression((funcExpr body: block).g(), []) + + args = [] params = [] parentRef = genSym 'super' @@ -711,7 +1068,7 @@ class exports.Compiler ctorBody.body.push stmt new JS.CallExpression (memberAccess parentRef, 'apply'), [ new JS.ThisExpression, new JS.Identifier 'arguments' ] - ctor = new JS.FunctionDeclaration name, [], ctorBody + ctor = funcDecl id: name, body: ctorBody ctorIndex = 0 block.body.unshift ctor ctor.id = name @@ -728,7 +1085,7 @@ class exports.Compiler ps = (genSym() for _ in protoAssignOp.expression.parameters) member = memberAccess new JS.ThisExpression, memberName protoMember = memberAccess (memberAccess name, 'prototype'), memberName - fn = new JS.FunctionExpression null, ps, new JS.BlockStatement [ + fn = funcExpr params: ps, body: new JS.BlockStatement [ makeReturn new JS.CallExpression (memberAccess protoMember, 'apply'), [instance, new JS.Identifier 'arguments'] ] ctor.body.body.unshift stmt new JS.AssignmentExpression '=', member, fn @@ -737,7 +1094,11 @@ class exports.Compiler if parent? params.push parentRef args.push parent - block.body.unshift stmt helpers.extends name, parentRef + helper = if options.targetES6 + 'extendsES6' + else + 'extends' + block.body.unshift stmt helpers[helper] name, parentRef block.body.push new JS.ReturnStatement new JS.ThisExpression rewriteThis = generateMutatingWalker -> @@ -746,15 +1107,15 @@ class exports.Compiler else rewriteThis this rewriteThis block - iife = new JS.CallExpression (new JS.FunctionExpression null, params, block).g(), args - if nameAssignee? then assignment nameAssignee, iife else iife + iife = new JS.CallExpression (funcExpr params: params, body: block).g(), args + if nameAssignee? then assignment nameAssignee, iife, options else iife ] [CS.Constructor, ({expression}) -> tmpName = genSym 'class' if @expression.instanceof CS.Functions - new JS.FunctionDeclaration tmpName, expression.params, forceBlock expression.body + funcDecl id: tmpName, params: expression.params, defaults: expression.defaults, rest: expression.rest, body: (forceBlock expression.body) else - new JS.FunctionDeclaration tmpName, [], new JS.BlockStatement [] + funcDecl id: tmpName, body: (new JS.BlockStatement []) ] [CS.ClassProtoAssignOp, ({assignee, expression, compile}) -> if @expression.instanceof CS.BoundFunction @@ -765,8 +1126,8 @@ class exports.Compiler ] # more complex operations - [CS.AssignOp, ({assignee, expression, ancestry}) -> - assignment assignee, expression, usedAsExpression this, ancestry + [CS.AssignOp, ({assignee, expression, ancestry, options}) -> + assignment assignee, expression, options, usedAsExpression this, ancestry ] [CS.CompoundAssignOp, ({assignee, expression, inScope}) -> op = switch @op @@ -813,8 +1174,93 @@ class exports.Compiler else lhs.right = new JS.AssignmentExpression '=', left, lhs.right new JS.LogicalExpression '&&', lhs, new JS.BinaryExpression expression.operator, left, expression.right ] - [CS.FunctionApplication, ({function: fn, arguments: args, compile}) -> - if any args, (m) -> m.spread + + [CS.Super, ({arguments: args, compile, inScope, ancestry, options}) -> + + tagForES6 = (node) -> + # If we're inside an ES6 class expression, we need to compile to + # an ES6 "super". But at this point we can't actually tell if + # we're going to end up inside an ES6 class expression, because + # our enclosing class may turn out to be untranspilable. So for + # now we just tag the node as eligible to be converted. + node.toES6Super = -> + callee = if functionName == 'constructor' + new JS.Identifier('super') + else + memberAccess new JS.Identifier('super'), functionName + args = if args.length > 0 + map args, expr + else + [new JS.SpreadElement(new JS.Identifier('arguments'))] + new JS.CallExpression callee, args + node + + classNode = find ancestry, (node) => + (node instanceof CS.Class) or (node.assignee instanceof CS.ProtoMemberAccessOp) + + classPositionInAncestry = ancestry.indexOf(classNode) + classAssignNode = ancestry[ ancestry.indexOf(classNode) - 1] + + className = null + functionName = null + isStatic = false + isProtoMemberAccess = classNode.assignee instanceof CS.ProtoMemberAccessOp + + switch + when classNode instanceof CS.Class + className = classNode.name.data + functionName = do -> + searchableNodes = []; + for i, n in ancestry + break if n is classPositionInAncestry + searchableNodes.unshift i + assignableNode = find searchableNodes, (node) => node.assignee? + return 'constructor' unless assignableNode? + + switch + when assignableNode.assignee instanceof CS.MemberAccessOp + isStatic = true + assignableNode.assignee.memberName + when assignableNode.assignee instanceof CS.Identifier + assignableNode.assignee.data + + when classNode instanceof CS.AssignOp + isStatic = false + className = classNode.assignee.expression.data + functionName = classNode.assignee.memberName + + if className is 'class' + if args.length > 0 + calledExprs = [new JS.ThisExpression].concat (map args, expr) + return tagForES6 new JS.CallExpression (memberAccess (memberAccess (memberAccess (new JS.Identifier classNode.parent.data) , 'prototype'), functionName), 'call'), calledExprs + else + return tagForES6 new JS.CallExpression (memberAccess (memberAccess (memberAccess (new JS.Identifier classNode.parent.data) , 'prototype'), functionName), 'apply'), [ + new JS.ThisExpression + new JS.Identifier 'arguments' + ] + + tagForES6 if isStatic + if args.length is 0 + new JS.CallExpression (memberAccess (memberAccess (memberAccess (memberAccess (new JS.Identifier className) , '__super__'), 'constructor'), functionName), 'apply'), [ + new JS.ThisExpression + new JS.Identifier 'arguments' + ] + else + calledExprs = [new JS.ThisExpression].concat (map args, expr) + new JS.CallExpression (memberAccess (memberAccess (memberAccess (memberAccess (new JS.Identifier className) , '__super__'), 'constructor'), functionName), 'call'), calledExprs + else + if args.length is 0 + new JS.CallExpression (memberAccess (memberAccess (memberAccess (new JS.Identifier className) , '__super__'), functionName), 'apply'), [ + new JS.ThisExpression + new JS.Identifier 'arguments' + ] + else + calledExprs = [new JS.ThisExpression].concat (map args, expr) + new JS.CallExpression (memberAccess (memberAccess (memberAccess (new JS.Identifier className) , '__super__'), functionName), 'call'), calledExprs + ] + + [CS.FunctionApplication, ({function: fn, arguments: args, compile, options}) -> + if (not options.targetES6) and any args, (m) -> m.spread lhs = @function context = new CS.Null if needsCaching @function @@ -832,7 +1278,11 @@ class exports.Compiler context = new CS.SoakedMemberAccessOp context, 'prototype' compile new CS.FunctionApplication (new CS.MemberAccessOp lhs, 'apply'), [context, new CS.ArrayInitialiser @arguments] else if hasSoak this then compile generateSoak this - else new JS.CallExpression (expr fn), map args, expr + else new JS.CallExpression (expr fn), map args, (a) -> + expr if options.targetES6 and a.spread + new JS.SpreadElement a.expression + else + a ] [CS.SoakedFunctionApplication, ({compile}) -> compile generateSoak this] [CS.NewOp, ({ctor, arguments: args, compile}) -> @@ -866,7 +1316,7 @@ class exports.Compiler else access = memberAccess expression, @memberName # manually calculate raw/position info for member name - if @raw + if @raw and @expression.raw access.property.raw = @memberName access.property.line = @line offset = @raw.length - @memberName.length @@ -950,7 +1400,7 @@ class exports.Compiler [CS.OfOp, ({left, right}) -> new JS.BinaryExpression 'in', (expr left), expr right] [CS.InOp, ({left, right}) -> - if (right.instanceof JS.ArrayExpression) and right.elements.length < 5 + if (right.instanceof JS.ArrayExpression) and right.elements.length < 5 and all right.elements, (elt) -> not (elt instanceof JS.SpreadElement) switch right.elements.length when 0 if needsCaching @left @@ -968,7 +1418,10 @@ class exports.Compiler else helpers.in (expr left), expr right ] - [CS.ExtendsOp, ({left, right}) -> helpers.extends (expr left), expr right] + [CS.ExtendsOp, ({left, right, options}) -> + helper = if options.targetES6 then 'extendsES6' else 'extends' + helpers[helper] (expr left), expr right + ] [CS.InstanceofOp, ({left, right}) -> new JS.BinaryExpression 'instanceof', (expr left), expr right] [CS.LogicalAndOp, ({left, right}) -> new JS.LogicalExpression '&&', (expr left), expr right] @@ -1042,12 +1495,12 @@ class exports.Compiler children[childName] = if childName in @listMembers for member in this[childName] - jsNode = walk.call member, fn, inScope, ancestry + jsNode = walk.call member, fn, inScope, ancestry, options inScope = union inScope, envEnrichments member, inScope jsNode else child = this[childName] - jsNode = walk.call child, fn, inScope, ancestry + jsNode = walk.call child, fn, inScope, ancestry, options inScope = union inScope, envEnrichments child, inScope jsNode @@ -1055,7 +1508,7 @@ class exports.Compiler children.ancestry = ancestry children.options = options children.compile = (node) -> - walk.call node, fn, inScope, ancestry + walk.call node, fn, inScope, ancestry, options do ancestry.shift jsNode = fn.call this, children @@ -1098,7 +1551,7 @@ class exports.Compiler newNode = new JS.Identifier generateName this, state usedSymbols.push newNode.name newNode - else if isScopeBoundary(this) + else if isDownwardScopeBoundary(this) params = concatMap @params, collectIdentifiers nsCounters_ = {} nsCounters_[k] = v for own k, v of nsCounters @@ -1139,4 +1592,3 @@ class exports.Compiler declaredSymbols: inScope usedSymbols: union jsReserved[..], collectIdentifiers jsAST nsCounters: {} - diff --git a/src/functional-helpers.coffee b/src/functional-helpers.coffee index 88158e28..2f1a7f21 100644 --- a/src/functional-helpers.coffee +++ b/src/functional-helpers.coffee @@ -1,58 +1,69 @@ -@any = (list, fn) -> - for e in list - return yes if fn e - no +module.exports = + any: (list, fn) -> + for e in list + return yes if fn e + no -@all = (list, fn) -> - for e in list - return no unless fn e - yes + all: (list, fn) -> + for e in list + return no unless fn e + yes -@foldl = foldl = (memo, list, fn) -> - for i in list - memo = fn memo, i - memo + find: (list, fn) -> + for e in list + return e if fn(e) + null -@foldl1 = (list, fn) -> foldl list[0], list[1..], fn + foldl: foldl = (memo, list, fn) -> + for i in list + memo = fn memo, i + memo -@map = map = (list, fn) -> fn e for e in list + foldl1: (list, fn) -> foldl list[0], list[1..], fn -@concat = concat = (list) -> [].concat list... + map: map = (list, fn) -> fn e for e in list -@concatMap = (list, fn) -> concat map list, fn + concat: concat = (list) -> [].concat list... -@intersect = (listA, listB) -> a for a in listA when a in listB + concatMap: (list, fn) -> concat map list, fn -@difference = (listA, listB) -> a for a in listA when a not in listB + intersect: (listA, listB) -> a for a in listA when a in listB -@nub = nub = (list) -> - result = [] - result.push i for i in list when i not in result - result + difference: (listA, listB) -> a for a in listA when a not in listB -@union = (listA, listB) -> - listA.concat (b for b in (nub listB) when b not in listA) + nub: nub = (list) -> + result = [] + result.push i for i in list when i not in result + result -@flip = (fn) -> (b, a) -> fn.call this, a, b + union: (listA, listB) -> + listA.concat (b for b in (nub listB) when b not in listA) -@owns = do (hop = {}.hasOwnProperty) -> (a, b) -> hop.call a, b + flip: (fn) -> (b, a) -> fn.call this, a, b -@span = span = (list, f) -> - if list.length is 0 then [[], []] - else if f list[0] - [ys, zs] = span list[1..], f - [[list[0], ys...], zs] - else [[], list] + owns: do (hop = {}.hasOwnProperty) -> (a, b) -> hop.call a, b -@divMod = (a, b) -> - c = a % b - mod = if c < 0 then c + b else c - div = Math.floor a / b - [div, mod] + span: span = (list, f) -> + if list.length is 0 then [[], []] + else if f list[0] + [ys, zs] = span list[1..], f + [[list[0], ys...], zs] + else [[], list] -# The partition function takes a list and predicate fn and returns the pair of lists -# of elements which do and do not satisfy the predicate, respectively. -@partition = (list, fn) -> - result = [[], []] - result[+!fn item].push item for item in list - result + divMod: (a, b) -> + c = a % b + mod = if c < 0 then c + b else c + div = Math.floor a / b + [div, mod] + + # The partition function takes a list and predicate fn and returns the pair of lists + # of elements which do and do not satisfy the predicate, respectively. + partition: (list, fn) -> + result = [[], []] + result[+!fn item].push item for item in list + result + + zip: (listA, listB) -> + len = Math.max listA.length, listB.length + for i in [0...len] + [listA[i], listB[i]] diff --git a/src/grammar.pegcoffee b/src/grammar.pegcoffee index 23495794..18eb9c18 100644 --- a/src/grammar.pegcoffee +++ b/src/grammar.pegcoffee @@ -548,24 +548,36 @@ leftHandSideExpressionNoImplicitObjectCall = callExpressionNoImplicitObjectCall / secondaryExpressionNoImplicitObjectCall callExpression - = fn:memberExpression accesses:callExpressionAccesses? secondaryArgs:("?"? secondaryArgumentList)? { - fn = createMemberExpression fn, accesses if accesses? - if secondaryArgs? - [ soaked, list ] = secondaryArgs + = SUPER accesses:callExpressionAccesses? secondaryArgs:secondaryArgumentList?{ + if accesses + rp(new CS.Super(accesses[0].operands[0])) + else + rp(new CS.Super(secondaryArgs || [] )) + } + / fn:memberExpression accesses:callExpressionAccesses? secondaryArgs:("?"? secondaryArgumentList)? { + fn = createMemberExpression(fn, accesses) if accesses? + if secondaryArgs + soaked = secondaryArgs[0] secondaryCtor = if soaked then CS.SoakedFunctionApplication else CS.FunctionApplication - fn = rp new secondaryCtor fn, list + fn = rp(new secondaryCtor(fn, secondaryArgs[1])) fn } callExpressionAccesses = TERMINDENT as:callExpressionAccesses DEDENT { as } / as:(argumentList / MemberAccessOps)+ bs:callExpressionAccesses? { [as..., (bs ? [])...] } callExpressionNoImplicitObjectCall - = fn:memberExpressionNoImplicitObjectCall accesses:(argumentList / MemberAccessOps)* secondaryArgs:("?"? secondaryArgumentListNoImplicitObjectCall)? { - fn = createMemberExpression fn, accesses if accesses? - if secondaryArgs? - [ soaked, list ] = secondaryArgs + = SUPER accesses:callExpressionAccesses? secondaryArgs:secondaryArgumentList?{ + if accesses + rp(new CS.Super(accesses[0].operands[0])) + else + rp(new CS.Super(secondaryArgs || [] )) + } + / fn:memberExpressionNoImplicitObjectCall accesses:(argumentList / MemberAccessOps)* secondaryArgs:("?"? secondaryArgumentListNoImplicitObjectCall)? { + fn = createMemberExpression(fn, accesses) if accesses? + if secondaryArgs + soaked = secondaryArgs[0] secondaryCtor = if soaked then CS.SoakedFunctionApplication else CS.FunctionApplication - fn = rp new secondaryCtor fn, list + fn = rp(new secondaryCtor(fn, secondaryArgs[1])) fn } @@ -920,6 +932,7 @@ macro / "__TIME__" { rp new CS.String (new Date).toTimeString()[0...8] } / "__DATETIMEMS__" { rp new CS.Int +new Date } / "__COFFEE_VERSION__" { rp new CS.String (require '../package.json').version } + / "__TARGET_ES6__" { rp new CS.Bool !!options.targetES6 } bool @@ -1169,6 +1182,7 @@ UNTIL = $("until" !identifierPart) WHEN = $("when" !identifierPart) WHILE = $("while" !identifierPart) YES = $("yes" !identifierPart) +SUPER = $("super" !identifierPart) SharedKeywords = ("true" / "false" / "null" / "this" / "new" / "delete" / "typeof" / diff --git a/src/helpers.coffee b/src/helpers.coffee index 5498e9d4..e4e5ef9d 100644 --- a/src/helpers.coffee +++ b/src/helpers.coffee @@ -17,7 +17,7 @@ colourise = (colour, str) -> if SUPPORTS_COLOUR then "#{COLOURS[colour]}#{str}\x1B[39m" else str -@numberLines = numberLines = (input, startLine = 1) -> +exports.numberLines = numberLines = (input, startLine = 1) -> lines = input.split '\n' padSize = "#{lines.length + startLine - 1}".length numbered = for line, i in lines @@ -28,21 +28,33 @@ colourise = (colour, str) -> cleanMarkers = (str) -> str.replace /[\uEFEF\uEFFE\uEFFF]/g, '' -@humanReadable = humanReadable = (str) -> +exports.humanReadable = humanReadable = (str) -> ((str.replace /\uEFEF/g, '(INDENT)').replace /\uEFFE/g, '(DEDENT)').replace /\uEFFF/g, '(TERM)' -@formatParserError = (input, e) -> - realColumn = (cleanMarkers "#{(input.split '\n')[e.line - 1]}\n"[...e.column]).length +exports.formatParserError = (input, e) -> + lines = input.split('\n') + line = e.line - 1 # switch to zero-indexed + column = e.column + offset = e.offset + while offset > 0 + if offset > lines[line].length + 1 # these "+1"s are for the trailing "\n" + offset -= lines[line].length + 1 + line += 1 + else + column += offset + offset = 0 + realColumn = (cleanMarkers "#{lines[line]}\n"[...column]).length + line += 1 # switch back to one-indexed unless e.found? - return "Syntax error on line #{e.line}, column #{realColumn}: unexpected end of input" + return "Syntax error on line #{line}, column #{realColumn}: unexpected end of input" found = JSON.stringify humanReadable e.found found = ((found.replace /^"|"$/g, '').replace /'/g, '\\\'').replace /\\"/g, '"' unicode = ((e.found.charCodeAt 0).toString 16).toUpperCase() unicode = "\\u#{"0000"[unicode.length..]}#{unicode}" - message = "Syntax error on line #{e.line}, column #{realColumn}: unexpected '#{found}' (#{unicode})" - "#{message}\n#{pointToErrorLocation input, e.line, realColumn}" + message = "Syntax error on line #{line}, column #{realColumn}: unexpected '#{found}' (#{unicode})" + "#{message}\n#{pointToErrorLocation input, line, realColumn}" -@pointToErrorLocation = pointToErrorLocation = (source, line, column, numLinesOfContext = 3) -> +exports.pointToErrorLocation = pointToErrorLocation = (source, line, column, numLinesOfContext = 3) -> lines = source.split '\n' lines.pop() unless lines[lines.length - 1] # figure out which lines are needed for context @@ -67,7 +79,7 @@ cleanMarkers = (str) -> str.replace /[\uEFEF\uEFFE\uEFFF]/g, '' # these are the identifiers that need to be declared when the given value is # being used as the target of an assignment -@beingDeclared = beingDeclared = (assignment) -> switch +exports.beingDeclared = beingDeclared = (assignment) -> switch when not assignment? then [] when assignment.instanceof CS.Identifiers then [assignment.data] when assignment.instanceof CS.Rest then beingDeclared assignment.expression @@ -77,7 +89,7 @@ cleanMarkers = (str) -> str.replace /[\uEFEF\uEFFE\uEFFF]/g, '' when assignment.instanceof CS.ObjectInitialiser then concatMap assignment.vals(), beingDeclared else throw new Error "beingDeclared: Non-exhaustive patterns in case: #{assignment.className}" -@declarationsFor = (node, inScope) -> +exports.declarationsFor = (node, inScope) -> vars = envEnrichments node, inScope foldl (new CS.Undefined).g(), vars, (expr, v) -> (new CS.AssignOp (new CS.Identifier v).g(), expr).g() @@ -101,7 +113,7 @@ usedAsExpression_ = (ancestors) -> no else yes -@usedAsExpression = usedAsExpression = (node, ancestors) -> +exports.usedAsExpression = usedAsExpression = (node, ancestors) -> usedAsExpression_.call node, ancestors # environment enrichments that occur when this node is evaluated @@ -143,5 +155,5 @@ envEnrichments_ = (inScope = []) -> else envEnrichments this[child], inScope difference possibilities, inScope -@envEnrichments = envEnrichments = (node, args...) -> +exports.envEnrichments = envEnrichments = (node, args...) -> if node? then envEnrichments_.apply node, args else [] diff --git a/src/js-nodes.coffee b/src/js-nodes.coffee index e9df8fd5..32f5d1c8 100644 --- a/src/js-nodes.coffee +++ b/src/js-nodes.coffee @@ -8,7 +8,7 @@ createNode = (type, props) -> type: type childNodes: props -@Nodes = class Nodes +exports.Nodes = class Nodes listMembers: [] instanceof: (ctors...) -> # not a fold for efficiency's sake @@ -17,7 +17,6 @@ createNode = (type, props) -> no toBasicObject: -> obj = {@type} - obj.leadingComments = @leadingComments if @leadingComments? for child in @childNodes if child in @listMembers obj[child] = (p?.toBasicObject() for p in this[child]) @@ -30,18 +29,34 @@ createNode = (type, props) -> @offset if @raw? then @offset + @raw.length else undefined ] - if @raw? then obj.raw = @raw + + for property in ['leadingComments', 'raw', 'expression', 'generator', 'static', 'shorthand'] + if this[property]? && property not in @childNodes + obj[property] = this[property] obj + shallowCopy: -> + c = new (this.constructor) + for k,v of this + if k and (k in @listMembers) + k = k.slice() + c[k] = v + c + nodeData = [ # constructor name, isStatement, construction parameters ['ArrayExpression' , no , ['elements']] + ['ArrayPattern' , no , ['elements']] + ['ArrowFunctionExpression',no, ['params', 'defaults', 'rest', 'body']] ['AssignmentExpression' , no , ['operator', 'left', 'right']] ['BinaryExpression' , no , ['operator', 'left', 'right']] ['BlockStatement' , yes, ['body']] ['BreakStatement' , yes, ['label']] ['CallExpression' , no , ['callee', 'arguments']] ['CatchClause' , yes, ['param', 'body']] + ['ClassBody' , yes, ['body']] + ['ClassDeclaration' , yes, ['id', 'superClass', 'body']] + ['ClassExpression' , no, ['id', 'superClass', 'body']] ['ConditionalExpression', no , ['test', 'consequent', 'alternate']] ['ContinueStatement' , yes, ['label']] ['DebuggerStatement' , yes, []] @@ -49,9 +64,10 @@ nodeData = [ ['EmptyStatement' , yes, []] ['ExpressionStatement' , yes, ['expression']] ['ForInStatement' , yes, ['left', 'right', 'body']] + ['ForOfStatement' , yes, ['left', 'right', 'body']] ['ForStatement' , yes, ['init', 'test', 'update', 'body']] - ['FunctionDeclaration' , yes, ['id', 'params', 'body']] - ['FunctionExpression' , no , ['id', 'params', 'body']] + ['FunctionDeclaration' , yes, ['id', 'params', 'defaults', 'rest', 'body']] + ['FunctionExpression' , no , ['id', 'params', 'defaults', 'rest', 'body']] ['GenSym' , no , ['ns', 'uniqueId']] ['Identifier' , no , ['name']] ['IfStatement' , yes, ['test', 'consequent', 'alternate']] @@ -59,12 +75,16 @@ nodeData = [ ['Literal' , no , ['value']] ['LogicalExpression' , no , ['operator', 'left', 'right']] ['MemberExpression' , no , ['computed', 'object', 'property']] + ['MethodDefinition' , no , ['key', 'value']] ['NewExpression' , no , ['callee', 'arguments']] ['ObjectExpression' , no , ['properties']] + ['ObjectPattern' , no , ['properties']] ['Program' , yes, ['body']] ['Property' , yes, ['key', 'value']] + ['RestElement' , yes, ['argument']] ['ReturnStatement' , yes, ['argument']] ['SequenceExpression' , no , ['expressions']] + ['SpreadElement' , no, ['argument']] ['SwitchCase' , yes, ['test', 'consequent']] ['SwitchStatement' , yes, ['discriminant', 'cases']] ['ThisExpression' , no , []] @@ -76,6 +96,7 @@ nodeData = [ ['VariableDeclarator' , yes, ['id', 'init']] ['WhileStatement' , yes, ['test', 'body']] ['WithStatement' , yes, ['object', 'body']] + ['YieldExpression' , no, ['argument']] ] for [node, isStatement, params] in nodeData @@ -86,11 +107,11 @@ for [node, isStatement, params] in nodeData { Program, BlockStatement, Literal, Identifier, FunctionExpression, - CallExpression, SequenceExpression, ArrayExpression, BinaryExpression, - UnaryExpression, NewExpression, VariableDeclaration, ObjectExpression, + CallExpression, SequenceExpression, ArrayExpression, ArrayPattern, BinaryExpression, + UnaryExpression, NewExpression, VariableDeclaration, ObjectExpression, ObjectPattern, MemberExpression, UpdateExpression, AssignmentExpression, LogicalExpression, GenSym, FunctionDeclaration, VariableDeclaration, SwitchStatement, SwitchCase, - TryStatement + TryStatement, ArrowFunctionExpression, ClassBody } = exports ## Nodes that contain primitive properties @@ -119,12 +140,16 @@ handlePrimitives VariableDeclaration, ['kind'] handleLists = (ctor, listProps) -> ctor::listMembers = listProps handleLists ArrayExpression, ['elements'] +handleLists ArrayPattern, ['elements'] +handleLists ArrowFunctionExpression, ['params', 'defaults'] handleLists BlockStatement, ['body'] handleLists CallExpression, ['arguments'] -handleLists FunctionDeclaration, ['params'] -handleLists FunctionExpression, ['params'] +handleLists ClassBody, ['body'] +handleLists FunctionDeclaration, ['params', 'defaults'] +handleLists FunctionExpression, ['params', 'defaults'] handleLists NewExpression, ['arguments'] handleLists ObjectExpression, ['properties'] +handleLists ObjectPattern, ['properties'] handleLists Program, ['body'] handleLists SequenceExpression, ['expressions'] handleLists SwitchCase, ['consequent'] diff --git a/src/module.coffee b/src/module.coffee index 7a499b16..a2e4c1e2 100644 --- a/src/module.coffee +++ b/src/module.coffee @@ -37,6 +37,7 @@ CoffeeScript = parsed = Parser.parse preprocessed, raw: options.raw inputSource: options.inputSource + targetES6: options.targetES6 if options.optimise then Optimiser.optimise parsed else parsed catch e throw e unless e instanceof Parser.SyntaxError diff --git a/src/preprocessor.coffee b/src/preprocessor.coffee index d08c00a1..0e2f040b 100644 --- a/src/preprocessor.coffee +++ b/src/preprocessor.coffee @@ -6,7 +6,7 @@ StringScanner = require 'StringScanner' # TODO: support win32-style line endings # TODO: now that the preprocessor doesn't support streaming input, optimise the `process` method -@Preprocessor = class Preprocessor +exports.Preprocessor = class Preprocessor ws = '\\t\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000\\uFEFF' INDENT = '\uEFEF' diff --git a/test/classes.coffee b/test/classes.coffee index f3a38792..bfc45fb3 100644 --- a/test/classes.coffee +++ b/test/classes.coffee @@ -4,6 +4,14 @@ suite 'Classes', -> test "Overriding the static property new doesn't clobber Function::new", -> + # This test doesn't work with ES6 classes. In CoffeesScript, + # class properties (like `new` below) are copied from parent + # class to child class. But in ES6 classes, they use real + # prototypical inheritance. So `delete TwoClass.new` doesn't do + # anything, and `TwoClass.new` will continue referring to + # OneClass's `new` via the prototype chain. + return if __TARGET_ES6__ + class OneClass @new: 'new' function: 'function' @@ -20,36 +28,36 @@ suite 'Classes', -> delete Function.prototype.new - test.skip 'basic classes, again, but in the manual prototype style', -> # Currently syntax error. - # - # Base = -> - # Base::func = (string) -> - # 'zero/' + string - # Base::['func-func'] = (string) -> - # "dynamic-#{string}" - # - # FirstChild = -> - # SecondChild = -> - # ThirdChild = -> - # @array = [1, 2, 3] - # this - # - # ThirdChild extends SecondChild extends FirstChild extends Base - # - # FirstChild::func = (string) -> - # super('one/') + string - # - # SecondChild::func = (string) -> - # super('two/') + string - # - # ThirdChild::func = (string) -> - # super('three/') + string - # - # result = (new ThirdChild).func 'four' - # - # ok result is 'zero/one/two/three/four' - # - # ok (new ThirdChild)['func-func']('thing') is 'dynamic-thing' + test 'basic classes, again, but in the manual prototype style', -> + + Base = -> + Base::func = (string) -> + 'zero/' + string + Base::['func-func'] = (string) -> + "dynamic-#{string}" + + FirstChild = -> + SecondChild = -> + ThirdChild = -> + @array = [1, 2, 3] + this + + ThirdChild extends SecondChild extends FirstChild extends Base + + FirstChild::func = (string) -> + super('one/') + string + + SecondChild::func = (string) -> + super('two/') + string + + ThirdChild::func = (string) -> + super('three/') + string + + result = (new ThirdChild).func 'four' + + ok result is 'zero/one/two/three/four' + + ok (new ThirdChild)['func-func']('thing') is 'dynamic-thing' test 'static assignment via colon', -> nonce = {} @@ -468,7 +476,7 @@ suite 'Classes', -> # Ensure that constructors invoked with splats cache the function. called = 0 get = -> if called++ then false else class Type - new get() args... + new (get()) args... test '`new` shouldn\'t add extra parens', -> @@ -484,106 +492,102 @@ suite 'Classes', -> suite 'Inheritance and Super', -> - test.skip 'classes with a four-level inheritance chain', -> # Currently syntax error. - # - # class Base - # func: (string) -> - # "zero/#{string}" - # - # @static: (string) -> - # "static/#{string}" - # - # class FirstChild extends Base - # func: (string) -> - # super('one/') + string - # - # SecondChild = class extends FirstChild - # func: (string) -> - # super('two/') + string - # - # thirdCtor = -> - # @array = [1, 2, 3] - # - # class ThirdChild extends SecondChild - # constructor: -> thirdCtor.call this - # - # # Gratuitous comment for testing. - # func: (string) -> - # super('three/') + string - # - # result = (new ThirdChild).func 'four' - # - # ok result is 'zero/one/two/three/four' - # ok Base.static('word') is 'static/word' - # - # FirstChild::func = (string) -> - # super('one/').length + string - # - # result = (new ThirdChild).func 'four' - # - # ok result is '9two/three/four' - # - # ok (new ThirdChild).array.join(' ') is '1 2 3' + test 'classes with a four-level inheritance chain', -> + class Base + func: (string) -> + "zero/#{string}" - test.skip 'constructors with inheritance and super', -> # Currently syntax error. - # - # identity = (f) -> f - # - # class TopClass - # constructor: (arg) -> - # @prop = 'top-' + arg - # - # class SuperClass extends TopClass - # constructor: (arg) -> - # identity super 'super-' + arg - # - # class SubClass extends SuperClass - # constructor: -> - # identity super 'sub' - # - # ok (new SubClass).prop is 'top-super-sub' + @static: (string) -> + "static/#{string}" - test.skip "super with plain ol' functions as the original constructors", -> # Currently syntax error. - # - # TopClass = (arg) -> - # @prop = 'top-' + arg - # this - # - # SuperClass = (arg) -> - # super 'super-' + arg - # this - # - # SubClass = -> - # super 'sub' - # this - # - # SuperClass extends TopClass - # SubClass extends SuperClass - # - # ok (new SubClass).prop is 'top-super-sub' + class FirstChild extends Base + func: (string) -> + super('one/') + string - test.skip 'super() calls in constructors of classes that are defined as object properties', -> # Currently syntax error. - # - # class Hive - # constructor: (name) -> @name = name - # - # class Hive.Bee extends Hive - # constructor: (name) -> super - # - # maya = new Hive.Bee 'Maya' - # ok maya.name is 'Maya' + SecondChild = class extends FirstChild + func: (string) -> + super('two/') + string - test.skip 'calling super and passing along all arguments', -> # Currently syntax error. - # - # class Parent - # method: (args...) -> @args = args - # - # class Child extends Parent - # method: -> super - # - # c = new Child - # c.method 1, 2, 3, 4 - # ok c.args.join(' ') is '1 2 3 4' + thirdCtor = -> + @array = [1, 2, 3] + + class ThirdChild extends SecondChild + constructor: -> thirdCtor.call this + + # Gratuitous comment for testing. + func: (string) -> + super('three/') + string + + result = (new ThirdChild).func 'four' + + ok result is 'zero/one/two/three/four' + ok Base.static('word') is 'static/word' + + FirstChild::func = (string) -> + if __TARGET_ES6__ + # you cannot use 'super' outside of the class definition in ES6. + Base.prototype.func.call(this, 'one/').length + string + else + super('one/').length + string + + result = (new ThirdChild).func 'four' + # eq result, '9two/three/four' # can't pass super('one/').length + string + # ok (new ThirdChild).array.join(' ') is '1 2 3' + + test 'constructors with inheritance and super', -> + identity = (f) -> f + + class TopClass + constructor: (arg) -> + @prop = 'top-' + arg + + class SuperClass extends TopClass + constructor: (arg) -> + identity super 'super-' + arg + + class SubClass extends SuperClass + constructor: -> + identity super 'sub' + + ok (new SubClass).prop is 'top-super-sub' + + test "super with plain ol' functions as the original constructors", -> + TopClass = -> + TopClass::func = (arg) -> + 'top-' + arg + + SuperClass = -> + SuperClass extends TopClass + SuperClass::func = (arg) -> + super 'super-' + arg + + SubClass = -> + SubClass extends SuperClass + SubClass::func = -> + super 'sub' + + eq (new SubClass).func(), 'top-super-sub' + + test 'super() calls in constructors of classes that are defined as object properties', -> + class Hive + constructor: (name) -> @name = name + + class Hive.Bee extends Hive + constructor: (name) -> super + + maya = new Hive.Bee 'Maya' + ok maya.name is 'Maya' + + test 'calling super and passing along all arguments', -> + class Parent + method: (args...) -> @args = args + + class Child extends Parent + method: -> super + + c = new Child + c.method 1, 2, 3, 4 + ok c.args.join(' ') is '1 2 3 4' test.skip '`class extends this`', -> # Currently syntax error. # @@ -623,19 +627,19 @@ suite 'Classes', -> class B extends id A eq nonce, (new B).nonce - test.skip 'jashkenas/coffee-script#1598: super works for static methods too', -> # Currently syntax error. - # - # class Parent - # method: -> - # 'NO' - # @method: -> - # 'yes' - # - # class Child extends Parent - # @method: -> - # 'pass? ' + super - # - # eq Child.method(), 'pass? yes' + test 'jashkenas/coffee-script#1598: super works for static methods too', -> + + class Parent + method: -> + 'NO' + @method: -> + 'yes' + + class Child extends Parent + @method: -> + 'pass? ' + super + + eq Child.method(), 'pass? yes' test 'jashkenas/coffee-script#1876: Class @A extends A', -> class A diff --git a/test/function-invocation.coffee b/test/function-invocation.coffee index fd83c26d..42f166a7 100644 --- a/test/function-invocation.coffee +++ b/test/function-invocation.coffee @@ -241,7 +241,13 @@ suite 'Function Invocation', -> ok (func --val) is 5 test "jashkenas/coffee-script#855: execution context for `func arr...` should be `null`", -> - contextTest = -> eq this, if window? then window else global + isStrictMode = (-> this == undefined)() + + contextTest = -> + if isStrictMode + ok(not this?) + else + eq this, if window? then window else global array = [] contextTest array contextTest.apply null, array diff --git a/test/functions.coffee b/test/functions.coffee index 5564d8d9..2411bf08 100644 --- a/test/functions.coffee +++ b/test/functions.coffee @@ -139,7 +139,14 @@ suite 'Function Literals', -> eq nonceA, a(0) eq nonceB, a(0,0,nonceB) eq nonceA, a(0,0,undefined) - eq nonceA, a(0,0,null) + if __TARGET_ES6__ + # Deliberate semantic difference: ES6 default parameters take + # their default value only when their given value is + # undefined. Null is allowed to override the default + # value. + eq null, a(0,0,null) + else + eq nonceA, a(0,0,null) eq false , a(0,0,false) eq nonceB, a(undefined,undefined,nonceB,undefined) b = (_,arg=nonceA,_1,_2) -> arg @@ -147,7 +154,11 @@ suite 'Function Literals', -> eq nonceA, b(0) eq nonceB, b(0,nonceB) eq nonceA, b(0,undefined) - eq nonceA, b(0,null) + if __TARGET_ES6__ + # See above comment + eq null, b(0,null) + else + eq nonceA, b(0,null) eq false , b(0,false) eq nonceB, b(undefined,nonceB,undefined) c = (arg=nonceA,_,_1) -> arg @@ -155,7 +166,11 @@ suite 'Function Literals', -> eq 0, c(0) eq nonceB, c(nonceB) eq nonceA, c(undefined) - eq nonceA, c(null) + if __TARGET_ES6__ + # See above comment + eq null, c(null) + else + eq nonceA, c(null) eq false , c(false) eq nonceB, c(nonceB,undefined,undefined)