ohm-js 17.0.1 → 17.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ohm.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ohm.cjs","sources":["../src/common.js","../third_party/UnicodeCategories.js","../src/pexprs-main.js","../src/errors.js","../src/util.js","../src/Interval.js","../src/InputStream.js","../src/MatchResult.js","../src/PosInfo.js","../src/Trace.js","../src/pexprs-allowsSkippingPrecedingSpace.js","../src/pexprs-assertAllApplicationsAreValid.js","../src/pexprs-assertChoicesHaveUniformArity.js","../src/pexprs-assertIteratedExprsAreNotNullable.js","../src/nodes.js","../src/pexprs-eval.js","../src/pexprs-getArity.js","../src/pexprs-outputRecipe.js","../src/pexprs-introduceParams.js","../src/pexprs-isNullable.js","../src/pexprs-substituteParams.js","../src/pexprs-toArgumentNameList.js","../src/pexprs-toDisplayString.js","../src/Failure.js","../src/pexprs-toFailure.js","../src/pexprs-toString.js","../src/CaseInsensitiveTerminal.js","../src/pexprs.js","../src/MatchState.js","../src/Matcher.js","../src/Semantics.js","../src/Grammar.js","../src/GrammarDecl.js","../src/Builder.js","../src/makeRecipe.js","built-in-rules.js","../src/main-kernel.js","ohm-grammar.js","../src/buildGrammar.js","operations-and-attributes.js","../src/semanticsDeferredInit.js","../src/findIndentation.js","../src/IndentationSensitive.js","../src/version.js","../src/main.js"],"sourcesContent":["// --------------------------------------------------------------------\n// Private Stuff\n// --------------------------------------------------------------------\n\n// Helpers\n\nconst escapeStringFor = {};\nfor (let c = 0; c < 128; c++) {\n escapeStringFor[c] = String.fromCharCode(c);\n}\nescapeStringFor[\"'\".charCodeAt(0)] = \"\\\\'\";\nescapeStringFor['\"'.charCodeAt(0)] = '\\\\\"';\nescapeStringFor['\\\\'.charCodeAt(0)] = '\\\\\\\\';\nescapeStringFor['\\b'.charCodeAt(0)] = '\\\\b';\nescapeStringFor['\\f'.charCodeAt(0)] = '\\\\f';\nescapeStringFor['\\n'.charCodeAt(0)] = '\\\\n';\nescapeStringFor['\\r'.charCodeAt(0)] = '\\\\r';\nescapeStringFor['\\t'.charCodeAt(0)] = '\\\\t';\nescapeStringFor['\\u000b'.charCodeAt(0)] = '\\\\v';\n\n// --------------------------------------------------------------------\n// Exports\n// --------------------------------------------------------------------\n\nexport function abstract(optMethodName) {\n const methodName = optMethodName || '';\n return function() {\n throw new Error(\n 'this method ' +\n methodName +\n ' is abstract! ' +\n '(it has no implementation in class ' +\n this.constructor.name +\n ')',\n );\n };\n}\n\nexport function assert(cond, message) {\n if (!cond) {\n throw new Error(message || 'Assertion failed');\n }\n}\n\n// Define a lazily-computed, non-enumerable property named `propName`\n// on the object `obj`. `getterFn` will be called to compute the value the\n// first time the property is accessed.\nexport function defineLazyProperty(obj, propName, getterFn) {\n let memo;\n Object.defineProperty(obj, propName, {\n get() {\n if (!memo) {\n memo = getterFn.call(this);\n }\n return memo;\n },\n });\n}\n\nexport function clone(obj) {\n if (obj) {\n return Object.assign({}, obj);\n }\n return obj;\n}\n\nexport function repeatFn(fn, n) {\n const arr = [];\n while (n-- > 0) {\n arr.push(fn());\n }\n return arr;\n}\n\nexport function repeatStr(str, n) {\n return new Array(n + 1).join(str);\n}\n\nexport function repeat(x, n) {\n return repeatFn(() => x, n);\n}\n\nexport function getDuplicates(array) {\n const duplicates = [];\n for (let idx = 0; idx < array.length; idx++) {\n const x = array[idx];\n if (array.lastIndexOf(x) !== idx && duplicates.indexOf(x) < 0) {\n duplicates.push(x);\n }\n }\n return duplicates;\n}\n\nexport function copyWithoutDuplicates(array) {\n const noDuplicates = [];\n array.forEach(entry => {\n if (noDuplicates.indexOf(entry) < 0) {\n noDuplicates.push(entry);\n }\n });\n return noDuplicates;\n}\n\nexport function isSyntactic(ruleName) {\n const firstChar = ruleName[0];\n return firstChar === firstChar.toUpperCase();\n}\n\nexport function isLexical(ruleName) {\n return !isSyntactic(ruleName);\n}\n\nexport function padLeft(str, len, optChar) {\n const ch = optChar || ' ';\n if (str.length < len) {\n return repeatStr(ch, len - str.length) + str;\n }\n return str;\n}\n\n// StringBuffer\n\nexport function StringBuffer() {\n this.strings = [];\n}\n\nStringBuffer.prototype.append = function(str) {\n this.strings.push(str);\n};\n\nStringBuffer.prototype.contents = function() {\n return this.strings.join('');\n};\n\nconst escapeUnicode = str => String.fromCodePoint(parseInt(str, 16));\n\nexport function unescapeCodePoint(s) {\n if (s.charAt(0) === '\\\\') {\n switch (s.charAt(1)) {\n case 'b':\n return '\\b';\n case 'f':\n return '\\f';\n case 'n':\n return '\\n';\n case 'r':\n return '\\r';\n case 't':\n return '\\t';\n case 'v':\n return '\\v';\n case 'x':\n return escapeUnicode(s.slice(2, 4));\n case 'u':\n return s.charAt(2) === '{' ?\n escapeUnicode(s.slice(3, -1)) :\n escapeUnicode(s.slice(2, 6));\n default:\n return s.charAt(1);\n }\n } else {\n return s;\n }\n}\n\n// Helper for producing a description of an unknown object in a safe way.\n// Especially useful for error messages where an unexpected type of object was encountered.\nexport function unexpectedObjToString(obj) {\n if (obj == null) {\n return String(obj);\n }\n const baseToString = Object.prototype.toString.call(obj);\n try {\n let typeName;\n if (obj.constructor && obj.constructor.name) {\n typeName = obj.constructor.name;\n } else if (baseToString.indexOf('[object ') === 0) {\n typeName = baseToString.slice(8, -1); // Extract e.g. \"Array\" from \"[object Array]\".\n } else {\n typeName = typeof obj;\n }\n return typeName + ': ' + JSON.stringify(String(obj));\n } catch (e) {\n return baseToString;\n }\n}\n","// Based on https://github.com/mathiasbynens/unicode-9.0.0.\n// These are just categories that are used in ES5/ES2015.\n// The full list of Unicode categories is here: http://www.fileformat.info/info/unicode/category/index.htm.\nexport const UnicodeCategories = {\n // Letters\n Lu: /\\p{Lu}/u,\n Ll: /\\p{Ll}/u,\n Lt: /\\p{Lt}/u,\n Lm: /\\p{Lm}/u,\n Lo: /\\p{Lo}/u,\n\n // Numbers\n Nl: /\\p{Nl}/u,\n Nd: /\\p{Nd}/u,\n\n // Marks\n Mn: /\\p{Mn}/u,\n Mc: /\\p{Mc}/u,\n\n // Punctuation, Connector\n Pc: /\\p{Pc}/u,\n\n // Separator, Space\n Zs: /\\p{Zs}/u,\n\n // These two are not real Unicode categories, but our useful for Ohm.\n // L is a combination of all the letter categories.\n // Ltmo is a combination of Lt, Lm, and Lo.\n L: /\\p{Letter}/u,\n Ltmo: /\\p{Lt}|\\p{Lm}|\\p{Lo}/u,\n};\n","import {UnicodeCategories} from '../third_party/UnicodeCategories.js';\nimport * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n// General stuff\n\nexport class PExpr {\n constructor() {\n if (this.constructor === PExpr) {\n throw new Error(\"PExpr cannot be instantiated -- it's abstract\");\n }\n }\n\n // Set the `source` property to the interval containing the source for this expression.\n withSource(interval) {\n if (interval) {\n this.source = interval.trimmed();\n }\n return this;\n }\n}\n\n// Any\n\nexport const any = Object.create(PExpr.prototype);\n\n// End\n\nexport const end = Object.create(PExpr.prototype);\n\n// Terminals\n\nexport class Terminal extends PExpr {\n constructor(obj) {\n super();\n this.obj = obj;\n }\n}\n\n// Ranges\n\nexport class Range extends PExpr {\n constructor(from, to) {\n super();\n this.from = from;\n this.to = to;\n // If either `from` or `to` is made up of multiple code units, then\n // the range should consume a full code point, not a single code unit.\n this.matchCodePoint = from.length > 1 || to.length > 1;\n }\n}\n\n// Parameters\n\nexport class Param extends PExpr {\n constructor(index) {\n super();\n this.index = index;\n }\n}\n\n// Alternation\n\nexport class Alt extends PExpr {\n constructor(terms) {\n super();\n this.terms = terms;\n }\n}\n\n// Extend is an implementation detail of rule extension\n\nexport class Extend extends Alt {\n constructor(superGrammar, name, body) {\n const origBody = superGrammar.rules[name].body;\n super([body, origBody]);\n\n this.superGrammar = superGrammar;\n this.name = name;\n this.body = body;\n }\n}\n\n// Splice is an implementation detail of rule overriding with the `...` operator.\nexport class Splice extends Alt {\n constructor(superGrammar, ruleName, beforeTerms, afterTerms) {\n const origBody = superGrammar.rules[ruleName].body;\n super([...beforeTerms, origBody, ...afterTerms]);\n\n this.superGrammar = superGrammar;\n this.ruleName = ruleName;\n this.expansionPos = beforeTerms.length;\n }\n}\n\n// Sequences\n\nexport class Seq extends PExpr {\n constructor(factors) {\n super();\n this.factors = factors;\n }\n}\n\n// Iterators and optionals\n\nexport class Iter extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\nexport class Star extends Iter {}\nexport class Plus extends Iter {}\nexport class Opt extends Iter {}\n\nStar.prototype.operator = '*';\nPlus.prototype.operator = '+';\nOpt.prototype.operator = '?';\n\nStar.prototype.minNumMatches = 0;\nPlus.prototype.minNumMatches = 1;\nOpt.prototype.minNumMatches = 0;\n\nStar.prototype.maxNumMatches = Number.POSITIVE_INFINITY;\nPlus.prototype.maxNumMatches = Number.POSITIVE_INFINITY;\nOpt.prototype.maxNumMatches = 1;\n\n// Predicates\n\nexport class Not extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\nexport class Lookahead extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\n// \"Lexification\"\n\nexport class Lex extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\n// Rule application\n\nexport class Apply extends PExpr {\n constructor(ruleName, args = []) {\n super();\n this.ruleName = ruleName;\n this.args = args;\n }\n\n isSyntactic() {\n return common.isSyntactic(this.ruleName);\n }\n\n // This method just caches the result of `this.toString()` in a non-enumerable property.\n toMemoKey() {\n if (!this._memoKey) {\n Object.defineProperty(this, '_memoKey', {value: this.toString()});\n }\n return this._memoKey;\n }\n}\n\n// Unicode character\n\nexport class UnicodeChar extends PExpr {\n constructor(category) {\n super();\n this.category = category;\n this.pattern = UnicodeCategories[category];\n }\n}\n","import {assert} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport function createError(message, optInterval) {\n let e;\n if (optInterval) {\n e = new Error(optInterval.getLineAndColumnMessage() + message);\n e.shortMessage = message;\n e.interval = optInterval;\n } else {\n e = new Error(message);\n }\n return e;\n}\n\n// ----------------- errors about intervals -----------------\n\nexport function intervalSourcesDontMatch() {\n return createError(\"Interval sources don't match\");\n}\n\n// ----------------- errors about grammars -----------------\n\n// Grammar syntax error\n\nexport function grammarSyntaxError(matchFailure) {\n const e = new Error();\n Object.defineProperty(e, 'message', {\n enumerable: true,\n get() {\n return matchFailure.message;\n },\n });\n Object.defineProperty(e, 'shortMessage', {\n enumerable: true,\n get() {\n return 'Expected ' + matchFailure.getExpectedText();\n },\n });\n e.interval = matchFailure.getInterval();\n return e;\n}\n\n// Undeclared grammar\n\nexport function undeclaredGrammar(grammarName, namespace, interval) {\n const message = namespace ?\n `Grammar ${grammarName} is not declared in namespace '${namespace}'` :\n 'Undeclared grammar ' + grammarName;\n return createError(message, interval);\n}\n\n// Duplicate grammar declaration\n\nexport function duplicateGrammarDeclaration(grammar, namespace) {\n return createError('Grammar ' + grammar.name + ' is already declared in this namespace');\n}\n\nexport function grammarDoesNotSupportIncrementalParsing(grammar) {\n return createError(`Grammar '${grammar.name}' does not support incremental parsing`);\n}\n\n// ----------------- rules -----------------\n\n// Undeclared rule\n\nexport function undeclaredRule(ruleName, grammarName, optInterval) {\n return createError(\n 'Rule ' + ruleName + ' is not declared in grammar ' + grammarName,\n optInterval,\n );\n}\n\n// Cannot override undeclared rule\n\nexport function cannotOverrideUndeclaredRule(ruleName, grammarName, optSource) {\n return createError(\n 'Cannot override rule ' + ruleName + ' because it is not declared in ' + grammarName,\n optSource,\n );\n}\n\n// Cannot extend undeclared rule\n\nexport function cannotExtendUndeclaredRule(ruleName, grammarName, optSource) {\n return createError(\n 'Cannot extend rule ' + ruleName + ' because it is not declared in ' + grammarName,\n optSource,\n );\n}\n\n// Duplicate rule declaration\n\nexport function duplicateRuleDeclaration(ruleName, grammarName, declGrammarName, optSource) {\n let message =\n \"Duplicate declaration for rule '\" + ruleName + \"' in grammar '\" + grammarName + \"'\";\n if (grammarName !== declGrammarName) {\n message += \" (originally declared in '\" + declGrammarName + \"')\";\n }\n return createError(message, optSource);\n}\n\n// Wrong number of parameters\n\nexport function wrongNumberOfParameters(ruleName, expected, actual, source) {\n return createError(\n 'Wrong number of parameters for rule ' +\n ruleName +\n ' (expected ' +\n expected +\n ', got ' +\n actual +\n ')',\n source,\n );\n}\n\n// Wrong number of arguments\n\nexport function wrongNumberOfArguments(ruleName, expected, actual, expr) {\n return createError(\n 'Wrong number of arguments for rule ' +\n ruleName +\n ' (expected ' +\n expected +\n ', got ' +\n actual +\n ')',\n expr,\n );\n}\n\n// Duplicate parameter names\n\nexport function duplicateParameterNames(ruleName, duplicates, source) {\n return createError(\n 'Duplicate parameter names in rule ' + ruleName + ': ' + duplicates.join(', '),\n source,\n );\n}\n\n// Invalid parameter expression\n\nexport function invalidParameter(ruleName, expr) {\n return createError(\n 'Invalid parameter to rule ' +\n ruleName +\n ': ' +\n expr +\n ' has arity ' +\n expr.getArity() +\n ', but parameter expressions must have arity 1',\n expr.source,\n );\n}\n\n// Application of syntactic rule from lexical rule\n\nconst syntacticVsLexicalNote =\n 'NOTE: A _syntactic rule_ is a rule whose name begins with a capital letter. ' +\n 'See https://ohmjs.org/d/svl for more details.';\n\nexport function applicationOfSyntacticRuleFromLexicalContext(ruleName, applyExpr) {\n return createError(\n 'Cannot apply syntactic rule ' + ruleName + ' from here (inside a lexical context)',\n applyExpr.source,\n );\n}\n\n// Lexical rule application used with applySyntactic\n\nexport function applySyntacticWithLexicalRuleApplication(applyExpr) {\n const {ruleName} = applyExpr;\n return createError(\n `applySyntactic is for syntactic rules, but '${ruleName}' is a lexical rule. ` +\n syntacticVsLexicalNote,\n applyExpr.source,\n );\n}\n\n// Application of applySyntactic in a syntactic context\n\nexport function unnecessaryExperimentalApplySyntactic(applyExpr) {\n return createError(\n 'applySyntactic is not required here (in a syntactic context)',\n applyExpr.source,\n );\n}\n\n// Incorrect argument type\n\nexport function incorrectArgumentType(expectedType, expr) {\n return createError('Incorrect argument type: expected ' + expectedType, expr.source);\n}\n\n// Multiple instances of the super-splice operator (`...`) in the rule body.\n\nexport function multipleSuperSplices(expr) {\n return createError(\"'...' can appear at most once in a rule body\", expr.source);\n}\n\n// Unicode code point escapes\n\nexport function invalidCodePoint(applyWrapper) {\n const node = applyWrapper._node;\n assert(node && node.isNonterminal() && node.ctorName === 'escapeChar_unicodeCodePoint');\n\n // Get an interval that covers all of the hex digits.\n const digitIntervals = applyWrapper.children.slice(1, -1).map(d => d.source);\n const fullInterval = digitIntervals[0].coverageWith(...digitIntervals.slice(1));\n return createError(\n `U+${fullInterval.contents} is not a valid Unicode code point`,\n fullInterval,\n );\n}\n\n// ----------------- Kleene operators -----------------\n\nexport function kleeneExprHasNullableOperand(kleeneExpr, applicationStack) {\n const actuals =\n applicationStack.length > 0 ? applicationStack[applicationStack.length - 1].args : [];\n const expr = kleeneExpr.expr.substituteParams(actuals);\n let message =\n 'Nullable expression ' +\n expr +\n \" is not allowed inside '\" +\n kleeneExpr.operator +\n \"' (possible infinite loop)\";\n if (applicationStack.length > 0) {\n const stackTrace = applicationStack\n .map(app => new pexprs.Apply(app.ruleName, app.args))\n .join('\\n');\n message += '\\nApplication stack (most recent application last):\\n' + stackTrace;\n }\n return createError(message, kleeneExpr.expr.source);\n}\n\n// ----------------- arity -----------------\n\nexport function inconsistentArity(ruleName, expected, actual, expr) {\n return createError(\n 'Rule ' +\n ruleName +\n ' involves an alternation which has inconsistent arity ' +\n '(expected ' +\n expected +\n ', got ' +\n actual +\n ')',\n expr.source,\n );\n}\n\n// ----------------- properties -----------------\n\nexport function duplicatePropertyNames(duplicates) {\n return createError('Object pattern has duplicate property names: ' + duplicates.join(', '));\n}\n\n// ----------------- constructors -----------------\n\nexport function invalidConstructorCall(grammar, ctorName, children) {\n return createError(\n 'Attempt to invoke constructor ' + ctorName + ' with invalid or unexpected arguments',\n );\n}\n\n// ----------------- convenience -----------------\n\nexport function multipleErrors(errors) {\n const messages = errors.map(e => e.message);\n return createError(['Errors:'].concat(messages).join('\\n- '), errors[0].interval);\n}\n\n// ----------------- semantic -----------------\n\nexport function missingSemanticAction(ctorName, name, type, stack) {\n let stackTrace = stack\n .slice(0, -1)\n .map(info => {\n const ans = ' ' + info[0].name + ' > ' + info[1];\n return info.length === 3 ? ans + \" for '\" + info[2] + \"'\" : ans;\n })\n .join('\\n');\n stackTrace += '\\n ' + name + ' > ' + ctorName;\n\n let moreInfo = '';\n if (ctorName === '_iter') {\n moreInfo = [\n '\\nNOTE: as of Ohm v16, there is no default action for iteration nodes — see ',\n ' https://ohmjs.org/d/dsa for details.',\n ].join('\\n');\n }\n\n const message = [\n `Missing semantic action for '${ctorName}' in ${type} '${name}'.${moreInfo}`,\n 'Action stack (most recent call last):',\n stackTrace,\n ].join('\\n');\n\n const e = createError(message);\n e.name = 'missingSemanticAction';\n return e;\n}\n\nexport function throwErrors(errors) {\n if (errors.length === 1) {\n throw errors[0];\n }\n if (errors.length > 1) {\n throw multipleErrors(errors);\n }\n}\n","import * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n// Given an array of numbers `arr`, return an array of the numbers as strings,\n// right-justified and padded to the same length.\nfunction padNumbersToEqualLength(arr) {\n let maxLen = 0;\n const strings = arr.map(n => {\n const str = n.toString();\n maxLen = Math.max(maxLen, str.length);\n return str;\n });\n return strings.map(s => common.padLeft(s, maxLen));\n}\n\n// Produce a new string that would be the result of copying the contents\n// of the string `src` onto `dest` at offset `offest`.\nfunction strcpy(dest, src, offset) {\n const origDestLen = dest.length;\n const start = dest.slice(0, offset);\n const end = dest.slice(offset + src.length);\n return (start + src + end).substr(0, origDestLen);\n}\n\n// Casts the underlying lineAndCol object to a formatted message string,\n// highlighting `ranges`.\nfunction lineAndColumnToMessage(...ranges) {\n const lineAndCol = this;\n const {offset} = lineAndCol;\n const {repeatStr} = common;\n\n const sb = new common.StringBuffer();\n sb.append('Line ' + lineAndCol.lineNum + ', col ' + lineAndCol.colNum + ':\\n');\n\n // An array of the previous, current, and next line numbers as strings of equal length.\n const lineNumbers = padNumbersToEqualLength([\n lineAndCol.prevLine == null ? 0 : lineAndCol.lineNum - 1,\n lineAndCol.lineNum,\n lineAndCol.nextLine == null ? 0 : lineAndCol.lineNum + 1,\n ]);\n\n // Helper for appending formatting input lines to the buffer.\n const appendLine = (num, content, prefix) => {\n sb.append(prefix + lineNumbers[num] + ' | ' + content + '\\n');\n };\n\n // Include the previous line for context if possible.\n if (lineAndCol.prevLine != null) {\n appendLine(0, lineAndCol.prevLine, ' ');\n }\n // Line that the error occurred on.\n appendLine(1, lineAndCol.line, '> ');\n\n // Build up the line that points to the offset and possible indicates one or more ranges.\n // Start with a blank line, and indicate each range by overlaying a string of `~` chars.\n const lineLen = lineAndCol.line.length;\n let indicationLine = repeatStr(' ', lineLen + 1);\n for (let i = 0; i < ranges.length; ++i) {\n let startIdx = ranges[i][0];\n let endIdx = ranges[i][1];\n common.assert(startIdx >= 0 && startIdx <= endIdx, 'range start must be >= 0 and <= end');\n\n const lineStartOffset = offset - lineAndCol.colNum + 1;\n startIdx = Math.max(0, startIdx - lineStartOffset);\n endIdx = Math.min(endIdx - lineStartOffset, lineLen);\n\n indicationLine = strcpy(indicationLine, repeatStr('~', endIdx - startIdx), startIdx);\n }\n const gutterWidth = 2 + lineNumbers[1].length + 3;\n sb.append(repeatStr(' ', gutterWidth));\n indicationLine = strcpy(indicationLine, '^', lineAndCol.colNum - 1);\n sb.append(indicationLine.replace(/ +$/, '') + '\\n');\n\n // Include the next line for context if possible.\n if (lineAndCol.nextLine != null) {\n appendLine(2, lineAndCol.nextLine, ' ');\n }\n return sb.contents();\n}\n\n// --------------------------------------------------------------------\n// Exports\n// --------------------------------------------------------------------\n\nlet builtInRulesCallbacks = [];\n\n// Since Grammar.BuiltInRules is bootstrapped, most of Ohm can't directly depend it.\n// This function allows modules that do depend on the built-in rules to register a callback\n// that will be called later in the initialization process.\nexport function awaitBuiltInRules(cb) {\n builtInRulesCallbacks.push(cb);\n}\n\nexport function announceBuiltInRules(grammar) {\n builtInRulesCallbacks.forEach(cb => {\n cb(grammar);\n });\n builtInRulesCallbacks = null;\n}\n\n// Return an object with the line and column information for the given\n// offset in `str`.\nexport function getLineAndColumn(str, offset) {\n let lineNum = 1;\n let colNum = 1;\n\n let currOffset = 0;\n let lineStartOffset = 0;\n\n let nextLine = null;\n let prevLine = null;\n let prevLineStartOffset = -1;\n\n while (currOffset < offset) {\n const c = str.charAt(currOffset++);\n if (c === '\\n') {\n lineNum++;\n colNum = 1;\n prevLineStartOffset = lineStartOffset;\n lineStartOffset = currOffset;\n } else if (c !== '\\r') {\n colNum++;\n }\n }\n\n // Find the end of the target line.\n let lineEndOffset = str.indexOf('\\n', lineStartOffset);\n if (lineEndOffset === -1) {\n lineEndOffset = str.length;\n } else {\n // Get the next line.\n const nextLineEndOffset = str.indexOf('\\n', lineEndOffset + 1);\n nextLine =\n nextLineEndOffset === -1 ?\n str.slice(lineEndOffset) :\n str.slice(lineEndOffset, nextLineEndOffset);\n // Strip leading and trailing EOL char(s).\n nextLine = nextLine.replace(/^\\r?\\n/, '').replace(/\\r$/, '');\n }\n\n // Get the previous line.\n if (prevLineStartOffset >= 0) {\n // Strip trailing EOL char(s).\n prevLine = str.slice(prevLineStartOffset, lineStartOffset).replace(/\\r?\\n$/, '');\n }\n\n // Get the target line, stripping a trailing carriage return if necessary.\n const line = str.slice(lineStartOffset, lineEndOffset).replace(/\\r$/, '');\n\n return {\n offset,\n lineNum,\n colNum,\n line,\n prevLine,\n nextLine,\n toString: lineAndColumnToMessage,\n };\n}\n\n// Return a nicely-formatted string describing the line and column for the\n// given offset in `str` highlighting `ranges`.\nexport function getLineAndColumnMessage(str, offset, ...ranges) {\n return getLineAndColumn(str, offset).toString(...ranges);\n}\n\nexport const uniqueId = (() => {\n let idCounter = 0;\n return prefix => '' + prefix + idCounter++;\n})();\n","import {assert} from './common.js';\nimport * as errors from './errors.js';\nimport * as util from './util.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class Interval {\n constructor(sourceString, startIdx, endIdx) {\n this.sourceString = sourceString;\n this.startIdx = startIdx;\n this.endIdx = endIdx;\n }\n\n get contents() {\n if (this._contents === undefined) {\n this._contents = this.sourceString.slice(this.startIdx, this.endIdx);\n }\n return this._contents;\n }\n\n get length() {\n return this.endIdx - this.startIdx;\n }\n\n coverageWith(...intervals) {\n return Interval.coverage(...intervals, this);\n }\n\n collapsedLeft() {\n return new Interval(this.sourceString, this.startIdx, this.startIdx);\n }\n\n collapsedRight() {\n return new Interval(this.sourceString, this.endIdx, this.endIdx);\n }\n\n getLineAndColumn() {\n return util.getLineAndColumn(this.sourceString, this.startIdx);\n }\n\n getLineAndColumnMessage() {\n const range = [this.startIdx, this.endIdx];\n return util.getLineAndColumnMessage(this.sourceString, this.startIdx, range);\n }\n\n // Returns an array of 0, 1, or 2 intervals that represents the result of the\n // interval difference operation.\n minus(that) {\n if (this.sourceString !== that.sourceString) {\n throw errors.intervalSourcesDontMatch();\n } else if (this.startIdx === that.startIdx && this.endIdx === that.endIdx) {\n // `this` and `that` are the same interval!\n return [];\n } else if (this.startIdx < that.startIdx && that.endIdx < this.endIdx) {\n // `that` splits `this` into two intervals\n return [\n new Interval(this.sourceString, this.startIdx, that.startIdx),\n new Interval(this.sourceString, that.endIdx, this.endIdx),\n ];\n } else if (this.startIdx < that.endIdx && that.endIdx < this.endIdx) {\n // `that` contains a prefix of `this`\n return [new Interval(this.sourceString, that.endIdx, this.endIdx)];\n } else if (this.startIdx < that.startIdx && that.startIdx < this.endIdx) {\n // `that` contains a suffix of `this`\n return [new Interval(this.sourceString, this.startIdx, that.startIdx)];\n } else {\n // `that` and `this` do not overlap\n return [this];\n }\n }\n\n // Returns a new Interval that has the same extent as this one, but which is relative\n // to `that`, an Interval that fully covers this one.\n relativeTo(that) {\n if (this.sourceString !== that.sourceString) {\n throw errors.intervalSourcesDontMatch();\n }\n assert(\n this.startIdx >= that.startIdx && this.endIdx <= that.endIdx,\n 'other interval does not cover this one',\n );\n return new Interval(\n this.sourceString,\n this.startIdx - that.startIdx,\n this.endIdx - that.startIdx,\n );\n }\n\n // Returns a new Interval which contains the same contents as this one,\n // but with whitespace trimmed from both ends.\n trimmed() {\n const {contents} = this;\n const startIdx = this.startIdx + contents.match(/^\\s*/)[0].length;\n const endIdx = this.endIdx - contents.match(/\\s*$/)[0].length;\n return new Interval(this.sourceString, startIdx, endIdx);\n }\n\n subInterval(offset, len) {\n const newStartIdx = this.startIdx + offset;\n return new Interval(this.sourceString, newStartIdx, newStartIdx + len);\n }\n}\n\nInterval.coverage = function(firstInterval, ...intervals) {\n let {startIdx, endIdx} = firstInterval;\n for (const interval of intervals) {\n if (interval.sourceString !== firstInterval.sourceString) {\n throw errors.intervalSourcesDontMatch();\n } else {\n startIdx = Math.min(startIdx, interval.startIdx);\n endIdx = Math.max(endIdx, interval.endIdx);\n }\n }\n return new Interval(firstInterval.sourceString, startIdx, endIdx);\n};\n","import {Interval} from './Interval.js';\n\nconst MAX_CHAR_CODE = 0xffff;\n\nexport class InputStream {\n constructor(source) {\n this.source = source;\n this.pos = 0;\n this.examinedLength = 0;\n }\n\n atEnd() {\n const ans = this.pos >= this.source.length;\n this.examinedLength = Math.max(this.examinedLength, this.pos + 1);\n return ans;\n }\n\n next() {\n const ans = this.source[this.pos++];\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return ans;\n }\n\n nextCharCode() {\n const nextChar = this.next();\n return nextChar && nextChar.charCodeAt(0);\n }\n\n nextCodePoint() {\n const cp = this.source.slice(this.pos++).codePointAt(0);\n // If the code point is beyond plane 0, it takes up two characters.\n if (cp > MAX_CHAR_CODE) {\n this.pos += 1;\n }\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return cp;\n }\n\n matchString(s, optIgnoreCase) {\n let idx;\n if (optIgnoreCase) {\n /*\n Case-insensitive comparison is a tricky business. Some notable gotchas include the\n \"Turkish I\" problem (http://www.i18nguy.com/unicode/turkish-i18n.html) and the fact\n that the German Esszet (ß) turns into \"SS\" in upper case.\n\n This is intended to be a locale-invariant comparison, which means it may not obey\n locale-specific expectations (e.g. \"i\" => \"İ\").\n */\n for (idx = 0; idx < s.length; idx++) {\n const actual = this.next();\n const expected = s[idx];\n if (actual == null || actual.toUpperCase() !== expected.toUpperCase()) {\n return false;\n }\n }\n return true;\n }\n // Default is case-sensitive comparison.\n for (idx = 0; idx < s.length; idx++) {\n if (this.next() !== s[idx]) {\n return false;\n }\n }\n return true;\n }\n\n sourceSlice(startIdx, endIdx) {\n return this.source.slice(startIdx, endIdx);\n }\n\n interval(startIdx, optEndIdx) {\n return new Interval(this.source, startIdx, optEndIdx ? optEndIdx : this.pos);\n }\n}\n","import * as common from './common.js';\nimport * as util from './util.js';\nimport {Interval} from './Interval.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class MatchResult {\n constructor(\n matcher,\n input,\n startExpr,\n cst,\n cstOffset,\n rightmostFailurePosition,\n optRecordedFailures,\n ) {\n this.matcher = matcher;\n this.input = input;\n this.startExpr = startExpr;\n this._cst = cst;\n this._cstOffset = cstOffset;\n this._rightmostFailurePosition = rightmostFailurePosition;\n this._rightmostFailures = optRecordedFailures;\n\n if (this.failed()) {\n /* eslint-disable no-invalid-this */\n common.defineLazyProperty(this, 'message', function() {\n const detail = 'Expected ' + this.getExpectedText();\n return (\n util.getLineAndColumnMessage(this.input, this.getRightmostFailurePosition()) + detail\n );\n });\n common.defineLazyProperty(this, 'shortMessage', function() {\n const detail = 'expected ' + this.getExpectedText();\n const errorInfo = util.getLineAndColumn(\n this.input,\n this.getRightmostFailurePosition(),\n );\n return 'Line ' + errorInfo.lineNum + ', col ' + errorInfo.colNum + ': ' + detail;\n });\n /* eslint-enable no-invalid-this */\n }\n }\n\n succeeded() {\n return !!this._cst;\n }\n\n failed() {\n return !this.succeeded();\n }\n\n getRightmostFailurePosition() {\n return this._rightmostFailurePosition;\n }\n\n getRightmostFailures() {\n if (!this._rightmostFailures) {\n this.matcher.setInput(this.input);\n const matchResultWithFailures = this.matcher._match(this.startExpr, {\n tracing: false,\n positionToRecordFailures: this.getRightmostFailurePosition(),\n });\n this._rightmostFailures = matchResultWithFailures.getRightmostFailures();\n }\n return this._rightmostFailures;\n }\n\n toString() {\n return this.succeeded() ?\n '[match succeeded]' :\n '[match failed at position ' + this.getRightmostFailurePosition() + ']';\n }\n\n // Return a string summarizing the expected contents of the input stream when\n // the match failure occurred.\n getExpectedText() {\n if (this.succeeded()) {\n throw new Error('cannot get expected text of a successful MatchResult');\n }\n\n const sb = new common.StringBuffer();\n let failures = this.getRightmostFailures();\n\n // Filter out the fluffy failures to make the default error messages more useful\n failures = failures.filter(failure => !failure.isFluffy());\n\n for (let idx = 0; idx < failures.length; idx++) {\n if (idx > 0) {\n if (idx === failures.length - 1) {\n sb.append(failures.length > 2 ? ', or ' : ' or ');\n } else {\n sb.append(', ');\n }\n }\n sb.append(failures[idx].toString());\n }\n return sb.contents();\n }\n\n getInterval() {\n const pos = this.getRightmostFailurePosition();\n return new Interval(this.input, pos, pos);\n }\n}\n","export class PosInfo {\n constructor() {\n this.applicationMemoKeyStack = []; // active applications at this position\n this.memo = {};\n this.maxExaminedLength = 0;\n this.maxRightmostFailureOffset = -1;\n this.currentLeftRecursion = undefined;\n }\n\n isActive(application) {\n return this.applicationMemoKeyStack.indexOf(application.toMemoKey()) >= 0;\n }\n\n enter(application) {\n this.applicationMemoKeyStack.push(application.toMemoKey());\n }\n\n exit() {\n this.applicationMemoKeyStack.pop();\n }\n\n startLeftRecursion(headApplication, memoRec) {\n memoRec.isLeftRecursion = true;\n memoRec.headApplication = headApplication;\n memoRec.nextLeftRecursion = this.currentLeftRecursion;\n this.currentLeftRecursion = memoRec;\n\n const {applicationMemoKeyStack} = this;\n const indexOfFirstInvolvedRule =\n applicationMemoKeyStack.indexOf(headApplication.toMemoKey()) + 1;\n const involvedApplicationMemoKeys = applicationMemoKeyStack.slice(\n indexOfFirstInvolvedRule,\n );\n\n memoRec.isInvolved = function(applicationMemoKey) {\n return involvedApplicationMemoKeys.indexOf(applicationMemoKey) >= 0;\n };\n\n memoRec.updateInvolvedApplicationMemoKeys = function() {\n for (let idx = indexOfFirstInvolvedRule; idx < applicationMemoKeyStack.length; idx++) {\n const applicationMemoKey = applicationMemoKeyStack[idx];\n if (!this.isInvolved(applicationMemoKey)) {\n involvedApplicationMemoKeys.push(applicationMemoKey);\n }\n }\n };\n }\n\n endLeftRecursion() {\n this.currentLeftRecursion = this.currentLeftRecursion.nextLeftRecursion;\n }\n\n // Note: this method doesn't get called for the \"head\" of a left recursion -- for LR heads,\n // the memoized result (which starts out being a failure) is always used.\n shouldUseMemoizedResult(memoRec) {\n if (!memoRec.isLeftRecursion) {\n return true;\n }\n const {applicationMemoKeyStack} = this;\n for (let idx = 0; idx < applicationMemoKeyStack.length; idx++) {\n const applicationMemoKey = applicationMemoKeyStack[idx];\n if (memoRec.isInvolved(applicationMemoKey)) {\n return false;\n }\n }\n return true;\n }\n\n memoize(memoKey, memoRec) {\n this.memo[memoKey] = memoRec;\n this.maxExaminedLength = Math.max(this.maxExaminedLength, memoRec.examinedLength);\n this.maxRightmostFailureOffset = Math.max(\n this.maxRightmostFailureOffset,\n memoRec.rightmostFailureOffset,\n );\n return memoRec;\n }\n\n clearObsoleteEntries(pos, invalidatedIdx) {\n if (pos + this.maxExaminedLength <= invalidatedIdx) {\n // Optimization: none of the rule applications that were memoized here examined the\n // interval of the input that changed, so nothing has to be invalidated.\n return;\n }\n\n const {memo} = this;\n this.maxExaminedLength = 0;\n this.maxRightmostFailureOffset = -1;\n Object.keys(memo).forEach(k => {\n const memoRec = memo[k];\n if (pos + memoRec.examinedLength > invalidatedIdx) {\n delete memo[k];\n } else {\n this.maxExaminedLength = Math.max(this.maxExaminedLength, memoRec.examinedLength);\n this.maxRightmostFailureOffset = Math.max(\n this.maxRightmostFailureOffset,\n memoRec.rightmostFailureOffset,\n );\n }\n });\n }\n}\n","import {Interval} from './Interval.js';\nimport * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n// Unicode characters that are used in the `toString` output.\nconst BALLOT_X = '\\u2717';\nconst CHECK_MARK = '\\u2713';\nconst DOT_OPERATOR = '\\u22C5';\nconst RIGHTWARDS_DOUBLE_ARROW = '\\u21D2';\nconst SYMBOL_FOR_HORIZONTAL_TABULATION = '\\u2409';\nconst SYMBOL_FOR_LINE_FEED = '\\u240A';\nconst SYMBOL_FOR_CARRIAGE_RETURN = '\\u240D';\n\nconst Flags = {\n succeeded: 1 << 0,\n isRootNode: 1 << 1,\n isImplicitSpaces: 1 << 2,\n isMemoized: 1 << 3,\n isHeadOfLeftRecursion: 1 << 4,\n terminatesLR: 1 << 5,\n};\n\nfunction spaces(n) {\n return common.repeat(' ', n).join('');\n}\n\n// Return a string representation of a portion of `input` at offset `pos`.\n// The result will contain exactly `len` characters.\nfunction getInputExcerpt(input, pos, len) {\n const excerpt = asEscapedString(input.slice(pos, pos + len));\n\n // Pad the output if necessary.\n if (excerpt.length < len) {\n return excerpt + common.repeat(' ', len - excerpt.length).join('');\n }\n return excerpt;\n}\n\nfunction asEscapedString(obj) {\n if (typeof obj === 'string') {\n // Replace non-printable characters with visible symbols.\n return obj\n .replace(/ /g, DOT_OPERATOR)\n .replace(/\\t/g, SYMBOL_FOR_HORIZONTAL_TABULATION)\n .replace(/\\n/g, SYMBOL_FOR_LINE_FEED)\n .replace(/\\r/g, SYMBOL_FOR_CARRIAGE_RETURN);\n }\n return String(obj);\n}\n\n// ----------------- Trace -----------------\n\nexport class Trace {\n constructor(input, pos1, pos2, expr, succeeded, bindings, optChildren) {\n this.input = input;\n this.pos = this.pos1 = pos1;\n this.pos2 = pos2;\n this.source = new Interval(input, pos1, pos2);\n this.expr = expr;\n this.bindings = bindings;\n this.children = optChildren || [];\n this.terminatingLREntry = null;\n\n this._flags = succeeded ? Flags.succeeded : 0;\n }\n\n get displayString() {\n return this.expr.toDisplayString();\n }\n\n clone() {\n return this.cloneWithExpr(this.expr);\n }\n\n cloneWithExpr(expr) {\n const ans = new Trace(\n this.input,\n this.pos,\n this.pos2,\n expr,\n this.succeeded,\n this.bindings,\n this.children,\n );\n\n ans.isHeadOfLeftRecursion = this.isHeadOfLeftRecursion;\n ans.isImplicitSpaces = this.isImplicitSpaces;\n ans.isMemoized = this.isMemoized;\n ans.isRootNode = this.isRootNode;\n ans.terminatesLR = this.terminatesLR;\n ans.terminatingLREntry = this.terminatingLREntry;\n return ans;\n }\n\n // Record the trace information for the terminating condition of the LR loop.\n recordLRTermination(ruleBodyTrace, value) {\n this.terminatingLREntry = new Trace(\n this.input,\n this.pos,\n this.pos2,\n this.expr,\n false,\n [value],\n [ruleBodyTrace],\n );\n this.terminatingLREntry.terminatesLR = true;\n }\n\n // Recursively traverse this trace node and all its descendents, calling a visitor function\n // for each node that is visited. If `vistorObjOrFn` is an object, then its 'enter' property\n // is a function to call before visiting the children of a node, and its 'exit' property is\n // a function to call afterwards. If `visitorObjOrFn` is a function, it represents the 'enter'\n // function.\n //\n // The functions are called with three arguments: the Trace node, its parent Trace, and a number\n // representing the depth of the node in the tree. (The root node has depth 0.) `optThisArg`, if\n // specified, is the value to use for `this` when executing the visitor functions.\n walk(visitorObjOrFn, optThisArg) {\n let visitor = visitorObjOrFn;\n if (typeof visitor === 'function') {\n visitor = {enter: visitor};\n }\n\n function _walk(node, parent, depth) {\n let recurse = true;\n if (visitor.enter) {\n if (visitor.enter.call(optThisArg, node, parent, depth) === Trace.prototype.SKIP) {\n recurse = false;\n }\n }\n if (recurse) {\n node.children.forEach(child => {\n _walk(child, node, depth + 1);\n });\n if (visitor.exit) {\n visitor.exit.call(optThisArg, node, parent, depth);\n }\n }\n }\n if (this.isRootNode) {\n // Don't visit the root node itself, only its children.\n this.children.forEach(c => {\n _walk(c, null, 0);\n });\n } else {\n _walk(this, null, 0);\n }\n }\n\n // Return a string representation of the trace.\n // Sample:\n // 12⋅+⋅2⋅*⋅3 ✓ exp ⇒ \"12\"\n // 12⋅+⋅2⋅*⋅3 ✓ addExp (LR) ⇒ \"12\"\n // 12⋅+⋅2⋅*⋅3 ✗ addExp_plus\n toString() {\n const sb = new common.StringBuffer();\n this.walk((node, parent, depth) => {\n if (!node) {\n return this.SKIP;\n }\n const ctorName = node.expr.constructor.name;\n // Don't print anything for Alt nodes.\n if (ctorName === 'Alt') {\n return; // eslint-disable-line consistent-return\n }\n sb.append(getInputExcerpt(node.input, node.pos, 10) + spaces(depth * 2 + 1));\n sb.append((node.succeeded ? CHECK_MARK : BALLOT_X) + ' ' + node.displayString);\n if (node.isHeadOfLeftRecursion) {\n sb.append(' (LR)');\n }\n if (node.succeeded) {\n const contents = asEscapedString(node.source.contents);\n sb.append(' ' + RIGHTWARDS_DOUBLE_ARROW + ' ');\n sb.append(typeof contents === 'string' ? '\"' + contents + '\"' : contents);\n }\n sb.append('\\n');\n });\n return sb.contents();\n }\n}\n\n// A value that can be returned from visitor functions to indicate that a\n// node should not be recursed into.\nTrace.prototype.SKIP = {};\n\n// For convenience, create a getter and setter for the boolean flags in `Flags`.\nObject.keys(Flags).forEach(name => {\n const mask = Flags[name];\n Object.defineProperty(Trace.prototype, name, {\n get() {\n return (this._flags & mask) !== 0;\n },\n set(val) {\n if (val) {\n this._flags |= mask;\n } else {\n this._flags &= ~mask;\n }\n },\n });\n});\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Return true if we should skip spaces preceding this expression in a syntactic context.\n*/\npexprs.PExpr.prototype.allowsSkippingPrecedingSpace = abstract('allowsSkippingPrecedingSpace');\n\n/*\n Generally, these are all first-order expressions and (with the exception of Apply)\n directly read from the input stream.\n*/\npexprs.any.allowsSkippingPrecedingSpace =\n pexprs.end.allowsSkippingPrecedingSpace =\n pexprs.Apply.prototype.allowsSkippingPrecedingSpace =\n pexprs.Terminal.prototype.allowsSkippingPrecedingSpace =\n pexprs.Range.prototype.allowsSkippingPrecedingSpace =\n pexprs.UnicodeChar.prototype.allowsSkippingPrecedingSpace =\n function() {\n return true;\n };\n\n/*\n Higher-order expressions that don't directly consume input.\n*/\npexprs.Alt.prototype.allowsSkippingPrecedingSpace =\n pexprs.Iter.prototype.allowsSkippingPrecedingSpace =\n pexprs.Lex.prototype.allowsSkippingPrecedingSpace =\n pexprs.Lookahead.prototype.allowsSkippingPrecedingSpace =\n pexprs.Not.prototype.allowsSkippingPrecedingSpace =\n pexprs.Param.prototype.allowsSkippingPrecedingSpace =\n pexprs.Seq.prototype.allowsSkippingPrecedingSpace =\n function() {\n return false;\n };\n","import {abstract, isSyntactic} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs-main.js';\nimport * as util from './util.js';\n\nlet BuiltInRules;\n\nutil.awaitBuiltInRules(g => {\n BuiltInRules = g;\n});\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\nlet lexifyCount;\n\npexprs.PExpr.prototype.assertAllApplicationsAreValid = function(ruleName, grammar) {\n lexifyCount = 0;\n this._assertAllApplicationsAreValid(ruleName, grammar);\n};\n\npexprs.PExpr.prototype._assertAllApplicationsAreValid = abstract(\n '_assertAllApplicationsAreValid',\n);\n\npexprs.any._assertAllApplicationsAreValid =\n pexprs.end._assertAllApplicationsAreValid =\n pexprs.Terminal.prototype._assertAllApplicationsAreValid =\n pexprs.Range.prototype._assertAllApplicationsAreValid =\n pexprs.Param.prototype._assertAllApplicationsAreValid =\n pexprs.UnicodeChar.prototype._assertAllApplicationsAreValid =\n function(ruleName, grammar) {\n // no-op\n };\n\npexprs.Lex.prototype._assertAllApplicationsAreValid = function(ruleName, grammar) {\n lexifyCount++;\n this.expr._assertAllApplicationsAreValid(ruleName, grammar);\n lexifyCount--;\n};\n\npexprs.Alt.prototype._assertAllApplicationsAreValid = function(ruleName, grammar) {\n for (let idx = 0; idx < this.terms.length; idx++) {\n this.terms[idx]._assertAllApplicationsAreValid(ruleName, grammar);\n }\n};\n\npexprs.Seq.prototype._assertAllApplicationsAreValid = function(ruleName, grammar) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n this.factors[idx]._assertAllApplicationsAreValid(ruleName, grammar);\n }\n};\n\npexprs.Iter.prototype._assertAllApplicationsAreValid =\n pexprs.Not.prototype._assertAllApplicationsAreValid =\n pexprs.Lookahead.prototype._assertAllApplicationsAreValid =\n function(ruleName, grammar) {\n this.expr._assertAllApplicationsAreValid(ruleName, grammar);\n };\n\npexprs.Apply.prototype._assertAllApplicationsAreValid = function(\n ruleName,\n grammar,\n skipSyntacticCheck = false,\n) {\n const ruleInfo = grammar.rules[this.ruleName];\n const isContextSyntactic = isSyntactic(ruleName) && lexifyCount === 0;\n\n // Make sure that the rule exists...\n if (!ruleInfo) {\n throw errors.undeclaredRule(this.ruleName, grammar.name, this.source);\n }\n\n // ...and that this application is allowed\n if (!skipSyntacticCheck && isSyntactic(this.ruleName) && !isContextSyntactic) {\n throw errors.applicationOfSyntacticRuleFromLexicalContext(this.ruleName, this);\n }\n\n // ...and that this application has the correct number of arguments.\n const actual = this.args.length;\n const expected = ruleInfo.formals.length;\n if (actual !== expected) {\n throw errors.wrongNumberOfArguments(this.ruleName, expected, actual, this.source);\n }\n\n const isBuiltInApplySyntactic =\n BuiltInRules && ruleInfo === BuiltInRules.rules.applySyntactic;\n const isBuiltInCaseInsensitive =\n BuiltInRules && ruleInfo === BuiltInRules.rules.caseInsensitive;\n\n // If it's an application of 'caseInsensitive', ensure that the argument is a Terminal.\n if (isBuiltInCaseInsensitive) {\n if (!(this.args[0] instanceof pexprs.Terminal)) {\n throw errors.incorrectArgumentType('a Terminal (e.g. \"abc\")', this.args[0]);\n }\n }\n\n if (isBuiltInApplySyntactic) {\n const arg = this.args[0];\n if (!(arg instanceof pexprs.Apply)) {\n throw errors.incorrectArgumentType('a syntactic rule application', arg);\n }\n if (!isSyntactic(arg.ruleName)) {\n throw errors.applySyntacticWithLexicalRuleApplication(arg);\n }\n if (isContextSyntactic) {\n throw errors.unnecessaryExperimentalApplySyntactic(this);\n }\n }\n\n // ...and that all of the argument expressions only have valid applications and have arity 1.\n // If `this` is an application of the built-in applySyntactic rule, then its arg is\n // allowed (and expected) to be a syntactic rule, even if we're in a lexical context.\n this.args.forEach(arg => {\n arg._assertAllApplicationsAreValid(ruleName, grammar, isBuiltInApplySyntactic);\n if (arg.getArity() !== 1) {\n throw errors.invalidParameter(this.ruleName, arg);\n }\n });\n};\n","import {abstract} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.assertChoicesHaveUniformArity = abstract(\n 'assertChoicesHaveUniformArity',\n);\n\npexprs.any.assertChoicesHaveUniformArity =\n pexprs.end.assertChoicesHaveUniformArity =\n pexprs.Terminal.prototype.assertChoicesHaveUniformArity =\n pexprs.Range.prototype.assertChoicesHaveUniformArity =\n pexprs.Param.prototype.assertChoicesHaveUniformArity =\n pexprs.Lex.prototype.assertChoicesHaveUniformArity =\n pexprs.UnicodeChar.prototype.assertChoicesHaveUniformArity =\n function(ruleName) {\n // no-op\n };\n\npexprs.Alt.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n if (this.terms.length === 0) {\n return;\n }\n const arity = this.terms[0].getArity();\n for (let idx = 0; idx < this.terms.length; idx++) {\n const term = this.terms[idx];\n term.assertChoicesHaveUniformArity();\n const otherArity = term.getArity();\n if (arity !== otherArity) {\n throw errors.inconsistentArity(ruleName, arity, otherArity, term);\n }\n }\n};\n\npexprs.Extend.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n // Extend is a special case of Alt that's guaranteed to have exactly two\n // cases: [extensions, origBody].\n const actualArity = this.terms[0].getArity();\n const expectedArity = this.terms[1].getArity();\n if (actualArity !== expectedArity) {\n throw errors.inconsistentArity(ruleName, expectedArity, actualArity, this.terms[0]);\n }\n};\n\npexprs.Seq.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n this.factors[idx].assertChoicesHaveUniformArity(ruleName);\n }\n};\n\npexprs.Iter.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n this.expr.assertChoicesHaveUniformArity(ruleName);\n};\n\npexprs.Not.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n // no-op (not required b/c the nested expr doesn't show up in the CST)\n};\n\npexprs.Lookahead.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n this.expr.assertChoicesHaveUniformArity(ruleName);\n};\n\npexprs.Apply.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n // The arities of the parameter expressions is required to be 1 by\n // `assertAllApplicationsAreValid()`.\n};\n","import {abstract} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.assertIteratedExprsAreNotNullable = abstract(\n 'assertIteratedExprsAreNotNullable',\n);\n\npexprs.any.assertIteratedExprsAreNotNullable =\n pexprs.end.assertIteratedExprsAreNotNullable =\n pexprs.Terminal.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Range.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Param.prototype.assertIteratedExprsAreNotNullable =\n pexprs.UnicodeChar.prototype.assertIteratedExprsAreNotNullable =\n function(grammar) {\n // no-op\n };\n\npexprs.Alt.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n for (let idx = 0; idx < this.terms.length; idx++) {\n this.terms[idx].assertIteratedExprsAreNotNullable(grammar);\n }\n};\n\npexprs.Seq.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n this.factors[idx].assertIteratedExprsAreNotNullable(grammar);\n }\n};\n\npexprs.Iter.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n // Note: this is the implementation of this method for `Star` and `Plus` expressions.\n // It is overridden for `Opt` below.\n this.expr.assertIteratedExprsAreNotNullable(grammar);\n if (this.expr.isNullable(grammar)) {\n throw errors.kleeneExprHasNullableOperand(this, []);\n }\n};\n\npexprs.Opt.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Not.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Lookahead.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Lex.prototype.assertIteratedExprsAreNotNullable =\n function(grammar) {\n this.expr.assertIteratedExprsAreNotNullable(grammar);\n };\n\npexprs.Apply.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n this.args.forEach(arg => {\n arg.assertIteratedExprsAreNotNullable(grammar);\n });\n};\n","import * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class Node {\n constructor(matchLength) {\n this.matchLength = matchLength;\n }\n\n get ctorName() {\n throw new Error('subclass responsibility');\n }\n\n numChildren() {\n return this.children ? this.children.length : 0;\n }\n\n childAt(idx) {\n if (this.children) {\n return this.children[idx];\n }\n }\n\n indexOfChild(arg) {\n return this.children.indexOf(arg);\n }\n\n hasChildren() {\n return this.numChildren() > 0;\n }\n\n hasNoChildren() {\n return !this.hasChildren();\n }\n\n onlyChild() {\n if (this.numChildren() !== 1) {\n throw new Error(\n 'cannot get only child of a node of type ' +\n this.ctorName +\n ' (it has ' +\n this.numChildren() +\n ' children)',\n );\n } else {\n return this.firstChild();\n }\n }\n\n firstChild() {\n if (this.hasNoChildren()) {\n throw new Error(\n 'cannot get first child of a ' + this.ctorName + ' node, which has no children',\n );\n } else {\n return this.childAt(0);\n }\n }\n\n lastChild() {\n if (this.hasNoChildren()) {\n throw new Error(\n 'cannot get last child of a ' + this.ctorName + ' node, which has no children',\n );\n } else {\n return this.childAt(this.numChildren() - 1);\n }\n }\n\n childBefore(child) {\n const childIdx = this.indexOfChild(child);\n if (childIdx < 0) {\n throw new Error('Node.childBefore() called w/ an argument that is not a child');\n } else if (childIdx === 0) {\n throw new Error('cannot get child before first child');\n } else {\n return this.childAt(childIdx - 1);\n }\n }\n\n childAfter(child) {\n const childIdx = this.indexOfChild(child);\n if (childIdx < 0) {\n throw new Error('Node.childAfter() called w/ an argument that is not a child');\n } else if (childIdx === this.numChildren() - 1) {\n throw new Error('cannot get child after last child');\n } else {\n return this.childAt(childIdx + 1);\n }\n }\n\n isTerminal() {\n return false;\n }\n\n isNonterminal() {\n return false;\n }\n\n isIteration() {\n return false;\n }\n\n isOptional() {\n return false;\n }\n}\n\n// Terminals\n\nexport class TerminalNode extends Node {\n get ctorName() {\n return '_terminal';\n }\n\n isTerminal() {\n return true;\n }\n\n get primitiveValue() {\n throw new Error('The `primitiveValue` property was removed in Ohm v17.');\n }\n}\n\n// Nonterminals\n\nexport class NonterminalNode extends Node {\n constructor(ruleName, children, childOffsets, matchLength) {\n super(matchLength);\n this.ruleName = ruleName;\n this.children = children;\n this.childOffsets = childOffsets;\n }\n\n get ctorName() {\n return this.ruleName;\n }\n\n isNonterminal() {\n return true;\n }\n\n isLexical() {\n return common.isLexical(this.ctorName);\n }\n\n isSyntactic() {\n return common.isSyntactic(this.ctorName);\n }\n}\n\n// Iterations\n\nexport class IterationNode extends Node {\n constructor(children, childOffsets, matchLength, isOptional) {\n super(matchLength);\n this.children = children;\n this.childOffsets = childOffsets;\n this.optional = isOptional;\n }\n\n get ctorName() {\n return '_iter';\n }\n\n isIteration() {\n return true;\n }\n\n isOptional() {\n return this.optional;\n }\n}\n","import {Trace} from './Trace.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport {IterationNode, NonterminalNode, TerminalNode} from './nodes.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Evaluate the expression and return `true` if it succeeds, `false` otherwise. This method should\n only be called directly by `State.prototype.eval(expr)`, which also updates the data structures\n that are used for tracing. (Making those updates in a method of `State` enables the trace-specific\n data structures to be \"secrets\" of that class, which is good for modularity.)\n\n The contract of this method is as follows:\n * When the return value is `true`,\n - the state object will have `expr.getArity()` more bindings than it did before the call.\n * When the return value is `false`,\n - the state object may have more bindings than it did before the call, and\n - its input stream's position may be anywhere.\n\n Note that `State.prototype.eval(expr)`, unlike this method, guarantees that neither the state\n object's bindings nor its input stream's position will change if the expression fails to match.\n*/\npexprs.PExpr.prototype.eval = common.abstract('eval'); // function(state) { ... }\n\npexprs.any.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const cp = inputStream.nextCodePoint();\n if (cp !== undefined) {\n state.pushBinding(new TerminalNode(String.fromCodePoint(cp).length), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n\npexprs.end.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n if (inputStream.atEnd()) {\n state.pushBinding(new TerminalNode(0), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n\npexprs.Terminal.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n if (!inputStream.matchString(this.obj)) {\n state.processFailure(origPos, this);\n return false;\n } else {\n state.pushBinding(new TerminalNode(this.obj.length), origPos);\n return true;\n }\n};\n\npexprs.Range.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n\n // A range can operate in one of two modes: matching a single, 16-bit _code unit_,\n // or matching a _code point_. (Code points over 0xFFFF take up two 16-bit code units.)\n const cp = this.matchCodePoint ? inputStream.nextCodePoint() : inputStream.nextCharCode();\n\n // Always compare by code point value to get the correct result in all scenarios.\n // Note that for strings of length 1, codePointAt(0) and charPointAt(0) are equivalent.\n if (cp !== undefined && this.from.codePointAt(0) <= cp && cp <= this.to.codePointAt(0)) {\n state.pushBinding(new TerminalNode(String.fromCodePoint(cp).length), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n\npexprs.Param.prototype.eval = function(state) {\n return state.eval(state.currentApplication().args[this.index]);\n};\n\npexprs.Lex.prototype.eval = function(state) {\n state.enterLexifiedContext();\n const ans = state.eval(this.expr);\n state.exitLexifiedContext();\n return ans;\n};\n\npexprs.Alt.prototype.eval = function(state) {\n for (let idx = 0; idx < this.terms.length; idx++) {\n if (state.eval(this.terms[idx])) {\n return true;\n }\n }\n return false;\n};\n\npexprs.Seq.prototype.eval = function(state) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n const factor = this.factors[idx];\n if (!state.eval(factor)) {\n return false;\n }\n }\n return true;\n};\n\npexprs.Iter.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const arity = this.getArity();\n const cols = [];\n const colOffsets = [];\n while (cols.length < arity) {\n cols.push([]);\n colOffsets.push([]);\n }\n\n let numMatches = 0;\n let prevPos = origPos;\n let idx;\n while (numMatches < this.maxNumMatches && state.eval(this.expr)) {\n if (inputStream.pos === prevPos) {\n throw errors.kleeneExprHasNullableOperand(this, state._applicationStack);\n }\n prevPos = inputStream.pos;\n numMatches++;\n const row = state._bindings.splice(state._bindings.length - arity, arity);\n const rowOffsets = state._bindingOffsets.splice(\n state._bindingOffsets.length - arity,\n arity,\n );\n for (idx = 0; idx < row.length; idx++) {\n cols[idx].push(row[idx]);\n colOffsets[idx].push(rowOffsets[idx]);\n }\n }\n if (numMatches < this.minNumMatches) {\n return false;\n }\n let offset = state.posToOffset(origPos);\n let matchLength = 0;\n if (numMatches > 0) {\n const lastCol = cols[arity - 1];\n const lastColOffsets = colOffsets[arity - 1];\n\n const endOffset =\n lastColOffsets[lastColOffsets.length - 1] + lastCol[lastCol.length - 1].matchLength;\n offset = colOffsets[0][0];\n matchLength = endOffset - offset;\n }\n const isOptional = this instanceof pexprs.Opt;\n for (idx = 0; idx < cols.length; idx++) {\n state._bindings.push(\n new IterationNode(cols[idx], colOffsets[idx], matchLength, isOptional),\n );\n state._bindingOffsets.push(offset);\n }\n return true;\n};\n\npexprs.Not.prototype.eval = function(state) {\n /*\n TODO:\n - Right now we're just throwing away all of the failures that happen inside a `not`, and\n recording `this` as a failed expression.\n - Double negation should be equivalent to lookahead, but that's not the case right now wrt\n failures. E.g., ~~'foo' produces a failure for ~~'foo', but maybe it should produce\n a failure for 'foo' instead.\n */\n\n const {inputStream} = state;\n const origPos = inputStream.pos;\n state.pushFailuresInfo();\n\n const ans = state.eval(this.expr);\n\n state.popFailuresInfo();\n if (ans) {\n state.processFailure(origPos, this);\n return false;\n }\n\n inputStream.pos = origPos;\n return true;\n};\n\npexprs.Lookahead.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n if (state.eval(this.expr)) {\n inputStream.pos = origPos;\n return true;\n } else {\n return false;\n }\n};\n\npexprs.Apply.prototype.eval = function(state) {\n const caller = state.currentApplication();\n const actuals = caller ? caller.args : [];\n const app = this.substituteParams(actuals);\n\n const posInfo = state.getCurrentPosInfo();\n if (posInfo.isActive(app)) {\n // This rule is already active at this position, i.e., it is left-recursive.\n return app.handleCycle(state);\n }\n\n const memoKey = app.toMemoKey();\n const memoRec = posInfo.memo[memoKey];\n\n if (memoRec && posInfo.shouldUseMemoizedResult(memoRec)) {\n if (state.hasNecessaryInfo(memoRec)) {\n return state.useMemoizedResult(state.inputStream.pos, memoRec);\n }\n delete posInfo.memo[memoKey];\n }\n return app.reallyEval(state);\n};\n\npexprs.Apply.prototype.handleCycle = function(state) {\n const posInfo = state.getCurrentPosInfo();\n const {currentLeftRecursion} = posInfo;\n const memoKey = this.toMemoKey();\n let memoRec = posInfo.memo[memoKey];\n\n if (currentLeftRecursion && currentLeftRecursion.headApplication.toMemoKey() === memoKey) {\n // We already know about this left recursion, but it's possible there are \"involved\n // applications\" that we don't already know about, so...\n memoRec.updateInvolvedApplicationMemoKeys();\n } else if (!memoRec) {\n // New left recursion detected! Memoize a failure to try to get a seed parse.\n memoRec = posInfo.memoize(memoKey, {\n matchLength: 0,\n examinedLength: 0,\n value: false,\n rightmostFailureOffset: -1,\n });\n posInfo.startLeftRecursion(this, memoRec);\n }\n return state.useMemoizedResult(state.inputStream.pos, memoRec);\n};\n\npexprs.Apply.prototype.reallyEval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const origPosInfo = state.getCurrentPosInfo();\n const ruleInfo = state.grammar.rules[this.ruleName];\n const {body} = ruleInfo;\n const {description} = ruleInfo;\n\n state.enterApplication(origPosInfo, this);\n\n if (description) {\n state.pushFailuresInfo();\n }\n\n // Reset the input stream's examinedLength property so that we can track\n // the examined length of this particular application.\n const origInputStreamExaminedLength = inputStream.examinedLength;\n inputStream.examinedLength = 0;\n\n let value = this.evalOnce(body, state);\n const currentLR = origPosInfo.currentLeftRecursion;\n const memoKey = this.toMemoKey();\n const isHeadOfLeftRecursion = currentLR && currentLR.headApplication.toMemoKey() === memoKey;\n let memoRec;\n\n if (state.doNotMemoize) {\n state.doNotMemoize = false;\n } else if (isHeadOfLeftRecursion) {\n value = this.growSeedResult(body, state, origPos, currentLR, value);\n origPosInfo.endLeftRecursion();\n memoRec = currentLR;\n memoRec.examinedLength = inputStream.examinedLength - origPos;\n memoRec.rightmostFailureOffset = state._getRightmostFailureOffset();\n origPosInfo.memoize(memoKey, memoRec); // updates origPosInfo's maxExaminedLength\n } else if (!currentLR || !currentLR.isInvolved(memoKey)) {\n // This application is not involved in left recursion, so it's ok to memoize it.\n memoRec = origPosInfo.memoize(memoKey, {\n matchLength: inputStream.pos - origPos,\n examinedLength: inputStream.examinedLength - origPos,\n value,\n failuresAtRightmostPosition: state.cloneRecordedFailures(),\n rightmostFailureOffset: state._getRightmostFailureOffset(),\n });\n }\n const succeeded = !!value;\n\n if (description) {\n state.popFailuresInfo();\n if (!succeeded) {\n state.processFailure(origPos, this);\n }\n if (memoRec) {\n memoRec.failuresAtRightmostPosition = state.cloneRecordedFailures();\n }\n }\n\n // Record trace information in the memo table, so that it is available if the memoized result\n // is used later.\n if (state.isTracing() && memoRec) {\n const entry = state.getTraceEntry(origPos, this, succeeded, succeeded ? [value] : []);\n if (isHeadOfLeftRecursion) {\n common.assert(entry.terminatingLREntry != null || !succeeded);\n entry.isHeadOfLeftRecursion = true;\n }\n memoRec.traceEntry = entry;\n }\n\n // Fix the input stream's examinedLength -- it should be the maximum examined length\n // across all applications, not just this one.\n inputStream.examinedLength = Math.max(\n inputStream.examinedLength,\n origInputStreamExaminedLength,\n );\n\n state.exitApplication(origPosInfo, value);\n\n return succeeded;\n};\n\npexprs.Apply.prototype.evalOnce = function(expr, state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n\n if (state.eval(expr)) {\n const arity = expr.getArity();\n const bindings = state._bindings.splice(state._bindings.length - arity, arity);\n const offsets = state._bindingOffsets.splice(state._bindingOffsets.length - arity, arity);\n const matchLength = inputStream.pos - origPos;\n return new NonterminalNode(this.ruleName, bindings, offsets, matchLength);\n } else {\n return false;\n }\n};\n\npexprs.Apply.prototype.growSeedResult = function(body, state, origPos, lrMemoRec, newValue) {\n if (!newValue) {\n return false;\n }\n\n const {inputStream} = state;\n\n while (true) {\n lrMemoRec.matchLength = inputStream.pos - origPos;\n lrMemoRec.value = newValue;\n lrMemoRec.failuresAtRightmostPosition = state.cloneRecordedFailures();\n\n if (state.isTracing()) {\n // Before evaluating the body again, add a trace node for this application to the memo entry.\n // Its only child is a copy of the trace node from `newValue`, which will always be the last\n // element in `state.trace`.\n const seedTrace = state.trace[state.trace.length - 1];\n lrMemoRec.traceEntry = new Trace(\n state.input,\n origPos,\n inputStream.pos,\n this,\n true,\n [newValue],\n [seedTrace.clone()],\n );\n }\n inputStream.pos = origPos;\n newValue = this.evalOnce(body, state);\n if (inputStream.pos - origPos <= lrMemoRec.matchLength) {\n break;\n }\n if (state.isTracing()) {\n state.trace.splice(-2, 1); // Drop the trace for the old seed.\n }\n }\n if (state.isTracing()) {\n // The last entry is for an unused result -- pop it and save it in the \"real\" entry.\n lrMemoRec.traceEntry.recordLRTermination(state.trace.pop(), newValue);\n }\n inputStream.pos = origPos + lrMemoRec.matchLength;\n return lrMemoRec.value;\n};\n\npexprs.UnicodeChar.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const ch = inputStream.next();\n if (ch && this.pattern.test(ch)) {\n state.pushBinding(new TerminalNode(ch.length), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.getArity = abstract('getArity');\n\npexprs.any.getArity =\n pexprs.end.getArity =\n pexprs.Terminal.prototype.getArity =\n pexprs.Range.prototype.getArity =\n pexprs.Param.prototype.getArity =\n pexprs.Apply.prototype.getArity =\n pexprs.UnicodeChar.prototype.getArity =\n function() {\n return 1;\n };\n\npexprs.Alt.prototype.getArity = function() {\n // This is ok b/c all terms must have the same arity -- this property is\n // checked by the Grammar constructor.\n return this.terms.length === 0 ? 0 : this.terms[0].getArity();\n};\n\npexprs.Seq.prototype.getArity = function() {\n let arity = 0;\n for (let idx = 0; idx < this.factors.length; idx++) {\n arity += this.factors[idx].getArity();\n }\n return arity;\n};\n\npexprs.Iter.prototype.getArity = function() {\n return this.expr.getArity();\n};\n\npexprs.Not.prototype.getArity = function() {\n return 0;\n};\n\npexprs.Lookahead.prototype.getArity = pexprs.Lex.prototype.getArity = function() {\n return this.expr.getArity();\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nfunction getMetaInfo(expr, grammarInterval) {\n const metaInfo = {};\n if (expr.source && grammarInterval) {\n const adjusted = expr.source.relativeTo(grammarInterval);\n metaInfo.sourceInterval = [adjusted.startIdx, adjusted.endIdx];\n }\n return metaInfo;\n}\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.outputRecipe = abstract('outputRecipe');\n\npexprs.any.outputRecipe = function(formals, grammarInterval) {\n return ['any', getMetaInfo(this, grammarInterval)];\n};\n\npexprs.end.outputRecipe = function(formals, grammarInterval) {\n return ['end', getMetaInfo(this, grammarInterval)];\n};\n\npexprs.Terminal.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['terminal', getMetaInfo(this, grammarInterval), this.obj];\n};\n\npexprs.Range.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['range', getMetaInfo(this, grammarInterval), this.from, this.to];\n};\n\npexprs.Param.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['param', getMetaInfo(this, grammarInterval), this.index];\n};\n\npexprs.Alt.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['alt', getMetaInfo(this, grammarInterval)].concat(\n this.terms.map(term => term.outputRecipe(formals, grammarInterval)),\n );\n};\n\npexprs.Extend.prototype.outputRecipe = function(formals, grammarInterval) {\n const extension = this.terms[0]; // [extension, original]\n return extension.outputRecipe(formals, grammarInterval);\n};\n\npexprs.Splice.prototype.outputRecipe = function(formals, grammarInterval) {\n const beforeTerms = this.terms.slice(0, this.expansionPos);\n const afterTerms = this.terms.slice(this.expansionPos + 1);\n return [\n 'splice',\n getMetaInfo(this, grammarInterval),\n beforeTerms.map(term => term.outputRecipe(formals, grammarInterval)),\n afterTerms.map(term => term.outputRecipe(formals, grammarInterval)),\n ];\n};\n\npexprs.Seq.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['seq', getMetaInfo(this, grammarInterval)].concat(\n this.factors.map(factor => factor.outputRecipe(formals, grammarInterval)),\n );\n};\n\npexprs.Star.prototype.outputRecipe =\n pexprs.Plus.prototype.outputRecipe =\n pexprs.Opt.prototype.outputRecipe =\n pexprs.Not.prototype.outputRecipe =\n pexprs.Lookahead.prototype.outputRecipe =\n pexprs.Lex.prototype.outputRecipe =\n function(formals, grammarInterval) {\n return [\n this.constructor.name.toLowerCase(),\n getMetaInfo(this, grammarInterval),\n this.expr.outputRecipe(formals, grammarInterval),\n ];\n };\n\npexprs.Apply.prototype.outputRecipe = function(formals, grammarInterval) {\n return [\n 'app',\n getMetaInfo(this, grammarInterval),\n this.ruleName,\n this.args.map(arg => arg.outputRecipe(formals, grammarInterval)),\n ];\n};\n\npexprs.UnicodeChar.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['unicodeChar', getMetaInfo(this, grammarInterval), this.category];\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Called at grammar creation time to rewrite a rule body, replacing each reference to a formal\n parameter with a `Param` node. Returns a PExpr -- either a new one, or the original one if\n it was modified in place.\n*/\npexprs.PExpr.prototype.introduceParams = abstract('introduceParams');\n\npexprs.any.introduceParams =\n pexprs.end.introduceParams =\n pexprs.Terminal.prototype.introduceParams =\n pexprs.Range.prototype.introduceParams =\n pexprs.Param.prototype.introduceParams =\n pexprs.UnicodeChar.prototype.introduceParams =\n function(formals) {\n return this;\n };\n\npexprs.Alt.prototype.introduceParams = function(formals) {\n this.terms.forEach((term, idx, terms) => {\n terms[idx] = term.introduceParams(formals);\n });\n return this;\n};\n\npexprs.Seq.prototype.introduceParams = function(formals) {\n this.factors.forEach((factor, idx, factors) => {\n factors[idx] = factor.introduceParams(formals);\n });\n return this;\n};\n\npexprs.Iter.prototype.introduceParams =\n pexprs.Not.prototype.introduceParams =\n pexprs.Lookahead.prototype.introduceParams =\n pexprs.Lex.prototype.introduceParams =\n function(formals) {\n this.expr = this.expr.introduceParams(formals);\n return this;\n };\n\npexprs.Apply.prototype.introduceParams = function(formals) {\n const index = formals.indexOf(this.ruleName);\n if (index >= 0) {\n if (this.args.length > 0) {\n // TODO: Should this be supported? See issue #64.\n throw new Error('Parameterized rules cannot be passed as arguments to another rule.');\n }\n return new pexprs.Param(index).withSource(this.source);\n } else {\n this.args.forEach((arg, idx, args) => {\n args[idx] = arg.introduceParams(formals);\n });\n return this;\n }\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n// Returns `true` if this parsing expression may accept without consuming any input.\npexprs.PExpr.prototype.isNullable = function(grammar) {\n return this._isNullable(grammar, Object.create(null));\n};\n\npexprs.PExpr.prototype._isNullable = abstract('_isNullable');\n\npexprs.any._isNullable =\n pexprs.Range.prototype._isNullable =\n pexprs.Param.prototype._isNullable =\n pexprs.Plus.prototype._isNullable =\n pexprs.UnicodeChar.prototype._isNullable =\n function(grammar, memo) {\n return false;\n };\n\npexprs.end._isNullable = function(grammar, memo) {\n return true;\n};\n\npexprs.Terminal.prototype._isNullable = function(grammar, memo) {\n if (typeof this.obj === 'string') {\n // This is an over-simplification: it's only correct if the input is a string. If it's an array\n // or an object, then the empty string parsing expression is not nullable.\n return this.obj === '';\n } else {\n return false;\n }\n};\n\npexprs.Alt.prototype._isNullable = function(grammar, memo) {\n return this.terms.length === 0 || this.terms.some(term => term._isNullable(grammar, memo));\n};\n\npexprs.Seq.prototype._isNullable = function(grammar, memo) {\n return this.factors.every(factor => factor._isNullable(grammar, memo));\n};\n\npexprs.Star.prototype._isNullable =\n pexprs.Opt.prototype._isNullable =\n pexprs.Not.prototype._isNullable =\n pexprs.Lookahead.prototype._isNullable =\n function(grammar, memo) {\n return true;\n };\n\npexprs.Lex.prototype._isNullable = function(grammar, memo) {\n return this.expr._isNullable(grammar, memo);\n};\n\npexprs.Apply.prototype._isNullable = function(grammar, memo) {\n const key = this.toMemoKey();\n if (!Object.prototype.hasOwnProperty.call(memo, key)) {\n const {body} = grammar.rules[this.ruleName];\n const inlined = body.substituteParams(this.args);\n memo[key] = false; // Prevent infinite recursion for recursive rules.\n memo[key] = inlined._isNullable(grammar, memo);\n }\n return memo[key];\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Returns a PExpr that results from recursively replacing every formal parameter (i.e., instance\n of `Param`) inside this PExpr with its actual value from `actuals` (an Array).\n\n The receiver must not be modified; a new PExpr must be returned if any replacement is necessary.\n*/\n// function(actuals) { ... }\npexprs.PExpr.prototype.substituteParams = abstract('substituteParams');\n\npexprs.any.substituteParams =\n pexprs.end.substituteParams =\n pexprs.Terminal.prototype.substituteParams =\n pexprs.Range.prototype.substituteParams =\n pexprs.UnicodeChar.prototype.substituteParams =\n function(actuals) {\n return this;\n };\n\npexprs.Param.prototype.substituteParams = function(actuals) {\n return actuals[this.index];\n};\n\npexprs.Alt.prototype.substituteParams = function(actuals) {\n return new pexprs.Alt(this.terms.map(term => term.substituteParams(actuals)));\n};\n\npexprs.Seq.prototype.substituteParams = function(actuals) {\n return new pexprs.Seq(this.factors.map(factor => factor.substituteParams(actuals)));\n};\n\npexprs.Iter.prototype.substituteParams =\n pexprs.Not.prototype.substituteParams =\n pexprs.Lookahead.prototype.substituteParams =\n pexprs.Lex.prototype.substituteParams =\n function(actuals) {\n return new this.constructor(this.expr.substituteParams(actuals));\n };\n\npexprs.Apply.prototype.substituteParams = function(actuals) {\n if (this.args.length === 0) {\n // Avoid making a copy of this application, as an optimization\n return this;\n } else {\n const args = this.args.map(arg => arg.substituteParams(actuals));\n return new pexprs.Apply(this.ruleName, args);\n }\n};\n","import {abstract, copyWithoutDuplicates} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nfunction isRestrictedJSIdentifier(str) {\n return /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(str);\n}\n\nfunction resolveDuplicatedNames(argumentNameList) {\n // `count` is used to record the number of times each argument name occurs in the list,\n // this is useful for checking duplicated argument name. It maps argument names to ints.\n const count = Object.create(null);\n argumentNameList.forEach(argName => {\n count[argName] = (count[argName] || 0) + 1;\n });\n\n // Append subscripts ('_1', '_2', ...) to duplicate argument names.\n Object.keys(count).forEach(dupArgName => {\n if (count[dupArgName] <= 1) {\n return;\n }\n\n // This name shows up more than once, so add subscripts.\n let subscript = 1;\n argumentNameList.forEach((argName, idx) => {\n if (argName === dupArgName) {\n argumentNameList[idx] = argName + '_' + subscript++;\n }\n });\n });\n}\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Returns a list of strings that will be used as the default argument names for its receiver\n (a pexpr) in a semantic action. This is used exclusively by the Semantics Editor.\n\n `firstArgIndex` is the 1-based index of the first argument name that will be generated for this\n pexpr. It enables us to name arguments positionally, e.g., if the second argument is a\n non-alphanumeric terminal like \"+\", it will be named '$2'.\n\n `noDupCheck` is true if the caller of `toArgumentNameList` is not a top level caller. It enables\n us to avoid nested duplication subscripts appending, e.g., '_1_1', '_1_2', by only checking\n duplicates at the top level.\n\n Here is a more elaborate example that illustrates how this method works:\n `(a \"+\" b).toArgumentNameList(1)` evaluates to `['a', '$2', 'b']` with the following recursive\n calls:\n\n (a).toArgumentNameList(1) -> ['a'],\n (\"+\").toArgumentNameList(2) -> ['$2'],\n (b).toArgumentNameList(3) -> ['b']\n\n Notes:\n * This method must only be called on well-formed expressions, e.g., the receiver must\n not have any Alt sub-expressions with inconsistent arities.\n * e.getArity() === e.toArgumentNameList(1).length\n*/\n// function(firstArgIndex, noDupCheck) { ... }\npexprs.PExpr.prototype.toArgumentNameList = abstract('toArgumentNameList');\n\npexprs.any.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['any'];\n};\n\npexprs.end.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['end'];\n};\n\npexprs.Terminal.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n if (typeof this.obj === 'string' && /^[_a-zA-Z0-9]+$/.test(this.obj)) {\n // If this terminal is a valid suffix for a JS identifier, just prepend it with '_'\n return ['_' + this.obj];\n } else {\n // Otherwise, name it positionally.\n return ['$' + firstArgIndex];\n }\n};\n\npexprs.Range.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n let argName = this.from + '_to_' + this.to;\n // If the `argName` is not valid then try to prepend a `_`.\n if (!isRestrictedJSIdentifier(argName)) {\n argName = '_' + argName;\n }\n // If the `argName` still not valid after prepending a `_`, then name it positionally.\n if (!isRestrictedJSIdentifier(argName)) {\n argName = '$' + firstArgIndex;\n }\n return [argName];\n};\n\npexprs.Alt.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n // `termArgNameLists` is an array of arrays where each row is the\n // argument name list that corresponds to a term in this alternation.\n const termArgNameLists = this.terms.map(term =>\n term.toArgumentNameList(firstArgIndex, true),\n );\n\n const argumentNameList = [];\n const numArgs = termArgNameLists[0].length;\n for (let colIdx = 0; colIdx < numArgs; colIdx++) {\n const col = [];\n for (let rowIdx = 0; rowIdx < this.terms.length; rowIdx++) {\n col.push(termArgNameLists[rowIdx][colIdx]);\n }\n const uniqueNames = copyWithoutDuplicates(col);\n argumentNameList.push(uniqueNames.join('_or_'));\n }\n\n if (!noDupCheck) {\n resolveDuplicatedNames(argumentNameList);\n }\n return argumentNameList;\n};\n\npexprs.Seq.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n // Generate the argument name list, without worrying about duplicates.\n let argumentNameList = [];\n this.factors.forEach(factor => {\n const factorArgumentNameList = factor.toArgumentNameList(firstArgIndex, true);\n argumentNameList = argumentNameList.concat(factorArgumentNameList);\n\n // Shift the firstArgIndex to take this factor's argument names into account.\n firstArgIndex += factorArgumentNameList.length;\n });\n if (!noDupCheck) {\n resolveDuplicatedNames(argumentNameList);\n }\n return argumentNameList;\n};\n\npexprs.Iter.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n const argumentNameList = this.expr\n .toArgumentNameList(firstArgIndex, noDupCheck)\n .map(exprArgumentString =>\n exprArgumentString[exprArgumentString.length - 1] === 's' ?\n exprArgumentString + 'es' :\n exprArgumentString + 's',\n );\n if (!noDupCheck) {\n resolveDuplicatedNames(argumentNameList);\n }\n return argumentNameList;\n};\n\npexprs.Opt.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return this.expr.toArgumentNameList(firstArgIndex, noDupCheck).map(argName => {\n return 'opt' + argName[0].toUpperCase() + argName.slice(1);\n });\n};\n\npexprs.Not.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return [];\n};\n\npexprs.Lookahead.prototype.toArgumentNameList = pexprs.Lex.prototype.toArgumentNameList =\n function(firstArgIndex, noDupCheck) {\n return this.expr.toArgumentNameList(firstArgIndex, noDupCheck);\n };\n\npexprs.Apply.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return [this.ruleName];\n};\n\npexprs.UnicodeChar.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['$' + firstArgIndex];\n};\n\npexprs.Param.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['param' + this.index];\n};\n\n// \"Value pexprs\" (Value, Str, Arr, Obj) are going away soon, so we don't worry about them here.\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n// Returns a string representing the PExpr, for use as a UI label, etc.\npexprs.PExpr.prototype.toDisplayString = abstract('toDisplayString');\n\npexprs.Alt.prototype.toDisplayString = pexprs.Seq.prototype.toDisplayString = function() {\n if (this.source) {\n return this.source.trimmed().contents;\n }\n return '[' + this.constructor.name + ']';\n};\n\npexprs.any.toDisplayString =\n pexprs.end.toDisplayString =\n pexprs.Iter.prototype.toDisplayString =\n pexprs.Not.prototype.toDisplayString =\n pexprs.Lookahead.prototype.toDisplayString =\n pexprs.Lex.prototype.toDisplayString =\n pexprs.Terminal.prototype.toDisplayString =\n pexprs.Range.prototype.toDisplayString =\n pexprs.Param.prototype.toDisplayString =\n function() {\n return this.toString();\n };\n\npexprs.Apply.prototype.toDisplayString = function() {\n if (this.args.length > 0) {\n const ps = this.args.map(arg => arg.toDisplayString());\n return this.ruleName + '<' + ps.join(',') + '>';\n } else {\n return this.ruleName;\n }\n};\n\npexprs.UnicodeChar.prototype.toDisplayString = function() {\n return 'Unicode [' + this.category + '] character';\n};\n","// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n/*\n `Failure`s represent expressions that weren't matched while parsing. They are used to generate\n error messages automatically. The interface of `Failure`s includes the collowing methods:\n\n - getText() : String\n - getType() : String (one of {\"description\", \"string\", \"code\"})\n - isDescription() : bool\n - isStringTerminal() : bool\n - isCode() : bool\n - isFluffy() : bool\n - makeFluffy() : void\n - subsumes(Failure) : bool\n*/\n\nfunction isValidType(type) {\n return type === 'description' || type === 'string' || type === 'code';\n}\n\nexport class Failure {\n constructor(pexpr, text, type) {\n if (!isValidType(type)) {\n throw new Error('invalid Failure type: ' + type);\n }\n this.pexpr = pexpr;\n this.text = text;\n this.type = type;\n this.fluffy = false;\n }\n\n getPExpr() {\n return this.pexpr;\n }\n\n getText() {\n return this.text;\n }\n\n getType() {\n return this.type;\n }\n\n isDescription() {\n return this.type === 'description';\n }\n\n isStringTerminal() {\n return this.type === 'string';\n }\n\n isCode() {\n return this.type === 'code';\n }\n\n isFluffy() {\n return this.fluffy;\n }\n\n makeFluffy() {\n this.fluffy = true;\n }\n\n clearFluffy() {\n this.fluffy = false;\n }\n\n subsumes(that) {\n return (\n this.getText() === that.getText() &&\n this.type === that.type &&\n (!this.isFluffy() || (this.isFluffy() && that.isFluffy()))\n );\n }\n\n toString() {\n return this.type === 'string' ? JSON.stringify(this.getText()) : this.getText();\n }\n\n clone() {\n const failure = new Failure(this.pexpr, this.text, this.type);\n if (this.isFluffy()) {\n failure.makeFluffy();\n }\n return failure;\n }\n\n toKey() {\n return this.toString() + '#' + this.type;\n }\n}\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\nimport {Failure} from './Failure.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.toFailure = abstract('toFailure');\n\npexprs.any.toFailure = function(grammar) {\n return new Failure(this, 'any object', 'description');\n};\n\npexprs.end.toFailure = function(grammar) {\n return new Failure(this, 'end of input', 'description');\n};\n\npexprs.Terminal.prototype.toFailure = function(grammar) {\n return new Failure(this, this.obj, 'string');\n};\n\npexprs.Range.prototype.toFailure = function(grammar) {\n // TODO: come up with something better\n return new Failure(this, JSON.stringify(this.from) + '..' + JSON.stringify(this.to), 'code');\n};\n\npexprs.Not.prototype.toFailure = function(grammar) {\n const description =\n this.expr === pexprs.any ? 'nothing' : 'not ' + this.expr.toFailure(grammar);\n return new Failure(this, description, 'description');\n};\n\npexprs.Lookahead.prototype.toFailure = function(grammar) {\n return this.expr.toFailure(grammar);\n};\n\npexprs.Apply.prototype.toFailure = function(grammar) {\n let {description} = grammar.rules[this.ruleName];\n if (!description) {\n const article = /^[aeiouAEIOU]/.test(this.ruleName) ? 'an' : 'a';\n description = article + ' ' + this.ruleName;\n }\n return new Failure(this, description, 'description');\n};\n\npexprs.UnicodeChar.prototype.toFailure = function(grammar) {\n return new Failure(this, 'a Unicode [' + this.category + '] character', 'description');\n};\n\npexprs.Alt.prototype.toFailure = function(grammar) {\n const fs = this.terms.map(t => t.toFailure(grammar));\n const description = '(' + fs.join(' or ') + ')';\n return new Failure(this, description, 'description');\n};\n\npexprs.Seq.prototype.toFailure = function(grammar) {\n const fs = this.factors.map(f => f.toFailure(grammar));\n const description = '(' + fs.join(' ') + ')';\n return new Failure(this, description, 'description');\n};\n\npexprs.Iter.prototype.toFailure = function(grammar) {\n const description = '(' + this.expr.toFailure(grammar) + this.operator + ')';\n return new Failure(this, description, 'description');\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n e1.toString() === e2.toString() ==> e1 and e2 are semantically equivalent.\n Note that this is not an iff (<==>): e.g.,\n (~\"b\" \"a\").toString() !== (\"a\").toString(), even though\n ~\"b\" \"a\" and \"a\" are interchangeable in any grammar,\n both in terms of the languages they accept and their arities.\n*/\npexprs.PExpr.prototype.toString = abstract('toString');\n\npexprs.any.toString = function() {\n return 'any';\n};\n\npexprs.end.toString = function() {\n return 'end';\n};\n\npexprs.Terminal.prototype.toString = function() {\n return JSON.stringify(this.obj);\n};\n\npexprs.Range.prototype.toString = function() {\n return JSON.stringify(this.from) + '..' + JSON.stringify(this.to);\n};\n\npexprs.Param.prototype.toString = function() {\n return '$' + this.index;\n};\n\npexprs.Lex.prototype.toString = function() {\n return '#(' + this.expr.toString() + ')';\n};\n\npexprs.Alt.prototype.toString = function() {\n return this.terms.length === 1 ?\n this.terms[0].toString() :\n '(' + this.terms.map(term => term.toString()).join(' | ') + ')';\n};\n\npexprs.Seq.prototype.toString = function() {\n return this.factors.length === 1 ?\n this.factors[0].toString() :\n '(' + this.factors.map(factor => factor.toString()).join(' ') + ')';\n};\n\npexprs.Iter.prototype.toString = function() {\n return this.expr + this.operator;\n};\n\npexprs.Not.prototype.toString = function() {\n return '~' + this.expr;\n};\n\npexprs.Lookahead.prototype.toString = function() {\n return '&' + this.expr;\n};\n\npexprs.Apply.prototype.toString = function() {\n if (this.args.length > 0) {\n const ps = this.args.map(arg => arg.toString());\n return this.ruleName + '<' + ps.join(',') + '>';\n } else {\n return this.ruleName;\n }\n};\n\npexprs.UnicodeChar.prototype.toString = function() {\n return '\\\\p{' + this.category + '}';\n};\n","import {Failure} from './Failure.js';\nimport {TerminalNode} from './nodes.js';\nimport {assert} from './common.js';\nimport {PExpr, Terminal} from './pexprs-main.js';\n\nexport class CaseInsensitiveTerminal extends PExpr {\n constructor(param) {\n super();\n this.obj = param;\n }\n\n _getString(state) {\n const terminal = state.currentApplication().args[this.obj.index];\n assert(terminal instanceof Terminal, 'expected a Terminal expression');\n return terminal.obj;\n }\n\n // Implementation of the PExpr API\n\n allowsSkippingPrecedingSpace() {\n return true;\n }\n\n eval(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const matchStr = this._getString(state);\n if (!inputStream.matchString(matchStr, true)) {\n state.processFailure(origPos, this);\n return false;\n } else {\n state.pushBinding(new TerminalNode(matchStr.length), origPos);\n return true;\n }\n }\n\n getArity() {\n return 1;\n }\n\n substituteParams(actuals) {\n return new CaseInsensitiveTerminal(this.obj.substituteParams(actuals));\n }\n\n toDisplayString() {\n return this.obj.toDisplayString() + ' (case-insensitive)';\n }\n\n toFailure(grammar) {\n return new Failure(\n this,\n this.obj.toFailure(grammar) + ' (case-insensitive)',\n 'description',\n );\n }\n\n _isNullable(grammar, memo) {\n return this.obj._isNullable(grammar, memo);\n }\n}\n","// --------------------------------------------------------------------\n// Extensions\n// --------------------------------------------------------------------\n\nimport './pexprs-allowsSkippingPrecedingSpace.js';\nimport './pexprs-assertAllApplicationsAreValid.js';\nimport './pexprs-assertChoicesHaveUniformArity.js';\nimport './pexprs-assertIteratedExprsAreNotNullable.js';\nimport './pexprs-eval.js';\nimport './pexprs-getArity.js';\nimport './pexprs-outputRecipe.js';\nimport './pexprs-introduceParams.js';\nimport './pexprs-isNullable.js';\nimport './pexprs-substituteParams.js';\nimport './pexprs-toArgumentNameList.js';\nimport './pexprs-toDisplayString.js';\nimport './pexprs-toFailure.js';\nimport './pexprs-toString.js';\n\nexport * from './pexprs-main.js';\nexport {CaseInsensitiveTerminal} from './CaseInsensitiveTerminal.js';\n","import {InputStream} from './InputStream.js';\nimport {MatchResult} from './MatchResult.js';\nimport {PosInfo} from './PosInfo.js';\nimport {Trace} from './Trace.js';\nimport * as pexprs from './pexprs.js';\nimport * as util from './util.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nlet builtInApplySyntacticBody;\n\nutil.awaitBuiltInRules(builtInRules => {\n builtInApplySyntacticBody = builtInRules.rules.applySyntactic.body;\n});\n\nconst applySpaces = new pexprs.Apply('spaces');\n\nexport class MatchState {\n constructor(matcher, startExpr, optPositionToRecordFailures) {\n this.matcher = matcher;\n this.startExpr = startExpr;\n\n this.grammar = matcher.grammar;\n this.input = matcher.getInput();\n this.inputStream = new InputStream(this.input);\n this.memoTable = matcher._memoTable;\n\n this.userData = undefined;\n this.doNotMemoize = false;\n\n this._bindings = [];\n this._bindingOffsets = [];\n this._applicationStack = [];\n this._posStack = [0];\n this.inLexifiedContextStack = [false];\n\n this.rightmostFailurePosition = -1;\n this._rightmostFailurePositionStack = [];\n this._recordedFailuresStack = [];\n\n if (optPositionToRecordFailures !== undefined) {\n this.positionToRecordFailures = optPositionToRecordFailures;\n this.recordedFailures = Object.create(null);\n }\n }\n\n posToOffset(pos) {\n return pos - this._posStack[this._posStack.length - 1];\n }\n\n enterApplication(posInfo, app) {\n this._posStack.push(this.inputStream.pos);\n this._applicationStack.push(app);\n this.inLexifiedContextStack.push(false);\n posInfo.enter(app);\n this._rightmostFailurePositionStack.push(this.rightmostFailurePosition);\n this.rightmostFailurePosition = -1;\n }\n\n exitApplication(posInfo, optNode) {\n const origPos = this._posStack.pop();\n this._applicationStack.pop();\n this.inLexifiedContextStack.pop();\n posInfo.exit();\n\n this.rightmostFailurePosition = Math.max(\n this.rightmostFailurePosition,\n this._rightmostFailurePositionStack.pop(),\n );\n\n if (optNode) {\n this.pushBinding(optNode, origPos);\n }\n }\n\n enterLexifiedContext() {\n this.inLexifiedContextStack.push(true);\n }\n\n exitLexifiedContext() {\n this.inLexifiedContextStack.pop();\n }\n\n currentApplication() {\n return this._applicationStack[this._applicationStack.length - 1];\n }\n\n inSyntacticContext() {\n const currentApplication = this.currentApplication();\n if (currentApplication) {\n return currentApplication.isSyntactic() && !this.inLexifiedContext();\n } else {\n // The top-level context is syntactic if the start application is.\n return this.startExpr.factors[0].isSyntactic();\n }\n }\n\n inLexifiedContext() {\n return this.inLexifiedContextStack[this.inLexifiedContextStack.length - 1];\n }\n\n skipSpaces() {\n this.pushFailuresInfo();\n this.eval(applySpaces);\n this.popBinding();\n this.popFailuresInfo();\n return this.inputStream.pos;\n }\n\n skipSpacesIfInSyntacticContext() {\n return this.inSyntacticContext() ? this.skipSpaces() : this.inputStream.pos;\n }\n\n maybeSkipSpacesBefore(expr) {\n if (expr.allowsSkippingPrecedingSpace() && expr !== applySpaces) {\n return this.skipSpacesIfInSyntacticContext();\n } else {\n return this.inputStream.pos;\n }\n }\n\n pushBinding(node, origPos) {\n this._bindings.push(node);\n this._bindingOffsets.push(this.posToOffset(origPos));\n }\n\n popBinding() {\n this._bindings.pop();\n this._bindingOffsets.pop();\n }\n\n numBindings() {\n return this._bindings.length;\n }\n\n truncateBindings(newLength) {\n // Yes, this is this really faster than setting the `length` property (tested with\n // bin/es5bench on Node v6.1.0).\n // Update 2021-10-25: still true on v14.15.5 — it's ~20% speedup on es5bench.\n while (this._bindings.length > newLength) {\n this.popBinding();\n }\n }\n\n getCurrentPosInfo() {\n return this.getPosInfo(this.inputStream.pos);\n }\n\n getPosInfo(pos) {\n let posInfo = this.memoTable[pos];\n if (!posInfo) {\n posInfo = this.memoTable[pos] = new PosInfo();\n }\n return posInfo;\n }\n\n processFailure(pos, expr) {\n this.rightmostFailurePosition = Math.max(this.rightmostFailurePosition, pos);\n\n if (this.recordedFailures && pos === this.positionToRecordFailures) {\n const app = this.currentApplication();\n if (app) {\n // Substitute parameters with the actual pexprs that were passed to\n // the current rule.\n expr = expr.substituteParams(app.args);\n } else {\n // This branch is only reached for the \"end-check\" that is\n // performed after the top-level application. In that case,\n // expr === pexprs.end so there is no need to substitute\n // parameters.\n }\n\n this.recordFailure(expr.toFailure(this.grammar), false);\n }\n }\n\n recordFailure(failure, shouldCloneIfNew) {\n const key = failure.toKey();\n if (!this.recordedFailures[key]) {\n this.recordedFailures[key] = shouldCloneIfNew ? failure.clone() : failure;\n } else if (this.recordedFailures[key].isFluffy() && !failure.isFluffy()) {\n this.recordedFailures[key].clearFluffy();\n }\n }\n\n recordFailures(failures, shouldCloneIfNew) {\n Object.keys(failures).forEach(key => {\n this.recordFailure(failures[key], shouldCloneIfNew);\n });\n }\n\n cloneRecordedFailures() {\n if (!this.recordedFailures) {\n return undefined;\n }\n\n const ans = Object.create(null);\n Object.keys(this.recordedFailures).forEach(key => {\n ans[key] = this.recordedFailures[key].clone();\n });\n return ans;\n }\n\n getRightmostFailurePosition() {\n return this.rightmostFailurePosition;\n }\n\n _getRightmostFailureOffset() {\n return this.rightmostFailurePosition >= 0 ?\n this.posToOffset(this.rightmostFailurePosition) :\n -1;\n }\n\n // Returns the memoized trace entry for `expr` at `pos`, if one exists, `null` otherwise.\n getMemoizedTraceEntry(pos, expr) {\n const posInfo = this.memoTable[pos];\n if (posInfo && expr instanceof pexprs.Apply) {\n const memoRec = posInfo.memo[expr.toMemoKey()];\n if (memoRec && memoRec.traceEntry) {\n const entry = memoRec.traceEntry.cloneWithExpr(expr);\n entry.isMemoized = true;\n return entry;\n }\n }\n return null;\n }\n\n // Returns a new trace entry, with the currently active trace array as its children.\n getTraceEntry(pos, expr, succeeded, bindings) {\n if (expr instanceof pexprs.Apply) {\n const app = this.currentApplication();\n const actuals = app ? app.args : [];\n expr = expr.substituteParams(actuals);\n }\n return (\n this.getMemoizedTraceEntry(pos, expr) ||\n new Trace(this.input, pos, this.inputStream.pos, expr, succeeded, bindings, this.trace)\n );\n }\n\n isTracing() {\n return !!this.trace;\n }\n\n hasNecessaryInfo(memoRec) {\n if (this.trace && !memoRec.traceEntry) {\n return false;\n }\n\n if (\n this.recordedFailures &&\n this.inputStream.pos + memoRec.rightmostFailureOffset === this.positionToRecordFailures\n ) {\n return !!memoRec.failuresAtRightmostPosition;\n }\n\n return true;\n }\n\n useMemoizedResult(origPos, memoRec) {\n if (this.trace) {\n this.trace.push(memoRec.traceEntry);\n }\n\n const memoRecRightmostFailurePosition =\n this.inputStream.pos + memoRec.rightmostFailureOffset;\n this.rightmostFailurePosition = Math.max(\n this.rightmostFailurePosition,\n memoRecRightmostFailurePosition,\n );\n if (\n this.recordedFailures &&\n this.positionToRecordFailures === memoRecRightmostFailurePosition &&\n memoRec.failuresAtRightmostPosition\n ) {\n this.recordFailures(memoRec.failuresAtRightmostPosition, true);\n }\n\n this.inputStream.examinedLength = Math.max(\n this.inputStream.examinedLength,\n memoRec.examinedLength + origPos,\n );\n\n if (memoRec.value) {\n this.inputStream.pos += memoRec.matchLength;\n this.pushBinding(memoRec.value, origPos);\n return true;\n }\n return false;\n }\n\n // Evaluate `expr` and return `true` if it succeeded, `false` otherwise. On success, `bindings`\n // will have `expr.getArity()` more elements than before, and the input stream's position may\n // have increased. On failure, `bindings` and position will be unchanged.\n eval(expr) {\n const {inputStream} = this;\n const origNumBindings = this._bindings.length;\n const origUserData = this.userData;\n\n let origRecordedFailures;\n if (this.recordedFailures) {\n origRecordedFailures = this.recordedFailures;\n this.recordedFailures = Object.create(null);\n }\n\n const origPos = inputStream.pos;\n const memoPos = this.maybeSkipSpacesBefore(expr);\n\n let origTrace;\n if (this.trace) {\n origTrace = this.trace;\n this.trace = [];\n }\n\n // Do the actual evaluation.\n const ans = expr.eval(this);\n\n if (this.trace) {\n const bindings = this._bindings.slice(origNumBindings);\n const traceEntry = this.getTraceEntry(memoPos, expr, ans, bindings);\n traceEntry.isImplicitSpaces = expr === applySpaces;\n traceEntry.isRootNode = expr === this.startExpr;\n origTrace.push(traceEntry);\n this.trace = origTrace;\n }\n\n if (ans) {\n if (this.recordedFailures && inputStream.pos === this.positionToRecordFailures) {\n Object.keys(this.recordedFailures).forEach(key => {\n this.recordedFailures[key].makeFluffy();\n });\n }\n } else {\n // Reset the position, bindings, and userData.\n inputStream.pos = origPos;\n this.truncateBindings(origNumBindings);\n this.userData = origUserData;\n }\n\n if (this.recordedFailures) {\n this.recordFailures(origRecordedFailures, false);\n }\n\n // The built-in applySyntactic rule needs special handling: we want to skip\n // trailing spaces, just as with the top-level application of a syntactic rule.\n if (expr === builtInApplySyntacticBody) {\n this.skipSpaces();\n }\n\n return ans;\n }\n\n getMatchResult() {\n this.grammar._setUpMatchState(this);\n this.eval(this.startExpr);\n let rightmostFailures;\n if (this.recordedFailures) {\n rightmostFailures = Object.keys(this.recordedFailures).map(\n key => this.recordedFailures[key],\n );\n }\n const cst = this._bindings[0];\n if (cst) {\n cst.grammar = this.grammar;\n }\n return new MatchResult(\n this.matcher,\n this.input,\n this.startExpr,\n cst,\n this._bindingOffsets[0],\n this.rightmostFailurePosition,\n rightmostFailures,\n );\n }\n\n getTrace() {\n this.trace = [];\n const matchResult = this.getMatchResult();\n\n // The trace node for the start rule is always the last entry. If it is a syntactic rule,\n // the first entry is for an application of 'spaces'.\n // TODO(pdubroy): Clean this up by introducing a special `Match<startAppl>` rule, which will\n // ensure that there is always a single root trace node.\n const rootTrace = this.trace[this.trace.length - 1];\n rootTrace.result = matchResult;\n return rootTrace;\n }\n\n pushFailuresInfo() {\n this._rightmostFailurePositionStack.push(this.rightmostFailurePosition);\n this._recordedFailuresStack.push(this.recordedFailures);\n }\n\n popFailuresInfo() {\n this.rightmostFailurePosition = this._rightmostFailurePositionStack.pop();\n this.recordedFailures = this._recordedFailuresStack.pop();\n }\n}\n","import {grammarDoesNotSupportIncrementalParsing} from './errors.js';\nimport {MatchState} from './MatchState.js';\nimport * as pexprs from './pexprs.js';\n\nexport class Matcher {\n constructor(grammar) {\n this.grammar = grammar;\n this._memoTable = [];\n this._input = '';\n this._isMemoTableStale = false;\n }\n\n _resetMemoTable() {\n this._memoTable = [];\n this._isMemoTableStale = false;\n }\n\n getInput() {\n return this._input;\n }\n\n setInput(str) {\n if (this._input !== str) {\n this.replaceInputRange(0, this._input.length, str);\n }\n return this;\n }\n\n replaceInputRange(startIdx, endIdx, str) {\n const prevInput = this._input;\n const memoTable = this._memoTable;\n if (\n startIdx < 0 ||\n startIdx > prevInput.length ||\n endIdx < 0 ||\n endIdx > prevInput.length ||\n startIdx > endIdx\n ) {\n throw new Error('Invalid indices: ' + startIdx + ' and ' + endIdx);\n }\n\n // update input\n this._input = prevInput.slice(0, startIdx) + str + prevInput.slice(endIdx);\n if (this._input !== prevInput && memoTable.length > 0) {\n this._isMemoTableStale = true;\n }\n\n // update memo table (similar to the above)\n const restOfMemoTable = memoTable.slice(endIdx);\n memoTable.length = startIdx;\n for (let idx = 0; idx < str.length; idx++) {\n memoTable.push(undefined);\n }\n for (const posInfo of restOfMemoTable) {\n memoTable.push(posInfo);\n }\n\n // Invalidate memoRecs\n for (let pos = 0; pos < startIdx; pos++) {\n const posInfo = memoTable[pos];\n if (posInfo) {\n posInfo.clearObsoleteEntries(pos, startIdx);\n }\n }\n\n return this;\n }\n\n match(optStartApplicationStr, options = {incremental: true}) {\n return this._match(this._getStartExpr(optStartApplicationStr), {\n incremental: options.incremental,\n tracing: false,\n });\n }\n\n trace(optStartApplicationStr, options = {incremental: true}) {\n return this._match(this._getStartExpr(optStartApplicationStr), {\n incremental: options.incremental,\n tracing: true,\n });\n }\n\n _match(startExpr, options = {}) {\n const opts = {\n tracing: false,\n incremental: true,\n positionToRecordFailures: undefined,\n ...options,\n };\n if (!opts.incremental) {\n this._resetMemoTable();\n } else if (this._isMemoTableStale && !this.grammar.supportsIncrementalParsing) {\n throw grammarDoesNotSupportIncrementalParsing(this.grammar);\n }\n\n const state = new MatchState(this, startExpr, opts.positionToRecordFailures);\n return opts.tracing ? state.getTrace() : state.getMatchResult();\n }\n\n /*\n Returns the starting expression for this Matcher's associated grammar. If\n `optStartApplicationStr` is specified, it is a string expressing a rule application in the\n grammar. If not specified, the grammar's default start rule will be used.\n */\n _getStartExpr(optStartApplicationStr) {\n const applicationStr = optStartApplicationStr || this.grammar.defaultStartRule;\n if (!applicationStr) {\n throw new Error('Missing start rule argument -- the grammar has no default start rule.');\n }\n\n const startApp = this.grammar.parseApplication(applicationStr);\n return new pexprs.Seq([startApp, pexprs.end]);\n }\n}\n","import {InputStream} from './InputStream.js';\nimport {IterationNode} from './nodes.js';\nimport {MatchResult} from './MatchResult.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport * as util from './util.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nconst globalActionStack = [];\n\nconst hasOwnProperty = (x, prop) => Object.prototype.hasOwnProperty.call(x, prop);\n\n// ----------------- Wrappers -----------------\n\n// Wrappers decorate CST nodes with all of the functionality (i.e., operations and attributes)\n// provided by a Semantics (see below). `Wrapper` is the abstract superclass of all wrappers. A\n// `Wrapper` must have `_node` and `_semantics` instance variables, which refer to the CST node and\n// Semantics (resp.) for which it was created, and a `_childWrappers` instance variable which is\n// used to cache the wrapper instances that are created for its child nodes. Setting these instance\n// variables is the responsibility of the constructor of each Semantics-specific subclass of\n// `Wrapper`.\nclass Wrapper {\n constructor(node, sourceInterval, baseInterval) {\n this._node = node;\n this.source = sourceInterval;\n\n // The interval that the childOffsets of `node` are relative to. It should be the source\n // of the closest Nonterminal node.\n this._baseInterval = baseInterval;\n\n if (node.isNonterminal()) {\n common.assert(sourceInterval === baseInterval);\n }\n this._childWrappers = [];\n }\n\n _forgetMemoizedResultFor(attributeName) {\n // Remove the memoized attribute from the cstNode and all its children.\n delete this._node[this._semantics.attributeKeys[attributeName]];\n this.children.forEach(child => {\n child._forgetMemoizedResultFor(attributeName);\n });\n }\n\n // Returns the wrapper of the specified child node. Child wrappers are created lazily and\n // cached in the parent wrapper's `_childWrappers` instance variable.\n child(idx) {\n if (!(0 <= idx && idx < this._node.numChildren())) {\n // TODO: Consider throwing an exception here.\n return undefined;\n }\n let childWrapper = this._childWrappers[idx];\n if (!childWrapper) {\n const childNode = this._node.childAt(idx);\n const offset = this._node.childOffsets[idx];\n\n const source = this._baseInterval.subInterval(offset, childNode.matchLength);\n const base = childNode.isNonterminal() ? source : this._baseInterval;\n childWrapper = this._childWrappers[idx] = this._semantics.wrap(childNode, source, base);\n }\n return childWrapper;\n }\n\n // Returns an array containing the wrappers of all of the children of the node associated\n // with this wrapper.\n _children() {\n // Force the creation of all child wrappers\n for (let idx = 0; idx < this._node.numChildren(); idx++) {\n this.child(idx);\n }\n return this._childWrappers;\n }\n\n // Returns `true` if the CST node associated with this wrapper corresponds to an iteration\n // expression, i.e., a Kleene-*, Kleene-+, or an optional. Returns `false` otherwise.\n isIteration() {\n return this._node.isIteration();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a terminal node, `false`\n // otherwise.\n isTerminal() {\n return this._node.isTerminal();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a nonterminal node, `false`\n // otherwise.\n isNonterminal() {\n return this._node.isNonterminal();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a nonterminal node\n // corresponding to a syntactic rule, `false` otherwise.\n isSyntactic() {\n return this.isNonterminal() && this._node.isSyntactic();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a nonterminal node\n // corresponding to a lexical rule, `false` otherwise.\n isLexical() {\n return this.isNonterminal() && this._node.isLexical();\n }\n\n // Returns `true` if the CST node associated with this wrapper is an iterator node\n // having either one or no child (? operator), `false` otherwise.\n // Otherwise, throws an exception.\n isOptional() {\n return this._node.isOptional();\n }\n\n // Create a new _iter wrapper in the same semantics as this wrapper.\n iteration(optChildWrappers) {\n const childWrappers = optChildWrappers || [];\n\n const childNodes = childWrappers.map(c => c._node);\n const iter = new IterationNode(childNodes, [], -1, false);\n\n const wrapper = this._semantics.wrap(iter, null, null);\n wrapper._childWrappers = childWrappers;\n return wrapper;\n }\n\n // Returns an array containing the children of this CST node.\n get children() {\n return this._children();\n }\n\n // Returns the name of grammar rule that created this CST node.\n get ctorName() {\n return this._node.ctorName;\n }\n\n // Returns the number of children of this CST node.\n get numChildren() {\n return this._node.numChildren();\n }\n\n // Returns the contents of the input stream consumed by this CST node.\n get sourceString() {\n return this.source.contents;\n }\n}\n\n// ----------------- Semantics -----------------\n\n// A Semantics is a container for a family of Operations and Attributes for a given grammar.\n// Semantics enable modularity (different clients of a grammar can create their set of operations\n// and attributes in isolation) and extensibility even when operations and attributes are mutually-\n// recursive. This constructor should not be called directly except from\n// `Semantics.createSemantics`. The normal ways to create a Semantics, given a grammar 'g', are\n// `g.createSemantics()` and `g.extendSemantics(parentSemantics)`.\nexport class Semantics {\n constructor(grammar, superSemantics) {\n const self = this;\n this.grammar = grammar;\n this.checkedActionDicts = false;\n\n // Constructor for wrapper instances, which are passed as the arguments to the semantic actions\n // of an operation or attribute. Operations and attributes require double dispatch: the semantic\n // action is chosen based on both the node's type and the semantics. Wrappers ensure that\n // the `execute` method is called with the correct (most specific) semantics object as an\n // argument.\n this.Wrapper = class extends (superSemantics ? superSemantics.Wrapper : Wrapper) {\n constructor(node, sourceInterval, baseInterval) {\n super(node, sourceInterval, baseInterval);\n self.checkActionDictsIfHaventAlready();\n this._semantics = self;\n }\n\n toString() {\n return '[semantics wrapper for ' + self.grammar.name + ']';\n }\n };\n\n this.super = superSemantics;\n if (superSemantics) {\n if (!(grammar.equals(this.super.grammar) || grammar._inheritsFrom(this.super.grammar))) {\n throw new Error(\n \"Cannot extend a semantics for grammar '\" +\n this.super.grammar.name +\n \"' for use with grammar '\" +\n grammar.name +\n \"' (not a sub-grammar)\",\n );\n }\n this.operations = Object.create(this.super.operations);\n this.attributes = Object.create(this.super.attributes);\n this.attributeKeys = Object.create(null);\n\n // Assign unique symbols for each of the attributes inherited from the super-semantics so that\n // they are memoized independently.\n // eslint-disable-next-line guard-for-in\n for (const attributeName in this.attributes) {\n Object.defineProperty(this.attributeKeys, attributeName, {\n value: util.uniqueId(attributeName),\n });\n }\n } else {\n this.operations = Object.create(null);\n this.attributes = Object.create(null);\n this.attributeKeys = Object.create(null);\n }\n }\n\n toString() {\n return '[semantics for ' + this.grammar.name + ']';\n }\n\n checkActionDictsIfHaventAlready() {\n if (!this.checkedActionDicts) {\n this.checkActionDicts();\n this.checkedActionDicts = true;\n }\n }\n\n // Checks that the action dictionaries for all operations and attributes in this semantics,\n // including the ones that were inherited from the super-semantics, agree with the grammar.\n // Throws an exception if one or more of them doesn't.\n checkActionDicts() {\n let name;\n // eslint-disable-next-line guard-for-in\n for (name in this.operations) {\n this.operations[name].checkActionDict(this.grammar);\n }\n // eslint-disable-next-line guard-for-in\n for (name in this.attributes) {\n this.attributes[name].checkActionDict(this.grammar);\n }\n }\n\n toRecipe(semanticsOnly) {\n function hasSuperSemantics(s) {\n return s.super !== Semantics.BuiltInSemantics._getSemantics();\n }\n\n let str = '(function(g) {\\n';\n if (hasSuperSemantics(this)) {\n str += ' var semantics = ' + this.super.toRecipe(true) + '(g';\n\n const superSemanticsGrammar = this.super.grammar;\n let relatedGrammar = this.grammar;\n while (relatedGrammar !== superSemanticsGrammar) {\n str += '.superGrammar';\n relatedGrammar = relatedGrammar.superGrammar;\n }\n\n str += ');\\n';\n str += ' return g.extendSemantics(semantics)';\n } else {\n str += ' return g.createSemantics()';\n }\n ['Operation', 'Attribute'].forEach(type => {\n const semanticOperations = this[type.toLowerCase() + 's'];\n Object.keys(semanticOperations).forEach(name => {\n const {actionDict, formals, builtInDefault} = semanticOperations[name];\n\n let signature = name;\n if (formals.length > 0) {\n signature += '(' + formals.join(', ') + ')';\n }\n\n let method;\n if (hasSuperSemantics(this) && this.super[type.toLowerCase() + 's'][name]) {\n method = 'extend' + type;\n } else {\n method = 'add' + type;\n }\n str += '\\n .' + method + '(' + JSON.stringify(signature) + ', {';\n\n const srcArray = [];\n Object.keys(actionDict).forEach(actionName => {\n if (actionDict[actionName] !== builtInDefault) {\n let source = actionDict[actionName].toString().trim();\n\n // Convert method shorthand to plain old function syntax.\n // https://github.com/harc/ohm/issues/263\n source = source.replace(/^.*\\(/, 'function(');\n\n srcArray.push('\\n ' + JSON.stringify(actionName) + ': ' + source);\n }\n });\n str += srcArray.join(',') + '\\n })';\n });\n });\n str += ';\\n })';\n\n if (!semanticsOnly) {\n str =\n '(function() {\\n' +\n ' var grammar = this.fromRecipe(' +\n this.grammar.toRecipe() +\n ');\\n' +\n ' var semantics = ' +\n str +\n '(grammar);\\n' +\n ' return semantics;\\n' +\n '});\\n';\n }\n\n return str;\n }\n\n addOperationOrAttribute(type, signature, actionDict) {\n const typePlural = type + 's';\n\n const parsedNameAndFormalArgs = parseSignature(signature, type);\n const {name} = parsedNameAndFormalArgs;\n const {formals} = parsedNameAndFormalArgs;\n\n // TODO: check that there are no duplicate formal arguments\n\n this.assertNewName(name, type);\n\n // Create the action dictionary for this operation / attribute that contains a `_default` action\n // which defines the default behavior of iteration, terminal, and non-terminal nodes...\n const builtInDefault = newDefaultAction(type, name, doIt);\n const realActionDict = {_default: builtInDefault};\n // ... and add in the actions supplied by the programmer, which may override some or all of the\n // default ones.\n Object.keys(actionDict).forEach(name => {\n realActionDict[name] = actionDict[name];\n });\n\n const entry =\n type === 'operation' ?\n new Operation(name, formals, realActionDict, builtInDefault) :\n new Attribute(name, realActionDict, builtInDefault);\n\n // The following check is not strictly necessary (it will happen later anyway) but it's better\n // to catch errors early.\n entry.checkActionDict(this.grammar);\n\n this[typePlural][name] = entry;\n\n function doIt(...args) {\n // Dispatch to most specific version of this operation / attribute -- it may have been\n // overridden by a sub-semantics.\n const thisThing = this._semantics[typePlural][name];\n\n // Check that the caller passed the correct number of arguments.\n if (arguments.length !== thisThing.formals.length) {\n throw new Error(\n 'Invalid number of arguments passed to ' +\n name +\n ' ' +\n type +\n ' (expected ' +\n thisThing.formals.length +\n ', got ' +\n arguments.length +\n ')',\n );\n }\n\n // Create an \"arguments object\" from the arguments that were passed to this\n // operation / attribute.\n const argsObj = Object.create(null);\n for (const [idx, val] of Object.entries(args)) {\n const formal = thisThing.formals[idx];\n argsObj[formal] = val;\n }\n\n const oldArgs = this.args;\n this.args = argsObj;\n const ans = thisThing.execute(this._semantics, this);\n this.args = oldArgs;\n return ans;\n }\n\n if (type === 'operation') {\n this.Wrapper.prototype[name] = doIt;\n this.Wrapper.prototype[name].toString = function() {\n return '[' + name + ' operation]';\n };\n } else {\n Object.defineProperty(this.Wrapper.prototype, name, {\n get: doIt,\n configurable: true, // So the property can be deleted.\n });\n Object.defineProperty(this.attributeKeys, name, {\n value: util.uniqueId(name),\n });\n }\n }\n\n extendOperationOrAttribute(type, name, actionDict) {\n const typePlural = type + 's';\n\n // Make sure that `name` really is just a name, i.e., that it doesn't also contain formals.\n parseSignature(name, 'attribute');\n\n if (!(this.super && name in this.super[typePlural])) {\n throw new Error(\n 'Cannot extend ' +\n type +\n \" '\" +\n name +\n \"': did not inherit an \" +\n type +\n ' with that name',\n );\n }\n if (hasOwnProperty(this[typePlural], name)) {\n throw new Error('Cannot extend ' + type + \" '\" + name + \"' again\");\n }\n\n // Create a new operation / attribute whose actionDict delegates to the super operation /\n // attribute's actionDict, and which has all the keys from `inheritedActionDict`.\n const inheritedFormals = this[typePlural][name].formals;\n const inheritedActionDict = this[typePlural][name].actionDict;\n const newActionDict = Object.create(inheritedActionDict);\n Object.keys(actionDict).forEach(name => {\n newActionDict[name] = actionDict[name];\n });\n\n this[typePlural][name] =\n type === 'operation' ?\n new Operation(name, inheritedFormals, newActionDict) :\n new Attribute(name, newActionDict);\n\n // The following check is not strictly necessary (it will happen later anyway) but it's better\n // to catch errors early.\n this[typePlural][name].checkActionDict(this.grammar);\n }\n\n assertNewName(name, type) {\n if (hasOwnProperty(Wrapper.prototype, name)) {\n throw new Error('Cannot add ' + type + \" '\" + name + \"': that's a reserved name\");\n }\n if (name in this.operations) {\n throw new Error(\n 'Cannot add ' + type + \" '\" + name + \"': an operation with that name already exists\",\n );\n }\n if (name in this.attributes) {\n throw new Error(\n 'Cannot add ' + type + \" '\" + name + \"': an attribute with that name already exists\",\n );\n }\n }\n\n // Returns a wrapper for the given CST `node` in this semantics.\n // If `node` is already a wrapper, returns `node` itself. // TODO: why is this needed?\n wrap(node, source, optBaseInterval) {\n const baseInterval = optBaseInterval || source;\n return node instanceof this.Wrapper ? node : new this.Wrapper(node, source, baseInterval);\n }\n}\n\nfunction parseSignature(signature, type) {\n if (!Semantics.prototypeGrammar) {\n // The Operations and Attributes grammar won't be available while Ohm is loading,\n // but we can get away the following simplification b/c none of the operations\n // that are used while loading take arguments.\n common.assert(signature.indexOf('(') === -1);\n return {\n name: signature,\n formals: [],\n };\n }\n\n const r = Semantics.prototypeGrammar.match(\n signature,\n type === 'operation' ? 'OperationSignature' : 'AttributeSignature',\n );\n if (r.failed()) {\n throw new Error(r.message);\n }\n\n return Semantics.prototypeGrammarSemantics(r).parse();\n}\n\nfunction newDefaultAction(type, name, doIt) {\n return function(...children) {\n const thisThing = this._semantics.operations[name] || this._semantics.attributes[name];\n const args = thisThing.formals.map(formal => this.args[formal]);\n\n if (!this.isIteration() && children.length === 1) {\n // This CST node corresponds to a non-terminal in the grammar (e.g., AddExpr). The fact that\n // we got here means that this action dictionary doesn't have an action for this particular\n // non-terminal or a generic `_nonterminal` action.\n // As a convenience, if this node only has one child, we just return the result of applying\n // this operation / attribute to the child node.\n return doIt.apply(children[0], args);\n } else {\n // Otherwise, we throw an exception to let the programmer know that we don't know what\n // to do with this node.\n throw errors.missingSemanticAction(this.ctorName, name, type, globalActionStack);\n }\n };\n}\n\n// Creates a new Semantics instance for `grammar`, inheriting operations and attributes from\n// `optSuperSemantics`, if it is specified. Returns a function that acts as a proxy for the new\n// Semantics instance. When that function is invoked with a CST node as an argument, it returns\n// a wrapper for that node which gives access to the operations and attributes provided by this\n// semantics.\nSemantics.createSemantics = function(grammar, optSuperSemantics) {\n const s = new Semantics(\n grammar,\n optSuperSemantics !== undefined ?\n optSuperSemantics :\n Semantics.BuiltInSemantics._getSemantics(),\n );\n\n // To enable clients to invoke a semantics like a function, return a function that acts as a proxy\n // for `s`, which is the real `Semantics` instance.\n const proxy = function ASemantics(matchResult) {\n if (!(matchResult instanceof MatchResult)) {\n throw new TypeError(\n 'Semantics expected a MatchResult, but got ' +\n common.unexpectedObjToString(matchResult),\n );\n }\n if (matchResult.failed()) {\n throw new TypeError('cannot apply Semantics to ' + matchResult.toString());\n }\n\n const cst = matchResult._cst;\n if (cst.grammar !== grammar) {\n throw new Error(\n \"Cannot use a MatchResult from grammar '\" +\n cst.grammar.name +\n \"' with a semantics for '\" +\n grammar.name +\n \"'\",\n );\n }\n const inputStream = new InputStream(matchResult.input);\n return s.wrap(cst, inputStream.interval(matchResult._cstOffset, matchResult.input.length));\n };\n\n // Forward public methods from the proxy to the semantics instance.\n proxy.addOperation = function(signature, actionDict) {\n s.addOperationOrAttribute('operation', signature, actionDict);\n return proxy;\n };\n proxy.extendOperation = function(name, actionDict) {\n s.extendOperationOrAttribute('operation', name, actionDict);\n return proxy;\n };\n proxy.addAttribute = function(name, actionDict) {\n s.addOperationOrAttribute('attribute', name, actionDict);\n return proxy;\n };\n proxy.extendAttribute = function(name, actionDict) {\n s.extendOperationOrAttribute('attribute', name, actionDict);\n return proxy;\n };\n proxy._getActionDict = function(operationOrAttributeName) {\n const action =\n s.operations[operationOrAttributeName] || s.attributes[operationOrAttributeName];\n if (!action) {\n throw new Error(\n '\"' +\n operationOrAttributeName +\n '\" is not a valid operation or attribute ' +\n 'name in this semantics for \"' +\n grammar.name +\n '\"',\n );\n }\n return action.actionDict;\n };\n proxy._remove = function(operationOrAttributeName) {\n let semantic;\n if (operationOrAttributeName in s.operations) {\n semantic = s.operations[operationOrAttributeName];\n delete s.operations[operationOrAttributeName];\n } else if (operationOrAttributeName in s.attributes) {\n semantic = s.attributes[operationOrAttributeName];\n delete s.attributes[operationOrAttributeName];\n }\n delete s.Wrapper.prototype[operationOrAttributeName];\n return semantic;\n };\n proxy.getOperationNames = function() {\n return Object.keys(s.operations);\n };\n proxy.getAttributeNames = function() {\n return Object.keys(s.attributes);\n };\n proxy.getGrammar = function() {\n return s.grammar;\n };\n proxy.toRecipe = function(semanticsOnly) {\n return s.toRecipe(semanticsOnly);\n };\n\n // Make the proxy's toString() work.\n proxy.toString = s.toString.bind(s);\n\n // Returns the semantics for the proxy.\n proxy._getSemantics = function() {\n return s;\n };\n\n return proxy;\n};\n\n// ----------------- Operation -----------------\n\n// An Operation represents a function to be applied to a concrete syntax tree (CST) -- it's very\n// similar to a Visitor (http://en.wikipedia.org/wiki/Visitor_pattern). An operation is executed by\n// recursively walking the CST, and at each node, invoking the matching semantic action from\n// `actionDict`. See `Operation.prototype.execute` for details of how a CST node's matching semantic\n// action is found.\nclass Operation {\n constructor(name, formals, actionDict, builtInDefault) {\n this.name = name;\n this.formals = formals;\n this.actionDict = actionDict;\n this.builtInDefault = builtInDefault;\n }\n\n checkActionDict(grammar) {\n grammar._checkTopDownActionDict(this.typeName, this.name, this.actionDict);\n }\n\n // Execute this operation on the CST node associated with `nodeWrapper` in the context of the\n // given Semantics instance.\n execute(semantics, nodeWrapper) {\n try {\n // Look for a semantic action whose name matches the node's constructor name, which is either\n // the name of a rule in the grammar, or '_terminal' (for a terminal node), or '_iter' (for an\n // iteration node).\n const {ctorName} = nodeWrapper._node;\n let actionFn = this.actionDict[ctorName];\n if (actionFn) {\n globalActionStack.push([this, ctorName]);\n return actionFn.apply(nodeWrapper, nodeWrapper._children());\n }\n\n // The action dictionary does not contain a semantic action for this specific type of node.\n // If this is a nonterminal node and the programmer has provided a `_nonterminal` semantic\n // action, we invoke it:\n if (nodeWrapper.isNonterminal()) {\n actionFn = this.actionDict._nonterminal;\n if (actionFn) {\n globalActionStack.push([this, '_nonterminal', ctorName]);\n return actionFn.apply(nodeWrapper, nodeWrapper._children());\n }\n }\n\n // Otherwise, we invoke the '_default' semantic action.\n globalActionStack.push([this, 'default action', ctorName]);\n return this.actionDict._default.apply(nodeWrapper, nodeWrapper._children());\n } finally {\n globalActionStack.pop();\n }\n }\n}\n\nOperation.prototype.typeName = 'operation';\n\n// ----------------- Attribute -----------------\n\n// Attributes are Operations whose results are memoized. This means that, for any given semantics,\n// the semantic action for a CST node will be invoked no more than once.\nclass Attribute extends Operation {\n constructor(name, actionDict, builtInDefault) {\n super(name, [], actionDict, builtInDefault);\n }\n\n execute(semantics, nodeWrapper) {\n const node = nodeWrapper._node;\n const key = semantics.attributeKeys[this.name];\n if (!hasOwnProperty(node, key)) {\n // The following is a super-send -- isn't JS beautiful? :/\n node[key] = Operation.prototype.execute.call(this, semantics, nodeWrapper);\n }\n return node[key];\n }\n}\n\nAttribute.prototype.typeName = 'attribute';\n","import {Matcher} from './Matcher.js';\nimport {Semantics} from './Semantics.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nconst SPECIAL_ACTION_NAMES = ['_iter', '_terminal', '_nonterminal', '_default'];\n\nfunction getSortedRuleValues(grammar) {\n return Object.keys(grammar.rules)\n .sort()\n .map(name => grammar.rules[name]);\n}\n\n// Until ES2019, JSON was not a valid subset of JavaScript because U+2028 (line separator)\n// and U+2029 (paragraph separator) are allowed in JSON string literals, but not in JS.\n// This function properly encodes those two characters so that the resulting string is\n// represents both valid JSON, and valid JavaScript (for ES2018 and below).\n// See https://v8.dev/features/subsume-json for more details.\nconst jsonToJS = str => str.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\n\nlet ohmGrammar;\nlet buildGrammar;\n\nexport class Grammar {\n constructor(name, superGrammar, rules, optDefaultStartRule) {\n this.name = name;\n this.superGrammar = superGrammar;\n this.rules = rules;\n if (optDefaultStartRule) {\n if (!(optDefaultStartRule in rules)) {\n throw new Error(\n \"Invalid start rule: '\" +\n optDefaultStartRule +\n \"' is not a rule in grammar '\" +\n name +\n \"'\",\n );\n }\n this.defaultStartRule = optDefaultStartRule;\n }\n this._matchStateInitializer = undefined;\n this.supportsIncrementalParsing = true;\n }\n\n matcher() {\n return new Matcher(this);\n }\n\n // Return true if the grammar is a built-in grammar, otherwise false.\n // NOTE: This might give an unexpected result if called before BuiltInRules is defined!\n isBuiltIn() {\n return this === Grammar.ProtoBuiltInRules || this === Grammar.BuiltInRules;\n }\n\n equals(g) {\n if (this === g) {\n return true;\n }\n // Do the cheapest comparisons first.\n if (\n g == null ||\n this.name !== g.name ||\n this.defaultStartRule !== g.defaultStartRule ||\n !(this.superGrammar === g.superGrammar || this.superGrammar.equals(g.superGrammar))\n ) {\n return false;\n }\n const myRules = getSortedRuleValues(this);\n const otherRules = getSortedRuleValues(g);\n return (\n myRules.length === otherRules.length &&\n myRules.every((rule, i) => {\n return (\n rule.description === otherRules[i].description &&\n rule.formals.join(',') === otherRules[i].formals.join(',') &&\n rule.body.toString() === otherRules[i].body.toString()\n );\n })\n );\n }\n\n match(input, optStartApplication) {\n const m = this.matcher();\n m.replaceInputRange(0, 0, input);\n return m.match(optStartApplication);\n }\n\n trace(input, optStartApplication) {\n const m = this.matcher();\n m.replaceInputRange(0, 0, input);\n return m.trace(optStartApplication);\n }\n\n createSemantics() {\n return Semantics.createSemantics(this);\n }\n\n extendSemantics(superSemantics) {\n return Semantics.createSemantics(this, superSemantics._getSemantics());\n }\n\n // Check that every key in `actionDict` corresponds to a semantic action, and that it maps to\n // a function of the correct arity. If not, throw an exception.\n _checkTopDownActionDict(what, name, actionDict) {\n const problems = [];\n\n // eslint-disable-next-line guard-for-in\n for (const k in actionDict) {\n const v = actionDict[k];\n const isSpecialAction = SPECIAL_ACTION_NAMES.includes(k);\n\n if (!isSpecialAction && !(k in this.rules)) {\n problems.push(`'${k}' is not a valid semantic action for '${this.name}'`);\n continue;\n }\n if (typeof v !== 'function') {\n problems.push(`'${k}' must be a function in an action dictionary for '${this.name}'`);\n continue;\n }\n const actual = v.length;\n const expected = this._topDownActionArity(k);\n if (actual !== expected) {\n let details;\n if (k === '_iter' || k === '_nonterminal') {\n details =\n `it should use a rest parameter, e.g. \\`${k}(...children) {}\\`. ` +\n 'NOTE: this is new in Ohm v16 — see https://ohmjs.org/d/ati for details.';\n } else {\n details = `expected ${expected}, got ${actual}`;\n }\n problems.push(`Semantic action '${k}' has the wrong arity: ${details}`);\n }\n }\n if (problems.length > 0) {\n const prettyProblems = problems.map(problem => '- ' + problem);\n const error = new Error(\n [\n `Found errors in the action dictionary of the '${name}' ${what}:`,\n ...prettyProblems,\n ].join('\\n'),\n );\n error.problems = problems;\n throw error;\n }\n }\n\n // Return the expected arity for a semantic action named `actionName`, which\n // is either a rule name or a special action name like '_nonterminal'.\n _topDownActionArity(actionName) {\n // All special actions have an expected arity of 0, though all but _terminal\n // are expected to use the rest parameter syntax (e.g. `_iter(...children)`).\n // This is considered to have arity 0, i.e. `((...args) => {}).length` is 0.\n return SPECIAL_ACTION_NAMES.includes(actionName) ?\n 0 :\n this.rules[actionName].body.getArity();\n }\n\n _inheritsFrom(grammar) {\n let g = this.superGrammar;\n while (g) {\n if (g.equals(grammar, true)) {\n return true;\n }\n g = g.superGrammar;\n }\n return false;\n }\n\n toRecipe(superGrammarExpr = undefined) {\n const metaInfo = {};\n // Include the grammar source if it is available.\n if (this.source) {\n metaInfo.source = this.source.contents;\n }\n\n let startRule = null;\n if (this.defaultStartRule) {\n startRule = this.defaultStartRule;\n }\n\n const rules = {};\n Object.keys(this.rules).forEach(ruleName => {\n const ruleInfo = this.rules[ruleName];\n const {body} = ruleInfo;\n const isDefinition = !this.superGrammar || !this.superGrammar.rules[ruleName];\n\n let operation;\n if (isDefinition) {\n operation = 'define';\n } else {\n operation = body instanceof pexprs.Extend ? 'extend' : 'override';\n }\n\n const metaInfo = {};\n if (ruleInfo.source && this.source) {\n const adjusted = ruleInfo.source.relativeTo(this.source);\n metaInfo.sourceInterval = [adjusted.startIdx, adjusted.endIdx];\n }\n\n const description = isDefinition ? ruleInfo.description : null;\n const bodyRecipe = body.outputRecipe(ruleInfo.formals, this.source);\n\n rules[ruleName] = [\n operation, // \"define\"/\"extend\"/\"override\"\n metaInfo,\n description,\n ruleInfo.formals,\n bodyRecipe,\n ];\n });\n\n // If the caller provided an expression to use for the supergrammar, use that.\n // Otherwise, if the supergrammar is a user grammar, use its recipe inline.\n let superGrammarOutput = 'null';\n if (superGrammarExpr) {\n superGrammarOutput = superGrammarExpr;\n } else if (this.superGrammar && !this.superGrammar.isBuiltIn()) {\n superGrammarOutput = this.superGrammar.toRecipe();\n }\n\n const recipeElements = [\n ...['grammar', metaInfo, this.name].map(JSON.stringify),\n superGrammarOutput,\n ...[startRule, rules].map(JSON.stringify),\n ];\n return jsonToJS(`[${recipeElements.join(',')}]`);\n }\n\n // TODO: Come up with better names for these methods.\n // TODO: Write the analog of these methods for inherited attributes.\n toOperationActionDictionaryTemplate() {\n return this._toOperationOrAttributeActionDictionaryTemplate();\n }\n toAttributeActionDictionaryTemplate() {\n return this._toOperationOrAttributeActionDictionaryTemplate();\n }\n\n _toOperationOrAttributeActionDictionaryTemplate() {\n // TODO: add the super-grammar's templates at the right place, e.g., a case for AddExpr_plus\n // should appear next to other cases of AddExpr.\n\n const sb = new common.StringBuffer();\n sb.append('{');\n\n let first = true;\n // eslint-disable-next-line guard-for-in\n for (const ruleName in this.rules) {\n const {body} = this.rules[ruleName];\n if (first) {\n first = false;\n } else {\n sb.append(',');\n }\n sb.append('\\n');\n sb.append(' ');\n this.addSemanticActionTemplate(ruleName, body, sb);\n }\n\n sb.append('\\n}');\n return sb.contents();\n }\n\n addSemanticActionTemplate(ruleName, body, sb) {\n sb.append(ruleName);\n sb.append(': function(');\n const arity = this._topDownActionArity(ruleName);\n sb.append(common.repeat('_', arity).join(', '));\n sb.append(') {\\n');\n sb.append(' }');\n }\n\n // Parse a string which expresses a rule application in this grammar, and return the\n // resulting Apply node.\n parseApplication(str) {\n let app;\n if (str.indexOf('<') === -1) {\n // simple application\n app = new pexprs.Apply(str);\n } else {\n // parameterized application\n const cst = ohmGrammar.match(str, 'Base_application');\n app = buildGrammar(cst, {});\n }\n\n // Ensure that the application is valid.\n if (!(app.ruleName in this.rules)) {\n throw errors.undeclaredRule(app.ruleName, this.name);\n }\n const {formals} = this.rules[app.ruleName];\n if (formals.length !== app.args.length) {\n const {source} = this.rules[app.ruleName];\n throw errors.wrongNumberOfParameters(\n app.ruleName,\n formals.length,\n app.args.length,\n source,\n );\n }\n return app;\n }\n\n _setUpMatchState(state) {\n if (this._matchStateInitializer) {\n this._matchStateInitializer(state);\n }\n }\n}\n\n// The following grammar contains a few rules that couldn't be written in \"userland\".\n// At the bottom of src/main.js, we create a sub-grammar of this grammar that's called\n// `BuiltInRules`. That grammar contains several convenience rules, e.g., `letter` and\n// `digit`, and is implicitly the super-grammar of any grammar whose super-grammar\n// isn't specified.\nGrammar.ProtoBuiltInRules = new Grammar(\n 'ProtoBuiltInRules', // name\n undefined, // supergrammar\n {\n any: {\n body: pexprs.any,\n formals: [],\n description: 'any character',\n primitive: true,\n },\n end: {\n body: pexprs.end,\n formals: [],\n description: 'end of input',\n primitive: true,\n },\n\n caseInsensitive: {\n body: new pexprs.CaseInsensitiveTerminal(new pexprs.Param(0)),\n formals: ['str'],\n primitive: true,\n },\n lower: {\n body: new pexprs.UnicodeChar('Ll'),\n formals: [],\n description: 'a lowercase letter',\n primitive: true,\n },\n upper: {\n body: new pexprs.UnicodeChar('Lu'),\n formals: [],\n description: 'an uppercase letter',\n primitive: true,\n },\n // Union of Lt (titlecase), Lm (modifier), and Lo (other), i.e. any letter not in Ll or Lu.\n unicodeLtmo: {\n body: new pexprs.UnicodeChar('Ltmo'),\n formals: [],\n description: 'a Unicode character in Lt, Lm, or Lo',\n primitive: true,\n },\n\n // These rules are not truly primitive (they could be written in userland) but are defined\n // here for bootstrapping purposes.\n spaces: {\n body: new pexprs.Star(new pexprs.Apply('space')),\n formals: [],\n },\n space: {\n body: new pexprs.Range('\\x00', ' '),\n formals: [],\n description: 'a space',\n },\n },\n);\n\n// This method is called from main.js once Ohm has loaded.\nGrammar.initApplicationParser = function(grammar, builderFn) {\n ohmGrammar = grammar;\n buildGrammar = builderFn;\n};\n","import {Grammar} from './Grammar.js';\nimport {InputStream} from './InputStream.js';\nimport {getDuplicates} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs.js';\n\n// --------------------------------------------------------------------\n// Private Stuff\n// --------------------------------------------------------------------\n\n// Constructors\n\nexport class GrammarDecl {\n constructor(name) {\n this.name = name;\n }\n\n // Helpers\n\n sourceInterval(startIdx, endIdx) {\n return this.source.subInterval(startIdx, endIdx - startIdx);\n }\n\n ensureSuperGrammar() {\n if (!this.superGrammar) {\n this.withSuperGrammar(\n // TODO: The conditional expression below is an ugly hack. It's kind of ok because\n // I doubt anyone will ever try to declare a grammar called `BuiltInRules`. Still,\n // we should try to find a better way to do this.\n this.name === 'BuiltInRules' ? Grammar.ProtoBuiltInRules : Grammar.BuiltInRules,\n );\n }\n return this.superGrammar;\n }\n\n ensureSuperGrammarRuleForOverriding(name, source) {\n const ruleInfo = this.ensureSuperGrammar().rules[name];\n if (!ruleInfo) {\n throw errors.cannotOverrideUndeclaredRule(name, this.superGrammar.name, source);\n }\n return ruleInfo;\n }\n\n installOverriddenOrExtendedRule(name, formals, body, source) {\n const duplicateParameterNames = getDuplicates(formals);\n if (duplicateParameterNames.length > 0) {\n throw errors.duplicateParameterNames(name, duplicateParameterNames, source);\n }\n const ruleInfo = this.ensureSuperGrammar().rules[name];\n const expectedFormals = ruleInfo.formals;\n const expectedNumFormals = expectedFormals ? expectedFormals.length : 0;\n if (formals.length !== expectedNumFormals) {\n throw errors.wrongNumberOfParameters(name, expectedNumFormals, formals.length, source);\n }\n return this.install(name, formals, body, ruleInfo.description, source);\n }\n\n install(name, formals, body, description, source, primitive = false) {\n this.rules[name] = {\n body: body.introduceParams(formals),\n formals,\n description,\n source,\n primitive,\n };\n return this;\n }\n\n // Stuff that you should only do once\n\n withSuperGrammar(superGrammar) {\n if (this.superGrammar) {\n throw new Error('the super grammar of a GrammarDecl cannot be set more than once');\n }\n this.superGrammar = superGrammar;\n this.rules = Object.create(superGrammar.rules);\n\n // Grammars with an explicit supergrammar inherit a default start rule.\n if (!superGrammar.isBuiltIn()) {\n this.defaultStartRule = superGrammar.defaultStartRule;\n }\n return this;\n }\n\n withDefaultStartRule(ruleName) {\n this.defaultStartRule = ruleName;\n return this;\n }\n\n withSource(source) {\n this.source = new InputStream(source).interval(0, source.length);\n return this;\n }\n\n // Creates a Grammar instance, and if it passes the sanity checks, returns it.\n build() {\n const grammar = new Grammar(\n this.name,\n this.ensureSuperGrammar(),\n this.rules,\n this.defaultStartRule,\n );\n // Initialize internal props that are inherited from the super grammar.\n grammar._matchStateInitializer = grammar.superGrammar._matchStateInitializer;\n grammar.supportsIncrementalParsing = grammar.superGrammar.supportsIncrementalParsing;\n\n // TODO: change the pexpr.prototype.assert... methods to make them add\n // exceptions to an array that's provided as an arg. Then we'll be able to\n // show more than one error of the same type at a time.\n // TODO: include the offending pexpr in the errors, that way we can show\n // the part of the source that caused it.\n const grammarErrors = [];\n let grammarHasInvalidApplications = false;\n Object.keys(grammar.rules).forEach(ruleName => {\n const {body} = grammar.rules[ruleName];\n try {\n body.assertChoicesHaveUniformArity(ruleName);\n } catch (e) {\n grammarErrors.push(e);\n }\n try {\n body.assertAllApplicationsAreValid(ruleName, grammar);\n } catch (e) {\n grammarErrors.push(e);\n grammarHasInvalidApplications = true;\n }\n });\n if (!grammarHasInvalidApplications) {\n // The following check can only be done if the grammar has no invalid applications.\n Object.keys(grammar.rules).forEach(ruleName => {\n const {body} = grammar.rules[ruleName];\n try {\n body.assertIteratedExprsAreNotNullable(grammar, []);\n } catch (e) {\n grammarErrors.push(e);\n }\n });\n }\n if (grammarErrors.length > 0) {\n errors.throwErrors(grammarErrors);\n }\n if (this.source) {\n grammar.source = this.source;\n }\n\n return grammar;\n }\n\n // Rule declarations\n\n define(name, formals, body, description, source, primitive) {\n this.ensureSuperGrammar();\n if (this.superGrammar.rules[name]) {\n throw errors.duplicateRuleDeclaration(name, this.name, this.superGrammar.name, source);\n } else if (this.rules[name]) {\n throw errors.duplicateRuleDeclaration(name, this.name, this.name, source);\n }\n const duplicateParameterNames = getDuplicates(formals);\n if (duplicateParameterNames.length > 0) {\n throw errors.duplicateParameterNames(name, duplicateParameterNames, source);\n }\n return this.install(name, formals, body, description, source, primitive);\n }\n\n override(name, formals, body, descIgnored, source) {\n this.ensureSuperGrammarRuleForOverriding(name, source);\n this.installOverriddenOrExtendedRule(name, formals, body, source);\n return this;\n }\n\n extend(name, formals, fragment, descIgnored, source) {\n const ruleInfo = this.ensureSuperGrammar().rules[name];\n if (!ruleInfo) {\n throw errors.cannotExtendUndeclaredRule(name, this.superGrammar.name, source);\n }\n const body = new pexprs.Extend(this.superGrammar, name, fragment);\n body.source = fragment.source;\n this.installOverriddenOrExtendedRule(name, formals, body, source);\n return this;\n }\n}\n","import {Grammar} from './Grammar.js';\nimport {GrammarDecl} from './GrammarDecl.js';\nimport * as pexprs from './pexprs.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class Builder {\n constructor() {\n this.currentDecl = null;\n this.currentRuleName = null;\n }\n\n newGrammar(name) {\n return new GrammarDecl(name);\n }\n\n grammar(metaInfo, name, superGrammar, defaultStartRule, rules) {\n const gDecl = new GrammarDecl(name);\n if (superGrammar) {\n // `superGrammar` may be a recipe (i.e. an Array), or an actual grammar instance.\n gDecl.withSuperGrammar(\n superGrammar instanceof Grammar ? superGrammar : this.fromRecipe(superGrammar),\n );\n }\n if (defaultStartRule) {\n gDecl.withDefaultStartRule(defaultStartRule);\n }\n if (metaInfo && metaInfo.source) {\n gDecl.withSource(metaInfo.source);\n }\n\n this.currentDecl = gDecl;\n Object.keys(rules).forEach(ruleName => {\n this.currentRuleName = ruleName;\n const ruleRecipe = rules[ruleName];\n\n const action = ruleRecipe[0]; // define/extend/override\n const metaInfo = ruleRecipe[1];\n const description = ruleRecipe[2];\n const formals = ruleRecipe[3];\n const body = this.fromRecipe(ruleRecipe[4]);\n\n let source;\n if (gDecl.source && metaInfo && metaInfo.sourceInterval) {\n source = gDecl.source.subInterval(\n metaInfo.sourceInterval[0],\n metaInfo.sourceInterval[1] - metaInfo.sourceInterval[0],\n );\n }\n gDecl[action](ruleName, formals, body, description, source);\n });\n this.currentRuleName = this.currentDecl = null;\n return gDecl.build();\n }\n\n terminal(x) {\n return new pexprs.Terminal(x);\n }\n\n range(from, to) {\n return new pexprs.Range(from, to);\n }\n\n param(index) {\n return new pexprs.Param(index);\n }\n\n alt(...termArgs) {\n let terms = [];\n for (let arg of termArgs) {\n if (!(arg instanceof pexprs.PExpr)) {\n arg = this.fromRecipe(arg);\n }\n if (arg instanceof pexprs.Alt) {\n terms = terms.concat(arg.terms);\n } else {\n terms.push(arg);\n }\n }\n return terms.length === 1 ? terms[0] : new pexprs.Alt(terms);\n }\n\n seq(...factorArgs) {\n let factors = [];\n for (let arg of factorArgs) {\n if (!(arg instanceof pexprs.PExpr)) {\n arg = this.fromRecipe(arg);\n }\n if (arg instanceof pexprs.Seq) {\n factors = factors.concat(arg.factors);\n } else {\n factors.push(arg);\n }\n }\n return factors.length === 1 ? factors[0] : new pexprs.Seq(factors);\n }\n\n star(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Star(expr);\n }\n\n plus(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Plus(expr);\n }\n\n opt(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Opt(expr);\n }\n\n not(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Not(expr);\n }\n\n lookahead(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Lookahead(expr);\n }\n\n lex(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Lex(expr);\n }\n\n app(ruleName, optParams) {\n if (optParams && optParams.length > 0) {\n optParams = optParams.map(function(param) {\n return param instanceof pexprs.PExpr ? param : this.fromRecipe(param);\n }, this);\n }\n return new pexprs.Apply(ruleName, optParams);\n }\n\n // Note that unlike other methods in this class, this method cannot be used as a\n // convenience constructor. It only works with recipes, because it relies on\n // `this.currentDecl` and `this.currentRuleName` being set.\n splice(beforeTerms, afterTerms) {\n return new pexprs.Splice(\n this.currentDecl.superGrammar,\n this.currentRuleName,\n beforeTerms.map(term => this.fromRecipe(term)),\n afterTerms.map(term => this.fromRecipe(term)),\n );\n }\n\n fromRecipe(recipe) {\n // the meta-info of 'grammar' is processed in Builder.grammar\n const args = recipe[0] === 'grammar' ? recipe.slice(1) : recipe.slice(2);\n const result = this[recipe[0]](...args);\n\n const metaInfo = recipe[1];\n if (metaInfo) {\n if (metaInfo.sourceInterval && this.currentDecl) {\n result.withSource(this.currentDecl.sourceInterval(...metaInfo.sourceInterval));\n }\n }\n return result;\n }\n}\n","import {Builder} from './Builder.js';\n\nexport function makeRecipe(recipe) {\n if (typeof recipe === 'function') {\n return recipe.call(new Builder());\n } else {\n if (typeof recipe === 'string') {\n // stringified JSON recipe\n recipe = JSON.parse(recipe);\n }\n return new Builder().fromRecipe(recipe);\n }\n}\n","import {makeRecipe} from '../src/makeRecipe.js';\nexport default makeRecipe([\"grammar\",{\"source\":\"BuiltInRules {\\n\\n alnum (an alpha-numeric character)\\n = letter\\n | digit\\n\\n letter (a letter)\\n = lower\\n | upper\\n | unicodeLtmo\\n\\n digit (a digit)\\n = \\\"0\\\"..\\\"9\\\"\\n\\n hexDigit (a hexadecimal digit)\\n = digit\\n | \\\"a\\\"..\\\"f\\\"\\n | \\\"A\\\"..\\\"F\\\"\\n\\n ListOf<elem, sep>\\n = NonemptyListOf<elem, sep>\\n | EmptyListOf<elem, sep>\\n\\n NonemptyListOf<elem, sep>\\n = elem (sep elem)*\\n\\n EmptyListOf<elem, sep>\\n = /* nothing */\\n\\n listOf<elem, sep>\\n = nonemptyListOf<elem, sep>\\n | emptyListOf<elem, sep>\\n\\n nonemptyListOf<elem, sep>\\n = elem (sep elem)*\\n\\n emptyListOf<elem, sep>\\n = /* nothing */\\n\\n // Allows a syntactic rule application within a lexical context.\\n applySyntactic<app> = app\\n}\"},\"BuiltInRules\",null,null,{\"alnum\":[\"define\",{\"sourceInterval\":[18,78]},\"an alpha-numeric character\",[],[\"alt\",{\"sourceInterval\":[60,78]},[\"app\",{\"sourceInterval\":[60,66]},\"letter\",[]],[\"app\",{\"sourceInterval\":[73,78]},\"digit\",[]]]],\"letter\":[\"define\",{\"sourceInterval\":[82,142]},\"a letter\",[],[\"alt\",{\"sourceInterval\":[107,142]},[\"app\",{\"sourceInterval\":[107,112]},\"lower\",[]],[\"app\",{\"sourceInterval\":[119,124]},\"upper\",[]],[\"app\",{\"sourceInterval\":[131,142]},\"unicodeLtmo\",[]]]],\"digit\":[\"define\",{\"sourceInterval\":[146,177]},\"a digit\",[],[\"range\",{\"sourceInterval\":[169,177]},\"0\",\"9\"]],\"hexDigit\":[\"define\",{\"sourceInterval\":[181,254]},\"a hexadecimal digit\",[],[\"alt\",{\"sourceInterval\":[219,254]},[\"app\",{\"sourceInterval\":[219,224]},\"digit\",[]],[\"range\",{\"sourceInterval\":[231,239]},\"a\",\"f\"],[\"range\",{\"sourceInterval\":[246,254]},\"A\",\"F\"]]],\"ListOf\":[\"define\",{\"sourceInterval\":[258,336]},null,[\"elem\",\"sep\"],[\"alt\",{\"sourceInterval\":[282,336]},[\"app\",{\"sourceInterval\":[282,307]},\"NonemptyListOf\",[[\"param\",{\"sourceInterval\":[297,301]},0],[\"param\",{\"sourceInterval\":[303,306]},1]]],[\"app\",{\"sourceInterval\":[314,336]},\"EmptyListOf\",[[\"param\",{\"sourceInterval\":[326,330]},0],[\"param\",{\"sourceInterval\":[332,335]},1]]]]],\"NonemptyListOf\":[\"define\",{\"sourceInterval\":[340,388]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[372,388]},[\"param\",{\"sourceInterval\":[372,376]},0],[\"star\",{\"sourceInterval\":[377,388]},[\"seq\",{\"sourceInterval\":[378,386]},[\"param\",{\"sourceInterval\":[378,381]},1],[\"param\",{\"sourceInterval\":[382,386]},0]]]]],\"EmptyListOf\":[\"define\",{\"sourceInterval\":[392,434]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[438,438]}]],\"listOf\":[\"define\",{\"sourceInterval\":[438,516]},null,[\"elem\",\"sep\"],[\"alt\",{\"sourceInterval\":[462,516]},[\"app\",{\"sourceInterval\":[462,487]},\"nonemptyListOf\",[[\"param\",{\"sourceInterval\":[477,481]},0],[\"param\",{\"sourceInterval\":[483,486]},1]]],[\"app\",{\"sourceInterval\":[494,516]},\"emptyListOf\",[[\"param\",{\"sourceInterval\":[506,510]},0],[\"param\",{\"sourceInterval\":[512,515]},1]]]]],\"nonemptyListOf\":[\"define\",{\"sourceInterval\":[520,568]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[552,568]},[\"param\",{\"sourceInterval\":[552,556]},0],[\"star\",{\"sourceInterval\":[557,568]},[\"seq\",{\"sourceInterval\":[558,566]},[\"param\",{\"sourceInterval\":[558,561]},1],[\"param\",{\"sourceInterval\":[562,566]},0]]]]],\"emptyListOf\":[\"define\",{\"sourceInterval\":[572,682]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[685,685]}]],\"applySyntactic\":[\"define\",{\"sourceInterval\":[685,710]},null,[\"app\"],[\"param\",{\"sourceInterval\":[707,710]},0]]}]);\n","import BuiltInRules from '../dist/built-in-rules.js';\nimport {Grammar} from './Grammar.js';\nimport {announceBuiltInRules} from './util.js';\n\nGrammar.BuiltInRules = BuiltInRules;\nannounceBuiltInRules(Grammar.BuiltInRules);\n\n// During the bootstrap process, we instantiate some grammars that require\n// the built-in rules to be loaded first (e.g., ohm-grammar.ohm). By\n// exporting `makeRecipe` here, the recipes for those grammars can encode\n// that dependency by importing it from this module.\nexport {makeRecipe} from './makeRecipe.js';\n","import {makeRecipe} from '../src/main-kernel.js';\nexport default makeRecipe([\"grammar\",{\"source\":\"Ohm {\\n\\n Grammars\\n = Grammar*\\n\\n Grammar\\n = ident SuperGrammar? \\\"{\\\" Rule* \\\"}\\\"\\n\\n SuperGrammar\\n = \\\"<:\\\" ident\\n\\n Rule\\n = ident Formals? ruleDescr? \\\"=\\\" RuleBody -- define\\n | ident Formals? \\\":=\\\" OverrideRuleBody -- override\\n | ident Formals? \\\"+=\\\" RuleBody -- extend\\n\\n RuleBody\\n = \\\"|\\\"? NonemptyListOf<TopLevelTerm, \\\"|\\\">\\n\\n TopLevelTerm\\n = Seq caseName -- inline\\n | Seq\\n\\n OverrideRuleBody\\n = \\\"|\\\"? NonemptyListOf<OverrideTopLevelTerm, \\\"|\\\">\\n\\n OverrideTopLevelTerm\\n = \\\"...\\\" -- superSplice\\n | TopLevelTerm\\n\\n Formals\\n = \\\"<\\\" ListOf<ident, \\\",\\\"> \\\">\\\"\\n\\n Params\\n = \\\"<\\\" ListOf<Seq, \\\",\\\"> \\\">\\\"\\n\\n Alt\\n = NonemptyListOf<Seq, \\\"|\\\">\\n\\n Seq\\n = Iter*\\n\\n Iter\\n = Pred \\\"*\\\" -- star\\n | Pred \\\"+\\\" -- plus\\n | Pred \\\"?\\\" -- opt\\n | Pred\\n\\n Pred\\n = \\\"~\\\" Lex -- not\\n | \\\"&\\\" Lex -- lookahead\\n | Lex\\n\\n Lex\\n = \\\"#\\\" Base -- lex\\n | Base\\n\\n Base\\n = ident Params? ~(ruleDescr? \\\"=\\\" | \\\":=\\\" | \\\"+=\\\") -- application\\n | oneCharTerminal \\\"..\\\" oneCharTerminal -- range\\n | terminal -- terminal\\n | \\\"(\\\" Alt \\\")\\\" -- paren\\n\\n ruleDescr (a rule description)\\n = \\\"(\\\" ruleDescrText \\\")\\\"\\n\\n ruleDescrText\\n = (~\\\")\\\" any)*\\n\\n caseName\\n = \\\"--\\\" (~\\\"\\\\n\\\" space)* name (~\\\"\\\\n\\\" space)* (\\\"\\\\n\\\" | &\\\"}\\\")\\n\\n name (a name)\\n = nameFirst nameRest*\\n\\n nameFirst\\n = \\\"_\\\"\\n | letter\\n\\n nameRest\\n = \\\"_\\\"\\n | alnum\\n\\n ident (an identifier)\\n = name\\n\\n terminal\\n = \\\"\\\\\\\"\\\" terminalChar* \\\"\\\\\\\"\\\"\\n\\n oneCharTerminal\\n = \\\"\\\\\\\"\\\" terminalChar \\\"\\\\\\\"\\\"\\n\\n terminalChar\\n = escapeChar\\n | ~\\\"\\\\\\\\\\\" ~\\\"\\\\\\\"\\\" ~\\\"\\\\n\\\" \\\"\\\\u{0}\\\"..\\\"\\\\u{10FFFF}\\\"\\n\\n escapeChar (an escape sequence)\\n = \\\"\\\\\\\\\\\\\\\\\\\" -- backslash\\n | \\\"\\\\\\\\\\\\\\\"\\\" -- doubleQuote\\n | \\\"\\\\\\\\\\\\'\\\" -- singleQuote\\n | \\\"\\\\\\\\b\\\" -- backspace\\n | \\\"\\\\\\\\n\\\" -- lineFeed\\n | \\\"\\\\\\\\r\\\" -- carriageReturn\\n | \\\"\\\\\\\\t\\\" -- tab\\n | \\\"\\\\\\\\u{\\\" hexDigit hexDigit? hexDigit?\\n hexDigit? hexDigit? hexDigit? \\\"}\\\" -- unicodeCodePoint\\n | \\\"\\\\\\\\u\\\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\\n | \\\"\\\\\\\\x\\\" hexDigit hexDigit -- hexEscape\\n\\n space\\n += comment\\n\\n comment\\n = \\\"//\\\" (~\\\"\\\\n\\\" any)* &(\\\"\\\\n\\\" | end) -- singleLine\\n | \\\"/*\\\" (~\\\"*/\\\" any)* \\\"*/\\\" -- multiLine\\n\\n tokens = token*\\n\\n token = caseName | comment | ident | operator | punctuation | terminal | any\\n\\n operator = \\\"<:\\\" | \\\"=\\\" | \\\":=\\\" | \\\"+=\\\" | \\\"*\\\" | \\\"+\\\" | \\\"?\\\" | \\\"~\\\" | \\\"&\\\"\\n\\n punctuation = \\\"<\\\" | \\\">\\\" | \\\",\\\" | \\\"--\\\"\\n}\"},\"Ohm\",null,\"Grammars\",{\"Grammars\":[\"define\",{\"sourceInterval\":[9,32]},null,[],[\"star\",{\"sourceInterval\":[24,32]},[\"app\",{\"sourceInterval\":[24,31]},\"Grammar\",[]]]],\"Grammar\":[\"define\",{\"sourceInterval\":[36,83]},null,[],[\"seq\",{\"sourceInterval\":[50,83]},[\"app\",{\"sourceInterval\":[50,55]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[56,69]},[\"app\",{\"sourceInterval\":[56,68]},\"SuperGrammar\",[]]],[\"terminal\",{\"sourceInterval\":[70,73]},\"{\"],[\"star\",{\"sourceInterval\":[74,79]},[\"app\",{\"sourceInterval\":[74,78]},\"Rule\",[]]],[\"terminal\",{\"sourceInterval\":[80,83]},\"}\"]]],\"SuperGrammar\":[\"define\",{\"sourceInterval\":[87,116]},null,[],[\"seq\",{\"sourceInterval\":[106,116]},[\"terminal\",{\"sourceInterval\":[106,110]},\"<:\"],[\"app\",{\"sourceInterval\":[111,116]},\"ident\",[]]]],\"Rule_define\":[\"define\",{\"sourceInterval\":[131,181]},null,[],[\"seq\",{\"sourceInterval\":[131,170]},[\"app\",{\"sourceInterval\":[131,136]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[137,145]},[\"app\",{\"sourceInterval\":[137,144]},\"Formals\",[]]],[\"opt\",{\"sourceInterval\":[146,156]},[\"app\",{\"sourceInterval\":[146,155]},\"ruleDescr\",[]]],[\"terminal\",{\"sourceInterval\":[157,160]},\"=\"],[\"app\",{\"sourceInterval\":[162,170]},\"RuleBody\",[]]]],\"Rule_override\":[\"define\",{\"sourceInterval\":[188,248]},null,[],[\"seq\",{\"sourceInterval\":[188,235]},[\"app\",{\"sourceInterval\":[188,193]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[194,202]},[\"app\",{\"sourceInterval\":[194,201]},\"Formals\",[]]],[\"terminal\",{\"sourceInterval\":[214,218]},\":=\"],[\"app\",{\"sourceInterval\":[219,235]},\"OverrideRuleBody\",[]]]],\"Rule_extend\":[\"define\",{\"sourceInterval\":[255,305]},null,[],[\"seq\",{\"sourceInterval\":[255,294]},[\"app\",{\"sourceInterval\":[255,260]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[261,269]},[\"app\",{\"sourceInterval\":[261,268]},\"Formals\",[]]],[\"terminal\",{\"sourceInterval\":[281,285]},\"+=\"],[\"app\",{\"sourceInterval\":[286,294]},\"RuleBody\",[]]]],\"Rule\":[\"define\",{\"sourceInterval\":[120,305]},null,[],[\"alt\",{\"sourceInterval\":[131,305]},[\"app\",{\"sourceInterval\":[131,170]},\"Rule_define\",[]],[\"app\",{\"sourceInterval\":[188,235]},\"Rule_override\",[]],[\"app\",{\"sourceInterval\":[255,294]},\"Rule_extend\",[]]]],\"RuleBody\":[\"define\",{\"sourceInterval\":[309,362]},null,[],[\"seq\",{\"sourceInterval\":[324,362]},[\"opt\",{\"sourceInterval\":[324,328]},[\"terminal\",{\"sourceInterval\":[324,327]},\"|\"]],[\"app\",{\"sourceInterval\":[329,362]},\"NonemptyListOf\",[[\"app\",{\"sourceInterval\":[344,356]},\"TopLevelTerm\",[]],[\"terminal\",{\"sourceInterval\":[358,361]},\"|\"]]]]],\"TopLevelTerm_inline\":[\"define\",{\"sourceInterval\":[385,408]},null,[],[\"seq\",{\"sourceInterval\":[385,397]},[\"app\",{\"sourceInterval\":[385,388]},\"Seq\",[]],[\"app\",{\"sourceInterval\":[389,397]},\"caseName\",[]]]],\"TopLevelTerm\":[\"define\",{\"sourceInterval\":[366,418]},null,[],[\"alt\",{\"sourceInterval\":[385,418]},[\"app\",{\"sourceInterval\":[385,397]},\"TopLevelTerm_inline\",[]],[\"app\",{\"sourceInterval\":[415,418]},\"Seq\",[]]]],\"OverrideRuleBody\":[\"define\",{\"sourceInterval\":[422,491]},null,[],[\"seq\",{\"sourceInterval\":[445,491]},[\"opt\",{\"sourceInterval\":[445,449]},[\"terminal\",{\"sourceInterval\":[445,448]},\"|\"]],[\"app\",{\"sourceInterval\":[450,491]},\"NonemptyListOf\",[[\"app\",{\"sourceInterval\":[465,485]},\"OverrideTopLevelTerm\",[]],[\"terminal\",{\"sourceInterval\":[487,490]},\"|\"]]]]],\"OverrideTopLevelTerm_superSplice\":[\"define\",{\"sourceInterval\":[522,543]},null,[],[\"terminal\",{\"sourceInterval\":[522,527]},\"...\"]],\"OverrideTopLevelTerm\":[\"define\",{\"sourceInterval\":[495,562]},null,[],[\"alt\",{\"sourceInterval\":[522,562]},[\"app\",{\"sourceInterval\":[522,527]},\"OverrideTopLevelTerm_superSplice\",[]],[\"app\",{\"sourceInterval\":[550,562]},\"TopLevelTerm\",[]]]],\"Formals\":[\"define\",{\"sourceInterval\":[566,606]},null,[],[\"seq\",{\"sourceInterval\":[580,606]},[\"terminal\",{\"sourceInterval\":[580,583]},\"<\"],[\"app\",{\"sourceInterval\":[584,602]},\"ListOf\",[[\"app\",{\"sourceInterval\":[591,596]},\"ident\",[]],[\"terminal\",{\"sourceInterval\":[598,601]},\",\"]]],[\"terminal\",{\"sourceInterval\":[603,606]},\">\"]]],\"Params\":[\"define\",{\"sourceInterval\":[610,647]},null,[],[\"seq\",{\"sourceInterval\":[623,647]},[\"terminal\",{\"sourceInterval\":[623,626]},\"<\"],[\"app\",{\"sourceInterval\":[627,643]},\"ListOf\",[[\"app\",{\"sourceInterval\":[634,637]},\"Seq\",[]],[\"terminal\",{\"sourceInterval\":[639,642]},\",\"]]],[\"terminal\",{\"sourceInterval\":[644,647]},\">\"]]],\"Alt\":[\"define\",{\"sourceInterval\":[651,685]},null,[],[\"app\",{\"sourceInterval\":[661,685]},\"NonemptyListOf\",[[\"app\",{\"sourceInterval\":[676,679]},\"Seq\",[]],[\"terminal\",{\"sourceInterval\":[681,684]},\"|\"]]]],\"Seq\":[\"define\",{\"sourceInterval\":[689,704]},null,[],[\"star\",{\"sourceInterval\":[699,704]},[\"app\",{\"sourceInterval\":[699,703]},\"Iter\",[]]]],\"Iter_star\":[\"define\",{\"sourceInterval\":[719,736]},null,[],[\"seq\",{\"sourceInterval\":[719,727]},[\"app\",{\"sourceInterval\":[719,723]},\"Pred\",[]],[\"terminal\",{\"sourceInterval\":[724,727]},\"*\"]]],\"Iter_plus\":[\"define\",{\"sourceInterval\":[743,760]},null,[],[\"seq\",{\"sourceInterval\":[743,751]},[\"app\",{\"sourceInterval\":[743,747]},\"Pred\",[]],[\"terminal\",{\"sourceInterval\":[748,751]},\"+\"]]],\"Iter_opt\":[\"define\",{\"sourceInterval\":[767,783]},null,[],[\"seq\",{\"sourceInterval\":[767,775]},[\"app\",{\"sourceInterval\":[767,771]},\"Pred\",[]],[\"terminal\",{\"sourceInterval\":[772,775]},\"?\"]]],\"Iter\":[\"define\",{\"sourceInterval\":[708,794]},null,[],[\"alt\",{\"sourceInterval\":[719,794]},[\"app\",{\"sourceInterval\":[719,727]},\"Iter_star\",[]],[\"app\",{\"sourceInterval\":[743,751]},\"Iter_plus\",[]],[\"app\",{\"sourceInterval\":[767,775]},\"Iter_opt\",[]],[\"app\",{\"sourceInterval\":[790,794]},\"Pred\",[]]]],\"Pred_not\":[\"define\",{\"sourceInterval\":[809,824]},null,[],[\"seq\",{\"sourceInterval\":[809,816]},[\"terminal\",{\"sourceInterval\":[809,812]},\"~\"],[\"app\",{\"sourceInterval\":[813,816]},\"Lex\",[]]]],\"Pred_lookahead\":[\"define\",{\"sourceInterval\":[831,852]},null,[],[\"seq\",{\"sourceInterval\":[831,838]},[\"terminal\",{\"sourceInterval\":[831,834]},\"&\"],[\"app\",{\"sourceInterval\":[835,838]},\"Lex\",[]]]],\"Pred\":[\"define\",{\"sourceInterval\":[798,862]},null,[],[\"alt\",{\"sourceInterval\":[809,862]},[\"app\",{\"sourceInterval\":[809,816]},\"Pred_not\",[]],[\"app\",{\"sourceInterval\":[831,838]},\"Pred_lookahead\",[]],[\"app\",{\"sourceInterval\":[859,862]},\"Lex\",[]]]],\"Lex_lex\":[\"define\",{\"sourceInterval\":[876,892]},null,[],[\"seq\",{\"sourceInterval\":[876,884]},[\"terminal\",{\"sourceInterval\":[876,879]},\"#\"],[\"app\",{\"sourceInterval\":[880,884]},\"Base\",[]]]],\"Lex\":[\"define\",{\"sourceInterval\":[866,903]},null,[],[\"alt\",{\"sourceInterval\":[876,903]},[\"app\",{\"sourceInterval\":[876,884]},\"Lex_lex\",[]],[\"app\",{\"sourceInterval\":[899,903]},\"Base\",[]]]],\"Base_application\":[\"define\",{\"sourceInterval\":[918,979]},null,[],[\"seq\",{\"sourceInterval\":[918,963]},[\"app\",{\"sourceInterval\":[918,923]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[924,931]},[\"app\",{\"sourceInterval\":[924,930]},\"Params\",[]]],[\"not\",{\"sourceInterval\":[932,963]},[\"alt\",{\"sourceInterval\":[934,962]},[\"seq\",{\"sourceInterval\":[934,948]},[\"opt\",{\"sourceInterval\":[934,944]},[\"app\",{\"sourceInterval\":[934,943]},\"ruleDescr\",[]]],[\"terminal\",{\"sourceInterval\":[945,948]},\"=\"]],[\"terminal\",{\"sourceInterval\":[951,955]},\":=\"],[\"terminal\",{\"sourceInterval\":[958,962]},\"+=\"]]]]],\"Base_range\":[\"define\",{\"sourceInterval\":[986,1041]},null,[],[\"seq\",{\"sourceInterval\":[986,1022]},[\"app\",{\"sourceInterval\":[986,1001]},\"oneCharTerminal\",[]],[\"terminal\",{\"sourceInterval\":[1002,1006]},\"..\"],[\"app\",{\"sourceInterval\":[1007,1022]},\"oneCharTerminal\",[]]]],\"Base_terminal\":[\"define\",{\"sourceInterval\":[1048,1106]},null,[],[\"app\",{\"sourceInterval\":[1048,1056]},\"terminal\",[]]],\"Base_paren\":[\"define\",{\"sourceInterval\":[1113,1168]},null,[],[\"seq\",{\"sourceInterval\":[1113,1124]},[\"terminal\",{\"sourceInterval\":[1113,1116]},\"(\"],[\"app\",{\"sourceInterval\":[1117,1120]},\"Alt\",[]],[\"terminal\",{\"sourceInterval\":[1121,1124]},\")\"]]],\"Base\":[\"define\",{\"sourceInterval\":[907,1168]},null,[],[\"alt\",{\"sourceInterval\":[918,1168]},[\"app\",{\"sourceInterval\":[918,963]},\"Base_application\",[]],[\"app\",{\"sourceInterval\":[986,1022]},\"Base_range\",[]],[\"app\",{\"sourceInterval\":[1048,1056]},\"Base_terminal\",[]],[\"app\",{\"sourceInterval\":[1113,1124]},\"Base_paren\",[]]]],\"ruleDescr\":[\"define\",{\"sourceInterval\":[1172,1231]},\"a rule description\",[],[\"seq\",{\"sourceInterval\":[1210,1231]},[\"terminal\",{\"sourceInterval\":[1210,1213]},\"(\"],[\"app\",{\"sourceInterval\":[1214,1227]},\"ruleDescrText\",[]],[\"terminal\",{\"sourceInterval\":[1228,1231]},\")\"]]],\"ruleDescrText\":[\"define\",{\"sourceInterval\":[1235,1266]},null,[],[\"star\",{\"sourceInterval\":[1255,1266]},[\"seq\",{\"sourceInterval\":[1256,1264]},[\"not\",{\"sourceInterval\":[1256,1260]},[\"terminal\",{\"sourceInterval\":[1257,1260]},\")\"]],[\"app\",{\"sourceInterval\":[1261,1264]},\"any\",[]]]]],\"caseName\":[\"define\",{\"sourceInterval\":[1270,1338]},null,[],[\"seq\",{\"sourceInterval\":[1285,1338]},[\"terminal\",{\"sourceInterval\":[1285,1289]},\"--\"],[\"star\",{\"sourceInterval\":[1290,1304]},[\"seq\",{\"sourceInterval\":[1291,1302]},[\"not\",{\"sourceInterval\":[1291,1296]},[\"terminal\",{\"sourceInterval\":[1292,1296]},\"\\n\"]],[\"app\",{\"sourceInterval\":[1297,1302]},\"space\",[]]]],[\"app\",{\"sourceInterval\":[1305,1309]},\"name\",[]],[\"star\",{\"sourceInterval\":[1310,1324]},[\"seq\",{\"sourceInterval\":[1311,1322]},[\"not\",{\"sourceInterval\":[1311,1316]},[\"terminal\",{\"sourceInterval\":[1312,1316]},\"\\n\"]],[\"app\",{\"sourceInterval\":[1317,1322]},\"space\",[]]]],[\"alt\",{\"sourceInterval\":[1326,1337]},[\"terminal\",{\"sourceInterval\":[1326,1330]},\"\\n\"],[\"lookahead\",{\"sourceInterval\":[1333,1337]},[\"terminal\",{\"sourceInterval\":[1334,1337]},\"}\"]]]]],\"name\":[\"define\",{\"sourceInterval\":[1342,1382]},\"a name\",[],[\"seq\",{\"sourceInterval\":[1363,1382]},[\"app\",{\"sourceInterval\":[1363,1372]},\"nameFirst\",[]],[\"star\",{\"sourceInterval\":[1373,1382]},[\"app\",{\"sourceInterval\":[1373,1381]},\"nameRest\",[]]]]],\"nameFirst\":[\"define\",{\"sourceInterval\":[1386,1418]},null,[],[\"alt\",{\"sourceInterval\":[1402,1418]},[\"terminal\",{\"sourceInterval\":[1402,1405]},\"_\"],[\"app\",{\"sourceInterval\":[1412,1418]},\"letter\",[]]]],\"nameRest\":[\"define\",{\"sourceInterval\":[1422,1452]},null,[],[\"alt\",{\"sourceInterval\":[1437,1452]},[\"terminal\",{\"sourceInterval\":[1437,1440]},\"_\"],[\"app\",{\"sourceInterval\":[1447,1452]},\"alnum\",[]]]],\"ident\":[\"define\",{\"sourceInterval\":[1456,1489]},\"an identifier\",[],[\"app\",{\"sourceInterval\":[1485,1489]},\"name\",[]]],\"terminal\":[\"define\",{\"sourceInterval\":[1493,1531]},null,[],[\"seq\",{\"sourceInterval\":[1508,1531]},[\"terminal\",{\"sourceInterval\":[1508,1512]},\"\\\"\"],[\"star\",{\"sourceInterval\":[1513,1526]},[\"app\",{\"sourceInterval\":[1513,1525]},\"terminalChar\",[]]],[\"terminal\",{\"sourceInterval\":[1527,1531]},\"\\\"\"]]],\"oneCharTerminal\":[\"define\",{\"sourceInterval\":[1535,1579]},null,[],[\"seq\",{\"sourceInterval\":[1557,1579]},[\"terminal\",{\"sourceInterval\":[1557,1561]},\"\\\"\"],[\"app\",{\"sourceInterval\":[1562,1574]},\"terminalChar\",[]],[\"terminal\",{\"sourceInterval\":[1575,1579]},\"\\\"\"]]],\"terminalChar\":[\"define\",{\"sourceInterval\":[1583,1660]},null,[],[\"alt\",{\"sourceInterval\":[1602,1660]},[\"app\",{\"sourceInterval\":[1602,1612]},\"escapeChar\",[]],[\"seq\",{\"sourceInterval\":[1621,1660]},[\"not\",{\"sourceInterval\":[1621,1626]},[\"terminal\",{\"sourceInterval\":[1622,1626]},\"\\\\\"]],[\"not\",{\"sourceInterval\":[1627,1632]},[\"terminal\",{\"sourceInterval\":[1628,1632]},\"\\\"\"]],[\"not\",{\"sourceInterval\":[1633,1638]},[\"terminal\",{\"sourceInterval\":[1634,1638]},\"\\n\"]],[\"range\",{\"sourceInterval\":[1639,1660]},\"\\u0000\",\"􏿿\"]]]],\"escapeChar_backslash\":[\"define\",{\"sourceInterval\":[1703,1758]},null,[],[\"terminal\",{\"sourceInterval\":[1703,1709]},\"\\\\\\\\\"]],\"escapeChar_doubleQuote\":[\"define\",{\"sourceInterval\":[1765,1822]},null,[],[\"terminal\",{\"sourceInterval\":[1765,1771]},\"\\\\\\\"\"]],\"escapeChar_singleQuote\":[\"define\",{\"sourceInterval\":[1829,1886]},null,[],[\"terminal\",{\"sourceInterval\":[1829,1835]},\"\\\\'\"]],\"escapeChar_backspace\":[\"define\",{\"sourceInterval\":[1893,1948]},null,[],[\"terminal\",{\"sourceInterval\":[1893,1898]},\"\\\\b\"]],\"escapeChar_lineFeed\":[\"define\",{\"sourceInterval\":[1955,2009]},null,[],[\"terminal\",{\"sourceInterval\":[1955,1960]},\"\\\\n\"]],\"escapeChar_carriageReturn\":[\"define\",{\"sourceInterval\":[2016,2076]},null,[],[\"terminal\",{\"sourceInterval\":[2016,2021]},\"\\\\r\"]],\"escapeChar_tab\":[\"define\",{\"sourceInterval\":[2083,2132]},null,[],[\"terminal\",{\"sourceInterval\":[2083,2088]},\"\\\\t\"]],\"escapeChar_unicodeCodePoint\":[\"define\",{\"sourceInterval\":[2139,2243]},null,[],[\"seq\",{\"sourceInterval\":[2139,2221]},[\"terminal\",{\"sourceInterval\":[2139,2145]},\"\\\\u{\"],[\"app\",{\"sourceInterval\":[2146,2154]},\"hexDigit\",[]],[\"opt\",{\"sourceInterval\":[2155,2164]},[\"app\",{\"sourceInterval\":[2155,2163]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2165,2174]},[\"app\",{\"sourceInterval\":[2165,2173]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2188,2197]},[\"app\",{\"sourceInterval\":[2188,2196]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2198,2207]},[\"app\",{\"sourceInterval\":[2198,2206]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2208,2217]},[\"app\",{\"sourceInterval\":[2208,2216]},\"hexDigit\",[]]],[\"terminal\",{\"sourceInterval\":[2218,2221]},\"}\"]]],\"escapeChar_unicodeEscape\":[\"define\",{\"sourceInterval\":[2250,2309]},null,[],[\"seq\",{\"sourceInterval\":[2250,2291]},[\"terminal\",{\"sourceInterval\":[2250,2255]},\"\\\\u\"],[\"app\",{\"sourceInterval\":[2256,2264]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2265,2273]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2274,2282]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2283,2291]},\"hexDigit\",[]]]],\"escapeChar_hexEscape\":[\"define\",{\"sourceInterval\":[2316,2371]},null,[],[\"seq\",{\"sourceInterval\":[2316,2339]},[\"terminal\",{\"sourceInterval\":[2316,2321]},\"\\\\x\"],[\"app\",{\"sourceInterval\":[2322,2330]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2331,2339]},\"hexDigit\",[]]]],\"escapeChar\":[\"define\",{\"sourceInterval\":[1664,2371]},\"an escape sequence\",[],[\"alt\",{\"sourceInterval\":[1703,2371]},[\"app\",{\"sourceInterval\":[1703,1709]},\"escapeChar_backslash\",[]],[\"app\",{\"sourceInterval\":[1765,1771]},\"escapeChar_doubleQuote\",[]],[\"app\",{\"sourceInterval\":[1829,1835]},\"escapeChar_singleQuote\",[]],[\"app\",{\"sourceInterval\":[1893,1898]},\"escapeChar_backspace\",[]],[\"app\",{\"sourceInterval\":[1955,1960]},\"escapeChar_lineFeed\",[]],[\"app\",{\"sourceInterval\":[2016,2021]},\"escapeChar_carriageReturn\",[]],[\"app\",{\"sourceInterval\":[2083,2088]},\"escapeChar_tab\",[]],[\"app\",{\"sourceInterval\":[2139,2221]},\"escapeChar_unicodeCodePoint\",[]],[\"app\",{\"sourceInterval\":[2250,2291]},\"escapeChar_unicodeEscape\",[]],[\"app\",{\"sourceInterval\":[2316,2339]},\"escapeChar_hexEscape\",[]]]],\"space\":[\"extend\",{\"sourceInterval\":[2375,2394]},null,[],[\"app\",{\"sourceInterval\":[2387,2394]},\"comment\",[]]],\"comment_singleLine\":[\"define\",{\"sourceInterval\":[2412,2458]},null,[],[\"seq\",{\"sourceInterval\":[2412,2443]},[\"terminal\",{\"sourceInterval\":[2412,2416]},\"//\"],[\"star\",{\"sourceInterval\":[2417,2429]},[\"seq\",{\"sourceInterval\":[2418,2427]},[\"not\",{\"sourceInterval\":[2418,2423]},[\"terminal\",{\"sourceInterval\":[2419,2423]},\"\\n\"]],[\"app\",{\"sourceInterval\":[2424,2427]},\"any\",[]]]],[\"lookahead\",{\"sourceInterval\":[2430,2443]},[\"alt\",{\"sourceInterval\":[2432,2442]},[\"terminal\",{\"sourceInterval\":[2432,2436]},\"\\n\"],[\"app\",{\"sourceInterval\":[2439,2442]},\"end\",[]]]]]],\"comment_multiLine\":[\"define\",{\"sourceInterval\":[2465,2501]},null,[],[\"seq\",{\"sourceInterval\":[2465,2487]},[\"terminal\",{\"sourceInterval\":[2465,2469]},\"/*\"],[\"star\",{\"sourceInterval\":[2470,2482]},[\"seq\",{\"sourceInterval\":[2471,2480]},[\"not\",{\"sourceInterval\":[2471,2476]},[\"terminal\",{\"sourceInterval\":[2472,2476]},\"*/\"]],[\"app\",{\"sourceInterval\":[2477,2480]},\"any\",[]]]],[\"terminal\",{\"sourceInterval\":[2483,2487]},\"*/\"]]],\"comment\":[\"define\",{\"sourceInterval\":[2398,2501]},null,[],[\"alt\",{\"sourceInterval\":[2412,2501]},[\"app\",{\"sourceInterval\":[2412,2443]},\"comment_singleLine\",[]],[\"app\",{\"sourceInterval\":[2465,2487]},\"comment_multiLine\",[]]]],\"tokens\":[\"define\",{\"sourceInterval\":[2505,2520]},null,[],[\"star\",{\"sourceInterval\":[2514,2520]},[\"app\",{\"sourceInterval\":[2514,2519]},\"token\",[]]]],\"token\":[\"define\",{\"sourceInterval\":[2524,2600]},null,[],[\"alt\",{\"sourceInterval\":[2532,2600]},[\"app\",{\"sourceInterval\":[2532,2540]},\"caseName\",[]],[\"app\",{\"sourceInterval\":[2543,2550]},\"comment\",[]],[\"app\",{\"sourceInterval\":[2553,2558]},\"ident\",[]],[\"app\",{\"sourceInterval\":[2561,2569]},\"operator\",[]],[\"app\",{\"sourceInterval\":[2572,2583]},\"punctuation\",[]],[\"app\",{\"sourceInterval\":[2586,2594]},\"terminal\",[]],[\"app\",{\"sourceInterval\":[2597,2600]},\"any\",[]]]],\"operator\":[\"define\",{\"sourceInterval\":[2604,2669]},null,[],[\"alt\",{\"sourceInterval\":[2615,2669]},[\"terminal\",{\"sourceInterval\":[2615,2619]},\"<:\"],[\"terminal\",{\"sourceInterval\":[2622,2625]},\"=\"],[\"terminal\",{\"sourceInterval\":[2628,2632]},\":=\"],[\"terminal\",{\"sourceInterval\":[2635,2639]},\"+=\"],[\"terminal\",{\"sourceInterval\":[2642,2645]},\"*\"],[\"terminal\",{\"sourceInterval\":[2648,2651]},\"+\"],[\"terminal\",{\"sourceInterval\":[2654,2657]},\"?\"],[\"terminal\",{\"sourceInterval\":[2660,2663]},\"~\"],[\"terminal\",{\"sourceInterval\":[2666,2669]},\"&\"]]],\"punctuation\":[\"define\",{\"sourceInterval\":[2673,2709]},null,[],[\"alt\",{\"sourceInterval\":[2687,2709]},[\"terminal\",{\"sourceInterval\":[2687,2690]},\"<\"],[\"terminal\",{\"sourceInterval\":[2693,2696]},\">\"],[\"terminal\",{\"sourceInterval\":[2699,2702]},\",\"],[\"terminal\",{\"sourceInterval\":[2705,2709]},\"--\"]]]}]);\n","import ohmGrammar from '../dist/ohm-grammar.js';\nimport {Builder} from './Builder.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport {Grammar} from './Grammar.js';\nimport * as pexprs from './pexprs.js';\n\nconst superSplicePlaceholder = Object.create(pexprs.PExpr.prototype);\n\nfunction namespaceHas(ns, name) {\n // Look for an enumerable property, anywhere in the prototype chain.\n for (const prop in ns) {\n if (prop === name) return true;\n }\n return false;\n}\n\n// Returns a Grammar instance (i.e., an object with a `match` method) for\n// `tree`, which is the concrete syntax tree of a user-written grammar.\n// The grammar will be assigned into `namespace` under the name of the grammar\n// as specified in the source.\nexport function buildGrammar(match, namespace, optOhmGrammarForTesting) {\n const builder = new Builder();\n let decl;\n let currentRuleName;\n let currentRuleFormals;\n let overriding = false;\n const metaGrammar = optOhmGrammarForTesting || ohmGrammar;\n\n // A visitor that produces a Grammar instance from the CST.\n const helpers = metaGrammar.createSemantics().addOperation('visit', {\n Grammars(grammarIter) {\n return grammarIter.children.map(c => c.visit());\n },\n Grammar(id, s, _open, rules, _close) {\n const grammarName = id.visit();\n decl = builder.newGrammar(grammarName);\n s.child(0) && s.child(0).visit();\n rules.children.map(c => c.visit());\n const g = decl.build();\n g.source = this.source.trimmed();\n if (namespaceHas(namespace, grammarName)) {\n throw errors.duplicateGrammarDeclaration(g, namespace);\n }\n namespace[grammarName] = g;\n return g;\n },\n\n SuperGrammar(_, n) {\n const superGrammarName = n.visit();\n if (superGrammarName === 'null') {\n decl.withSuperGrammar(null);\n } else {\n if (!namespace || !namespaceHas(namespace, superGrammarName)) {\n throw errors.undeclaredGrammar(superGrammarName, namespace, n.source);\n }\n decl.withSuperGrammar(namespace[superGrammarName]);\n }\n },\n\n Rule_define(n, fs, d, _, b) {\n currentRuleName = n.visit();\n currentRuleFormals = fs.children.map(c => c.visit())[0] || [];\n // If there is no default start rule yet, set it now. This must be done before visiting\n // the body, because it might contain an inline rule definition.\n if (!decl.defaultStartRule && decl.ensureSuperGrammar() !== Grammar.ProtoBuiltInRules) {\n decl.withDefaultStartRule(currentRuleName);\n }\n const body = b.visit();\n const description = d.children.map(c => c.visit())[0];\n const source = this.source.trimmed();\n return decl.define(currentRuleName, currentRuleFormals, body, description, source);\n },\n Rule_override(n, fs, _, b) {\n currentRuleName = n.visit();\n currentRuleFormals = fs.children.map(c => c.visit())[0] || [];\n\n const source = this.source.trimmed();\n decl.ensureSuperGrammarRuleForOverriding(currentRuleName, source);\n\n overriding = true;\n const body = b.visit();\n overriding = false;\n return decl.override(currentRuleName, currentRuleFormals, body, null, source);\n },\n Rule_extend(n, fs, _, b) {\n currentRuleName = n.visit();\n currentRuleFormals = fs.children.map(c => c.visit())[0] || [];\n const body = b.visit();\n const source = this.source.trimmed();\n return decl.extend(currentRuleName, currentRuleFormals, body, null, source);\n },\n RuleBody(_, terms) {\n return builder.alt(...terms.visit()).withSource(this.source);\n },\n OverrideRuleBody(_, terms) {\n const args = terms.visit();\n\n // Check if the super-splice operator (`...`) appears in the terms.\n const expansionPos = args.indexOf(superSplicePlaceholder);\n if (expansionPos >= 0) {\n const beforeTerms = args.slice(0, expansionPos);\n const afterTerms = args.slice(expansionPos + 1);\n\n // Ensure it appears no more than once.\n afterTerms.forEach(t => {\n if (t === superSplicePlaceholder) throw errors.multipleSuperSplices(t);\n });\n\n return new pexprs.Splice(\n decl.superGrammar,\n currentRuleName,\n beforeTerms,\n afterTerms,\n ).withSource(this.source);\n } else {\n return builder.alt(...args).withSource(this.source);\n }\n },\n Formals(opointy, fs, cpointy) {\n return fs.visit();\n },\n\n Params(opointy, ps, cpointy) {\n return ps.visit();\n },\n\n Alt(seqs) {\n return builder.alt(...seqs.visit()).withSource(this.source);\n },\n\n TopLevelTerm_inline(b, n) {\n const inlineRuleName = currentRuleName + '_' + n.visit();\n const body = b.visit();\n const source = this.source.trimmed();\n const isNewRuleDeclaration = !(\n decl.superGrammar && decl.superGrammar.rules[inlineRuleName]\n );\n if (overriding && !isNewRuleDeclaration) {\n decl.override(inlineRuleName, currentRuleFormals, body, null, source);\n } else {\n decl.define(inlineRuleName, currentRuleFormals, body, null, source);\n }\n const params = currentRuleFormals.map(formal => builder.app(formal));\n return builder.app(inlineRuleName, params).withSource(body.source);\n },\n OverrideTopLevelTerm_superSplice(_) {\n return superSplicePlaceholder;\n },\n\n Seq(expr) {\n return builder.seq(...expr.children.map(c => c.visit())).withSource(this.source);\n },\n\n Iter_star(x, _) {\n return builder.star(x.visit()).withSource(this.source);\n },\n Iter_plus(x, _) {\n return builder.plus(x.visit()).withSource(this.source);\n },\n Iter_opt(x, _) {\n return builder.opt(x.visit()).withSource(this.source);\n },\n\n Pred_not(_, x) {\n return builder.not(x.visit()).withSource(this.source);\n },\n Pred_lookahead(_, x) {\n return builder.lookahead(x.visit()).withSource(this.source);\n },\n\n Lex_lex(_, x) {\n return builder.lex(x.visit()).withSource(this.source);\n },\n\n Base_application(rule, ps) {\n const params = ps.children.map(c => c.visit())[0] || [];\n return builder.app(rule.visit(), params).withSource(this.source);\n },\n Base_range(from, _, to) {\n return builder.range(from.visit(), to.visit()).withSource(this.source);\n },\n Base_terminal(expr) {\n return builder.terminal(expr.visit()).withSource(this.source);\n },\n Base_paren(open, x, close) {\n return x.visit();\n },\n\n ruleDescr(open, t, close) {\n return t.visit();\n },\n ruleDescrText(_) {\n return this.sourceString.trim();\n },\n\n caseName(_, space1, n, space2, end) {\n return n.visit();\n },\n\n name(first, rest) {\n return this.sourceString;\n },\n nameFirst(expr) {},\n nameRest(expr) {},\n\n terminal(open, cs, close) {\n return cs.children.map(c => c.visit()).join('');\n },\n\n oneCharTerminal(open, c, close) {\n return c.visit();\n },\n\n escapeChar(c) {\n try {\n return common.unescapeCodePoint(this.sourceString);\n } catch (err) {\n if (err instanceof RangeError && err.message.startsWith('Invalid code point ')) {\n throw errors.invalidCodePoint(c);\n }\n throw err; // Rethrow\n }\n },\n\n NonemptyListOf(x, _, xs) {\n return [x.visit()].concat(xs.children.map(c => c.visit()));\n },\n EmptyListOf() {\n return [];\n },\n\n _terminal() {\n return this.sourceString;\n },\n });\n return helpers(match).visit();\n}\n","import {makeRecipe} from '../src/main-kernel.js';\nexport default makeRecipe([\"grammar\",{\"source\":\"OperationsAndAttributes {\\n\\n AttributeSignature =\\n name\\n\\n OperationSignature =\\n name Formals?\\n\\n Formals\\n = \\\"(\\\" ListOf<name, \\\",\\\"> \\\")\\\"\\n\\n name (a name)\\n = nameFirst nameRest*\\n\\n nameFirst\\n = \\\"_\\\"\\n | letter\\n\\n nameRest\\n = \\\"_\\\"\\n | alnum\\n\\n}\"},\"OperationsAndAttributes\",null,\"AttributeSignature\",{\"AttributeSignature\":[\"define\",{\"sourceInterval\":[29,58]},null,[],[\"app\",{\"sourceInterval\":[54,58]},\"name\",[]]],\"OperationSignature\":[\"define\",{\"sourceInterval\":[62,100]},null,[],[\"seq\",{\"sourceInterval\":[87,100]},[\"app\",{\"sourceInterval\":[87,91]},\"name\",[]],[\"opt\",{\"sourceInterval\":[92,100]},[\"app\",{\"sourceInterval\":[92,99]},\"Formals\",[]]]]],\"Formals\":[\"define\",{\"sourceInterval\":[104,143]},null,[],[\"seq\",{\"sourceInterval\":[118,143]},[\"terminal\",{\"sourceInterval\":[118,121]},\"(\"],[\"app\",{\"sourceInterval\":[122,139]},\"ListOf\",[[\"app\",{\"sourceInterval\":[129,133]},\"name\",[]],[\"terminal\",{\"sourceInterval\":[135,138]},\",\"]]],[\"terminal\",{\"sourceInterval\":[140,143]},\")\"]]],\"name\":[\"define\",{\"sourceInterval\":[147,187]},\"a name\",[],[\"seq\",{\"sourceInterval\":[168,187]},[\"app\",{\"sourceInterval\":[168,177]},\"nameFirst\",[]],[\"star\",{\"sourceInterval\":[178,187]},[\"app\",{\"sourceInterval\":[178,186]},\"nameRest\",[]]]]],\"nameFirst\":[\"define\",{\"sourceInterval\":[191,223]},null,[],[\"alt\",{\"sourceInterval\":[207,223]},[\"terminal\",{\"sourceInterval\":[207,210]},\"_\"],[\"app\",{\"sourceInterval\":[217,223]},\"letter\",[]]]],\"nameRest\":[\"define\",{\"sourceInterval\":[227,257]},null,[],[\"alt\",{\"sourceInterval\":[242,257]},[\"terminal\",{\"sourceInterval\":[242,245]},\"_\"],[\"app\",{\"sourceInterval\":[252,257]},\"alnum\",[]]]]}]);\n","import operationsAndAttributesGrammar from '../dist/operations-and-attributes.js';\nimport {Grammar} from './Grammar.js';\nimport {Semantics} from './Semantics.js';\n\ninitBuiltInSemantics(Grammar.BuiltInRules);\ninitPrototypeParser(operationsAndAttributesGrammar); // requires BuiltInSemantics\n\nfunction initBuiltInSemantics(builtInRules) {\n const actions = {\n empty() {\n return this.iteration();\n },\n nonEmpty(first, _, rest) {\n return this.iteration([first].concat(rest.children));\n },\n };\n\n Semantics.BuiltInSemantics = Semantics.createSemantics(builtInRules, null).addOperation(\n 'asIteration',\n {\n emptyListOf: actions.empty,\n nonemptyListOf: actions.nonEmpty,\n EmptyListOf: actions.empty,\n NonemptyListOf: actions.nonEmpty,\n },\n );\n}\n\nfunction initPrototypeParser(grammar) {\n Semantics.prototypeGrammarSemantics = grammar.createSemantics().addOperation('parse', {\n AttributeSignature(name) {\n return {\n name: name.parse(),\n formals: [],\n };\n },\n OperationSignature(name, optFormals) {\n return {\n name: name.parse(),\n formals: optFormals.children.map(c => c.parse())[0] || [],\n };\n },\n Formals(oparen, fs, cparen) {\n return fs.asIteration().children.map(c => c.parse());\n },\n name(first, rest) {\n return this.sourceString;\n },\n });\n Semantics.prototypeGrammar = grammar;\n}\n","export function findIndentation(input) {\n let pos = 0;\n const stack = [0];\n const topOfStack = () => stack[stack.length - 1];\n\n const result = {};\n\n const regex = /( *).*(?:$|\\r?\\n|\\r)/g;\n let match;\n while ((match = regex.exec(input)) != null) {\n const [line, indent] = match;\n\n // The last match will always have length 0. In every other case, some\n // characters will be matched (possibly only the end of line chars).\n if (line.length === 0) break;\n\n const indentSize = indent.length;\n const prevSize = topOfStack();\n\n const indentPos = pos + indentSize;\n\n if (indentSize > prevSize) {\n // Indent -- always only 1.\n stack.push(indentSize);\n result[indentPos] = 1;\n } else if (indentSize < prevSize) {\n // Dedent -- can be multiple levels.\n const prevLength = stack.length;\n while (topOfStack() !== indentSize) {\n stack.pop();\n }\n result[indentPos] = -1 * (prevLength - stack.length);\n }\n pos += line.length;\n }\n // Ensure that there is a matching DEDENT for every remaining INDENT.\n if (stack.length > 1) {\n result[pos] = 1 - stack.length;\n }\n return result;\n}\n","import BuiltInRules from '../dist/built-in-rules.js';\nimport {Builder} from '../src/Builder.js';\nimport {Failure} from '../src/Failure.js';\nimport {TerminalNode} from '../src/nodes.js';\nimport * as pexprs from '../src/pexprs.js';\nimport {findIndentation} from './findIndentation.js';\nimport {InputStream} from './InputStream.js';\n\nconst INDENT_DESCRIPTION = 'an indented block';\nconst DEDENT_DESCRIPTION = 'a dedent';\n\n// A sentinel value that is out of range for both charCodeAt() and codePointAt().\nconst INVALID_CODE_POINT = 0x10ffff + 1;\n\nclass InputStreamWithIndentation extends InputStream {\n constructor(state) {\n super(state.input);\n this.state = state;\n }\n\n _indentationAt(pos) {\n return this.state.userData[pos] || 0;\n }\n\n atEnd() {\n return super.atEnd() && this._indentationAt(this.pos) === 0;\n }\n\n next() {\n if (this._indentationAt(this.pos) !== 0) {\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return undefined;\n }\n return super.next();\n }\n\n nextCharCode() {\n if (this._indentationAt(this.pos) !== 0) {\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return INVALID_CODE_POINT;\n }\n return super.nextCharCode();\n }\n\n nextCodePoint() {\n if (this._indentationAt(this.pos) !== 0) {\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return INVALID_CODE_POINT;\n }\n return super.nextCodePoint();\n }\n}\n\nclass Indentation extends pexprs.PExpr {\n constructor(isIndent = true) {\n super();\n this.isIndent = isIndent;\n }\n\n allowsSkippingPrecedingSpace() {\n return true;\n }\n\n eval(state) {\n const {inputStream} = state;\n const pseudoTokens = state.userData;\n state.doNotMemoize = true;\n\n const origPos = inputStream.pos;\n\n const sign = this.isIndent ? 1 : -1;\n const count = (pseudoTokens[origPos] || 0) * sign;\n if (count > 0) {\n // Update the count to consume the pseudotoken.\n state.userData = Object.create(pseudoTokens);\n state.userData[origPos] -= sign;\n\n state.pushBinding(new TerminalNode(0), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n }\n\n getArity() {\n return 1;\n }\n\n _assertAllApplicationsAreValid(ruleName, grammar) {}\n\n _isNullable(grammar, memo) {\n return false;\n }\n\n assertChoicesHaveUniformArity(ruleName) {}\n\n assertIteratedExprsAreNotNullable(grammar) {}\n\n introduceParams(formals) {\n return this;\n }\n\n substituteParams(actuals) {\n return this;\n }\n\n toString() {\n return this.isIndent ? 'indent' : 'dedent';\n }\n\n toDisplayString() {\n return this.toString();\n }\n\n toFailure(grammar) {\n const description = this.isIndent ? INDENT_DESCRIPTION : DEDENT_DESCRIPTION;\n return new Failure(this, description, 'description');\n }\n}\n\n// Create a new definition for `any` that can consume indent & dedent.\nconst applyIndent = new pexprs.Apply('indent');\nconst applyDedent = new pexprs.Apply('dedent');\nconst newAnyBody = new pexprs.Splice(BuiltInRules, 'any', [applyIndent, applyDedent], []);\n\nexport const IndentationSensitive = new Builder()\n .newGrammar('IndentationSensitive')\n .withSuperGrammar(BuiltInRules)\n .define('indent', [], new Indentation(true), INDENT_DESCRIPTION, undefined, true)\n .define('dedent', [], new Indentation(false), DEDENT_DESCRIPTION, undefined, true)\n .extend('any', [], newAnyBody, 'any character', undefined)\n .build();\n\nObject.assign(IndentationSensitive, {\n _matchStateInitializer(state) {\n state.userData = findIndentation(state.input);\n state.inputStream = new InputStreamWithIndentation(state);\n },\n supportsIncrementalParsing: false,\n});\n","// Generated by scripts/prebuild.js\nexport const version = '17.0.1';\n","import ohmGrammar from '../dist/ohm-grammar.js';\nimport {buildGrammar} from './buildGrammar.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport {Grammar} from './Grammar.js';\nimport * as pexprs from './pexprs.js';\nimport * as util from './util.js';\n\n// Late initialization for stuff that is bootstrapped.\n\nimport './semanticsDeferredInit.js'; // TODO: Clean this up.\nGrammar.initApplicationParser(ohmGrammar, buildGrammar);\n\nconst isBuffer = obj =>\n !!obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj);\n\nfunction compileAndLoad(source, namespace) {\n const m = ohmGrammar.match(source, 'Grammars');\n if (m.failed()) {\n throw errors.grammarSyntaxError(m);\n }\n return buildGrammar(m, namespace);\n}\n\nexport function grammar(source, optNamespace) {\n const ns = grammars(source, optNamespace);\n\n // Ensure that the source contained no more than one grammar definition.\n const grammarNames = Object.keys(ns);\n if (grammarNames.length === 0) {\n throw new Error('Missing grammar definition');\n } else if (grammarNames.length > 1) {\n const secondGrammar = ns[grammarNames[1]];\n const interval = secondGrammar.source;\n throw new Error(\n util.getLineAndColumnMessage(interval.sourceString, interval.startIdx) +\n 'Found more than one grammar definition -- use ohm.grammars() instead.',\n );\n }\n return ns[grammarNames[0]]; // Return the one and only grammar.\n}\n\nexport function grammars(source, optNamespace) {\n const ns = Object.create(optNamespace || {});\n if (typeof source !== 'string') {\n // For convenience, detect Node.js Buffer objects and automatically call toString().\n if (isBuffer(source)) {\n source = source.toString();\n } else {\n throw new TypeError(\n 'Expected string as first argument, got ' + common.unexpectedObjToString(source),\n );\n }\n }\n compileAndLoad(source, ns);\n return ns;\n}\n\nexport * from './main-kernel.js';\nexport {IndentationSensitive as ExperimentalIndentationSensitive} from './IndentationSensitive.js';\nexport {ohmGrammar};\nexport {pexprs};\nexport {version} from './version.js';\n"],"names":["common.isSyntactic","pexprs.Apply","common.padLeft","common.StringBuffer","common.assert","util.getLineAndColumn","util.getLineAndColumnMessage","errors.intervalSourcesDontMatch","common.defineLazyProperty","common.repeat","pexprs.PExpr","pexprs.any","pexprs.end","pexprs.Terminal","pexprs.Range","pexprs.UnicodeChar","pexprs.Alt","pexprs.Iter","pexprs.Lex","pexprs.Lookahead","pexprs.Not","pexprs.Param","pexprs.Seq","BuiltInRules","util.awaitBuiltInRules","errors.undeclaredRule","errors.applicationOfSyntacticRuleFromLexicalContext","errors.wrongNumberOfArguments","errors.incorrectArgumentType","errors.applySyntacticWithLexicalRuleApplication","errors.unnecessaryExperimentalApplySyntactic","errors.invalidParameter","errors.inconsistentArity","pexprs.Extend","errors.kleeneExprHasNullableOperand","pexprs.Opt","common.isLexical","common.abstract","pexprs.Splice","pexprs.Star","pexprs.Plus","util.uniqueId","errors.missingSemanticAction","common.unexpectedObjToString","ohmGrammar","buildGrammar","errors.wrongNumberOfParameters","pexprs.CaseInsensitiveTerminal","errors.cannotOverrideUndeclaredRule","duplicateParameterNames","errors.duplicateParameterNames","errors.throwErrors","errors.duplicateRuleDeclaration","errors.cannotExtendUndeclaredRule","errors.duplicateGrammarDeclaration","errors.undeclaredGrammar","errors.multipleSuperSplices","common.unescapeCodePoint","errors.invalidCodePoint","errors.grammarSyntaxError"],"mappings":"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CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAA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C,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EA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"}
1
+ {"version":3,"file":"ohm.cjs","sources":["../src/common.js","../src/UnicodeCategories.js","../src/pexprs-main.js","../src/errors.js","../src/util.js","../src/Interval.js","../src/InputStream.js","../src/MatchResult.js","../src/PosInfo.js","../src/Trace.js","../src/pexprs-allowsSkippingPrecedingSpace.js","../src/pexprs-assertAllApplicationsAreValid.js","../src/pexprs-assertChoicesHaveUniformArity.js","../src/pexprs-assertIteratedExprsAreNotNullable.js","../src/nodes.js","../src/pexprs-eval.js","../src/pexprs-getArity.js","../src/pexprs-outputRecipe.js","../src/pexprs-introduceParams.js","../src/pexprs-isNullable.js","../src/pexprs-substituteParams.js","../src/pexprs-toArgumentNameList.js","../src/pexprs-toDisplayString.js","../src/Failure.js","../src/pexprs-toFailure.js","../src/pexprs-toString.js","../src/CaseInsensitiveTerminal.js","../src/pexprs.js","../src/MatchState.js","../src/Matcher.js","../src/Semantics.js","../src/Grammar.js","../src/GrammarDecl.js","../src/Builder.js","../src/makeRecipe.js","built-in-rules.js","../src/main-kernel.js","ohm-grammar.js","../src/buildGrammar.js","operations-and-attributes.js","../src/semanticsDeferredInit.js","../src/findIndentation.js","../src/IndentationSensitive.js","../src/version.js","../src/main.js"],"sourcesContent":["// --------------------------------------------------------------------\n// Private Stuff\n// --------------------------------------------------------------------\n\n// Helpers\n\nconst escapeStringFor = {};\nfor (let c = 0; c < 128; c++) {\n escapeStringFor[c] = String.fromCharCode(c);\n}\nescapeStringFor[\"'\".charCodeAt(0)] = \"\\\\'\";\nescapeStringFor['\"'.charCodeAt(0)] = '\\\\\"';\nescapeStringFor['\\\\'.charCodeAt(0)] = '\\\\\\\\';\nescapeStringFor['\\b'.charCodeAt(0)] = '\\\\b';\nescapeStringFor['\\f'.charCodeAt(0)] = '\\\\f';\nescapeStringFor['\\n'.charCodeAt(0)] = '\\\\n';\nescapeStringFor['\\r'.charCodeAt(0)] = '\\\\r';\nescapeStringFor['\\t'.charCodeAt(0)] = '\\\\t';\nescapeStringFor['\\u000b'.charCodeAt(0)] = '\\\\v';\n\n// --------------------------------------------------------------------\n// Exports\n// --------------------------------------------------------------------\n\nexport function abstract(optMethodName) {\n const methodName = optMethodName || '';\n return function() {\n throw new Error(\n 'this method ' +\n methodName +\n ' is abstract! ' +\n '(it has no implementation in class ' +\n this.constructor.name +\n ')',\n );\n };\n}\n\nexport function assert(cond, message) {\n if (!cond) {\n throw new Error(message || 'Assertion failed');\n }\n}\n\n// Define a lazily-computed, non-enumerable property named `propName`\n// on the object `obj`. `getterFn` will be called to compute the value the\n// first time the property is accessed.\nexport function defineLazyProperty(obj, propName, getterFn) {\n let memo;\n Object.defineProperty(obj, propName, {\n get() {\n if (!memo) {\n memo = getterFn.call(this);\n }\n return memo;\n },\n });\n}\n\nexport function clone(obj) {\n if (obj) {\n return Object.assign({}, obj);\n }\n return obj;\n}\n\nexport function repeatFn(fn, n) {\n const arr = [];\n while (n-- > 0) {\n arr.push(fn());\n }\n return arr;\n}\n\nexport function repeatStr(str, n) {\n return new Array(n + 1).join(str);\n}\n\nexport function repeat(x, n) {\n return repeatFn(() => x, n);\n}\n\nexport function getDuplicates(array) {\n const duplicates = [];\n for (let idx = 0; idx < array.length; idx++) {\n const x = array[idx];\n if (array.lastIndexOf(x) !== idx && duplicates.indexOf(x) < 0) {\n duplicates.push(x);\n }\n }\n return duplicates;\n}\n\nexport function copyWithoutDuplicates(array) {\n const noDuplicates = [];\n array.forEach(entry => {\n if (noDuplicates.indexOf(entry) < 0) {\n noDuplicates.push(entry);\n }\n });\n return noDuplicates;\n}\n\nexport function isSyntactic(ruleName) {\n const firstChar = ruleName[0];\n return firstChar === firstChar.toUpperCase();\n}\n\nexport function isLexical(ruleName) {\n return !isSyntactic(ruleName);\n}\n\nexport function padLeft(str, len, optChar) {\n const ch = optChar || ' ';\n if (str.length < len) {\n return repeatStr(ch, len - str.length) + str;\n }\n return str;\n}\n\n// StringBuffer\n\nexport function StringBuffer() {\n this.strings = [];\n}\n\nStringBuffer.prototype.append = function(str) {\n this.strings.push(str);\n};\n\nStringBuffer.prototype.contents = function() {\n return this.strings.join('');\n};\n\nconst escapeUnicode = str => String.fromCodePoint(parseInt(str, 16));\n\nexport function unescapeCodePoint(s) {\n if (s.charAt(0) === '\\\\') {\n switch (s.charAt(1)) {\n case 'b':\n return '\\b';\n case 'f':\n return '\\f';\n case 'n':\n return '\\n';\n case 'r':\n return '\\r';\n case 't':\n return '\\t';\n case 'v':\n return '\\v';\n case 'x':\n return escapeUnicode(s.slice(2, 4));\n case 'u':\n return s.charAt(2) === '{' ?\n escapeUnicode(s.slice(3, -1)) :\n escapeUnicode(s.slice(2, 6));\n default:\n return s.charAt(1);\n }\n } else {\n return s;\n }\n}\n\n// Helper for producing a description of an unknown object in a safe way.\n// Especially useful for error messages where an unexpected type of object was encountered.\nexport function unexpectedObjToString(obj) {\n if (obj == null) {\n return String(obj);\n }\n const baseToString = Object.prototype.toString.call(obj);\n try {\n let typeName;\n if (obj.constructor && obj.constructor.name) {\n typeName = obj.constructor.name;\n } else if (baseToString.indexOf('[object ') === 0) {\n typeName = baseToString.slice(8, -1); // Extract e.g. \"Array\" from \"[object Array]\".\n } else {\n typeName = typeof obj;\n }\n return typeName + ': ' + JSON.stringify(String(obj));\n } catch (e) {\n return baseToString;\n }\n}\n","// These are just categories that are used in ES5/ES2015.\n// The full list of Unicode categories is here: http://www.fileformat.info/info/unicode/category/index.htm.\nexport const UnicodeCategories = {\n // Letters\n Lu: /\\p{Lu}/u,\n Ll: /\\p{Ll}/u,\n Lt: /\\p{Lt}/u,\n Lm: /\\p{Lm}/u,\n Lo: /\\p{Lo}/u,\n\n // Numbers\n Nl: /\\p{Nl}/u,\n Nd: /\\p{Nd}/u,\n\n // Marks\n Mn: /\\p{Mn}/u,\n Mc: /\\p{Mc}/u,\n\n // Punctuation, Connector\n Pc: /\\p{Pc}/u,\n\n // Separator, Space\n Zs: /\\p{Zs}/u,\n\n // These two are not real Unicode categories, but our useful for Ohm.\n // L is a combination of all the letter categories.\n // Ltmo is a combination of Lt, Lm, and Lo.\n L: /\\p{Letter}/u,\n Ltmo: /\\p{Lt}|\\p{Lm}|\\p{Lo}/u,\n};\n","import {UnicodeCategories} from './UnicodeCategories.js';\nimport * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n// General stuff\n\nexport class PExpr {\n constructor() {\n if (this.constructor === PExpr) {\n throw new Error(\"PExpr cannot be instantiated -- it's abstract\");\n }\n }\n\n // Set the `source` property to the interval containing the source for this expression.\n withSource(interval) {\n if (interval) {\n this.source = interval.trimmed();\n }\n return this;\n }\n}\n\n// Any\n\nexport const any = Object.create(PExpr.prototype);\n\n// End\n\nexport const end = Object.create(PExpr.prototype);\n\n// Terminals\n\nexport class Terminal extends PExpr {\n constructor(obj) {\n super();\n this.obj = obj;\n }\n}\n\n// Ranges\n\nexport class Range extends PExpr {\n constructor(from, to) {\n super();\n this.from = from;\n this.to = to;\n // If either `from` or `to` is made up of multiple code units, then\n // the range should consume a full code point, not a single code unit.\n this.matchCodePoint = from.length > 1 || to.length > 1;\n }\n}\n\n// Parameters\n\nexport class Param extends PExpr {\n constructor(index) {\n super();\n this.index = index;\n }\n}\n\n// Alternation\n\nexport class Alt extends PExpr {\n constructor(terms) {\n super();\n this.terms = terms;\n }\n}\n\n// Extend is an implementation detail of rule extension\n\nexport class Extend extends Alt {\n constructor(superGrammar, name, body) {\n const origBody = superGrammar.rules[name].body;\n super([body, origBody]);\n\n this.superGrammar = superGrammar;\n this.name = name;\n this.body = body;\n }\n}\n\n// Splice is an implementation detail of rule overriding with the `...` operator.\nexport class Splice extends Alt {\n constructor(superGrammar, ruleName, beforeTerms, afterTerms) {\n const origBody = superGrammar.rules[ruleName].body;\n super([...beforeTerms, origBody, ...afterTerms]);\n\n this.superGrammar = superGrammar;\n this.ruleName = ruleName;\n this.expansionPos = beforeTerms.length;\n }\n}\n\n// Sequences\n\nexport class Seq extends PExpr {\n constructor(factors) {\n super();\n this.factors = factors;\n }\n}\n\n// Iterators and optionals\n\nexport class Iter extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\nexport class Star extends Iter {}\nexport class Plus extends Iter {}\nexport class Opt extends Iter {}\n\nStar.prototype.operator = '*';\nPlus.prototype.operator = '+';\nOpt.prototype.operator = '?';\n\nStar.prototype.minNumMatches = 0;\nPlus.prototype.minNumMatches = 1;\nOpt.prototype.minNumMatches = 0;\n\nStar.prototype.maxNumMatches = Number.POSITIVE_INFINITY;\nPlus.prototype.maxNumMatches = Number.POSITIVE_INFINITY;\nOpt.prototype.maxNumMatches = 1;\n\n// Predicates\n\nexport class Not extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\nexport class Lookahead extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\n// \"Lexification\"\n\nexport class Lex extends PExpr {\n constructor(expr) {\n super();\n this.expr = expr;\n }\n}\n\n// Rule application\n\nexport class Apply extends PExpr {\n constructor(ruleName, args = []) {\n super();\n this.ruleName = ruleName;\n this.args = args;\n }\n\n isSyntactic() {\n return common.isSyntactic(this.ruleName);\n }\n\n // This method just caches the result of `this.toString()` in a non-enumerable property.\n toMemoKey() {\n if (!this._memoKey) {\n Object.defineProperty(this, '_memoKey', {value: this.toString()});\n }\n return this._memoKey;\n }\n}\n\n// Unicode character\n\nexport class UnicodeChar extends PExpr {\n constructor(category) {\n super();\n this.category = category;\n this.pattern = UnicodeCategories[category];\n }\n}\n","import {assert} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport function createError(message, optInterval) {\n let e;\n if (optInterval) {\n e = new Error(optInterval.getLineAndColumnMessage() + message);\n e.shortMessage = message;\n e.interval = optInterval;\n } else {\n e = new Error(message);\n }\n return e;\n}\n\n// ----------------- errors about intervals -----------------\n\nexport function intervalSourcesDontMatch() {\n return createError(\"Interval sources don't match\");\n}\n\n// ----------------- errors about grammars -----------------\n\n// Grammar syntax error\n\nexport function grammarSyntaxError(matchFailure) {\n const e = new Error();\n Object.defineProperty(e, 'message', {\n enumerable: true,\n get() {\n return matchFailure.message;\n },\n });\n Object.defineProperty(e, 'shortMessage', {\n enumerable: true,\n get() {\n return 'Expected ' + matchFailure.getExpectedText();\n },\n });\n e.interval = matchFailure.getInterval();\n return e;\n}\n\n// Undeclared grammar\n\nexport function undeclaredGrammar(grammarName, namespace, interval) {\n const message = namespace ?\n `Grammar ${grammarName} is not declared in namespace '${namespace}'` :\n 'Undeclared grammar ' + grammarName;\n return createError(message, interval);\n}\n\n// Duplicate grammar declaration\n\nexport function duplicateGrammarDeclaration(grammar, namespace) {\n return createError('Grammar ' + grammar.name + ' is already declared in this namespace');\n}\n\nexport function grammarDoesNotSupportIncrementalParsing(grammar) {\n return createError(`Grammar '${grammar.name}' does not support incremental parsing`);\n}\n\n// ----------------- rules -----------------\n\n// Undeclared rule\n\nexport function undeclaredRule(ruleName, grammarName, optInterval) {\n return createError(\n 'Rule ' + ruleName + ' is not declared in grammar ' + grammarName,\n optInterval,\n );\n}\n\n// Cannot override undeclared rule\n\nexport function cannotOverrideUndeclaredRule(ruleName, grammarName, optSource) {\n return createError(\n 'Cannot override rule ' + ruleName + ' because it is not declared in ' + grammarName,\n optSource,\n );\n}\n\n// Cannot extend undeclared rule\n\nexport function cannotExtendUndeclaredRule(ruleName, grammarName, optSource) {\n return createError(\n 'Cannot extend rule ' + ruleName + ' because it is not declared in ' + grammarName,\n optSource,\n );\n}\n\n// Duplicate rule declaration\n\nexport function duplicateRuleDeclaration(ruleName, grammarName, declGrammarName, optSource) {\n let message =\n \"Duplicate declaration for rule '\" + ruleName + \"' in grammar '\" + grammarName + \"'\";\n if (grammarName !== declGrammarName) {\n message += \" (originally declared in '\" + declGrammarName + \"')\";\n }\n return createError(message, optSource);\n}\n\n// Wrong number of parameters\n\nexport function wrongNumberOfParameters(ruleName, expected, actual, source) {\n return createError(\n 'Wrong number of parameters for rule ' +\n ruleName +\n ' (expected ' +\n expected +\n ', got ' +\n actual +\n ')',\n source,\n );\n}\n\n// Wrong number of arguments\n\nexport function wrongNumberOfArguments(ruleName, expected, actual, expr) {\n return createError(\n 'Wrong number of arguments for rule ' +\n ruleName +\n ' (expected ' +\n expected +\n ', got ' +\n actual +\n ')',\n expr,\n );\n}\n\n// Duplicate parameter names\n\nexport function duplicateParameterNames(ruleName, duplicates, source) {\n return createError(\n 'Duplicate parameter names in rule ' + ruleName + ': ' + duplicates.join(', '),\n source,\n );\n}\n\n// Invalid parameter expression\n\nexport function invalidParameter(ruleName, expr) {\n return createError(\n 'Invalid parameter to rule ' +\n ruleName +\n ': ' +\n expr +\n ' has arity ' +\n expr.getArity() +\n ', but parameter expressions must have arity 1',\n expr.source,\n );\n}\n\n// Application of syntactic rule from lexical rule\n\nconst syntacticVsLexicalNote =\n 'NOTE: A _syntactic rule_ is a rule whose name begins with a capital letter. ' +\n 'See https://ohmjs.org/d/svl for more details.';\n\nexport function applicationOfSyntacticRuleFromLexicalContext(ruleName, applyExpr) {\n return createError(\n 'Cannot apply syntactic rule ' + ruleName + ' from here (inside a lexical context)',\n applyExpr.source,\n );\n}\n\n// Lexical rule application used with applySyntactic\n\nexport function applySyntacticWithLexicalRuleApplication(applyExpr) {\n const {ruleName} = applyExpr;\n return createError(\n `applySyntactic is for syntactic rules, but '${ruleName}' is a lexical rule. ` +\n syntacticVsLexicalNote,\n applyExpr.source,\n );\n}\n\n// Application of applySyntactic in a syntactic context\n\nexport function unnecessaryExperimentalApplySyntactic(applyExpr) {\n return createError(\n 'applySyntactic is not required here (in a syntactic context)',\n applyExpr.source,\n );\n}\n\n// Incorrect argument type\n\nexport function incorrectArgumentType(expectedType, expr) {\n return createError('Incorrect argument type: expected ' + expectedType, expr.source);\n}\n\n// Multiple instances of the super-splice operator (`...`) in the rule body.\n\nexport function multipleSuperSplices(expr) {\n return createError(\"'...' can appear at most once in a rule body\", expr.source);\n}\n\n// Unicode code point escapes\n\nexport function invalidCodePoint(applyWrapper) {\n const node = applyWrapper._node;\n assert(node && node.isNonterminal() && node.ctorName === 'escapeChar_unicodeCodePoint');\n\n // Get an interval that covers all of the hex digits.\n const digitIntervals = applyWrapper.children.slice(1, -1).map(d => d.source);\n const fullInterval = digitIntervals[0].coverageWith(...digitIntervals.slice(1));\n return createError(\n `U+${fullInterval.contents} is not a valid Unicode code point`,\n fullInterval,\n );\n}\n\n// ----------------- Kleene operators -----------------\n\nexport function kleeneExprHasNullableOperand(kleeneExpr, applicationStack) {\n const actuals =\n applicationStack.length > 0 ? applicationStack[applicationStack.length - 1].args : [];\n const expr = kleeneExpr.expr.substituteParams(actuals);\n let message =\n 'Nullable expression ' +\n expr +\n \" is not allowed inside '\" +\n kleeneExpr.operator +\n \"' (possible infinite loop)\";\n if (applicationStack.length > 0) {\n const stackTrace = applicationStack\n .map(app => new pexprs.Apply(app.ruleName, app.args))\n .join('\\n');\n message += '\\nApplication stack (most recent application last):\\n' + stackTrace;\n }\n return createError(message, kleeneExpr.expr.source);\n}\n\n// ----------------- arity -----------------\n\nexport function inconsistentArity(ruleName, expected, actual, expr) {\n return createError(\n 'Rule ' +\n ruleName +\n ' involves an alternation which has inconsistent arity ' +\n '(expected ' +\n expected +\n ', got ' +\n actual +\n ')',\n expr.source,\n );\n}\n\n// ----------------- properties -----------------\n\nexport function duplicatePropertyNames(duplicates) {\n return createError('Object pattern has duplicate property names: ' + duplicates.join(', '));\n}\n\n// ----------------- constructors -----------------\n\nexport function invalidConstructorCall(grammar, ctorName, children) {\n return createError(\n 'Attempt to invoke constructor ' + ctorName + ' with invalid or unexpected arguments',\n );\n}\n\n// ----------------- convenience -----------------\n\nexport function multipleErrors(errors) {\n const messages = errors.map(e => e.message);\n return createError(['Errors:'].concat(messages).join('\\n- '), errors[0].interval);\n}\n\n// ----------------- semantic -----------------\n\nexport function missingSemanticAction(ctorName, name, type, stack) {\n let stackTrace = stack\n .slice(0, -1)\n .map(info => {\n const ans = ' ' + info[0].name + ' > ' + info[1];\n return info.length === 3 ? ans + \" for '\" + info[2] + \"'\" : ans;\n })\n .join('\\n');\n stackTrace += '\\n ' + name + ' > ' + ctorName;\n\n let moreInfo = '';\n if (ctorName === '_iter') {\n moreInfo = [\n '\\nNOTE: as of Ohm v16, there is no default action for iteration nodes — see ',\n ' https://ohmjs.org/d/dsa for details.',\n ].join('\\n');\n }\n\n const message = [\n `Missing semantic action for '${ctorName}' in ${type} '${name}'.${moreInfo}`,\n 'Action stack (most recent call last):',\n stackTrace,\n ].join('\\n');\n\n const e = createError(message);\n e.name = 'missingSemanticAction';\n return e;\n}\n\nexport function throwErrors(errors) {\n if (errors.length === 1) {\n throw errors[0];\n }\n if (errors.length > 1) {\n throw multipleErrors(errors);\n }\n}\n","import * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n// Given an array of numbers `arr`, return an array of the numbers as strings,\n// right-justified and padded to the same length.\nfunction padNumbersToEqualLength(arr) {\n let maxLen = 0;\n const strings = arr.map(n => {\n const str = n.toString();\n maxLen = Math.max(maxLen, str.length);\n return str;\n });\n return strings.map(s => common.padLeft(s, maxLen));\n}\n\n// Produce a new string that would be the result of copying the contents\n// of the string `src` onto `dest` at offset `offest`.\nfunction strcpy(dest, src, offset) {\n const origDestLen = dest.length;\n const start = dest.slice(0, offset);\n const end = dest.slice(offset + src.length);\n return (start + src + end).substr(0, origDestLen);\n}\n\n// Casts the underlying lineAndCol object to a formatted message string,\n// highlighting `ranges`.\nfunction lineAndColumnToMessage(...ranges) {\n const lineAndCol = this;\n const {offset} = lineAndCol;\n const {repeatStr} = common;\n\n const sb = new common.StringBuffer();\n sb.append('Line ' + lineAndCol.lineNum + ', col ' + lineAndCol.colNum + ':\\n');\n\n // An array of the previous, current, and next line numbers as strings of equal length.\n const lineNumbers = padNumbersToEqualLength([\n lineAndCol.prevLine == null ? 0 : lineAndCol.lineNum - 1,\n lineAndCol.lineNum,\n lineAndCol.nextLine == null ? 0 : lineAndCol.lineNum + 1,\n ]);\n\n // Helper for appending formatting input lines to the buffer.\n const appendLine = (num, content, prefix) => {\n sb.append(prefix + lineNumbers[num] + ' | ' + content + '\\n');\n };\n\n // Include the previous line for context if possible.\n if (lineAndCol.prevLine != null) {\n appendLine(0, lineAndCol.prevLine, ' ');\n }\n // Line that the error occurred on.\n appendLine(1, lineAndCol.line, '> ');\n\n // Build up the line that points to the offset and possible indicates one or more ranges.\n // Start with a blank line, and indicate each range by overlaying a string of `~` chars.\n const lineLen = lineAndCol.line.length;\n let indicationLine = repeatStr(' ', lineLen + 1);\n for (let i = 0; i < ranges.length; ++i) {\n let startIdx = ranges[i][0];\n let endIdx = ranges[i][1];\n common.assert(startIdx >= 0 && startIdx <= endIdx, 'range start must be >= 0 and <= end');\n\n const lineStartOffset = offset - lineAndCol.colNum + 1;\n startIdx = Math.max(0, startIdx - lineStartOffset);\n endIdx = Math.min(endIdx - lineStartOffset, lineLen);\n\n indicationLine = strcpy(indicationLine, repeatStr('~', endIdx - startIdx), startIdx);\n }\n const gutterWidth = 2 + lineNumbers[1].length + 3;\n sb.append(repeatStr(' ', gutterWidth));\n indicationLine = strcpy(indicationLine, '^', lineAndCol.colNum - 1);\n sb.append(indicationLine.replace(/ +$/, '') + '\\n');\n\n // Include the next line for context if possible.\n if (lineAndCol.nextLine != null) {\n appendLine(2, lineAndCol.nextLine, ' ');\n }\n return sb.contents();\n}\n\n// --------------------------------------------------------------------\n// Exports\n// --------------------------------------------------------------------\n\nlet builtInRulesCallbacks = [];\n\n// Since Grammar.BuiltInRules is bootstrapped, most of Ohm can't directly depend it.\n// This function allows modules that do depend on the built-in rules to register a callback\n// that will be called later in the initialization process.\nexport function awaitBuiltInRules(cb) {\n builtInRulesCallbacks.push(cb);\n}\n\nexport function announceBuiltInRules(grammar) {\n builtInRulesCallbacks.forEach(cb => {\n cb(grammar);\n });\n builtInRulesCallbacks = null;\n}\n\n// Return an object with the line and column information for the given\n// offset in `str`.\nexport function getLineAndColumn(str, offset) {\n let lineNum = 1;\n let colNum = 1;\n\n let currOffset = 0;\n let lineStartOffset = 0;\n\n let nextLine = null;\n let prevLine = null;\n let prevLineStartOffset = -1;\n\n while (currOffset < offset) {\n const c = str.charAt(currOffset++);\n if (c === '\\n') {\n lineNum++;\n colNum = 1;\n prevLineStartOffset = lineStartOffset;\n lineStartOffset = currOffset;\n } else if (c !== '\\r') {\n colNum++;\n }\n }\n\n // Find the end of the target line.\n let lineEndOffset = str.indexOf('\\n', lineStartOffset);\n if (lineEndOffset === -1) {\n lineEndOffset = str.length;\n } else {\n // Get the next line.\n const nextLineEndOffset = str.indexOf('\\n', lineEndOffset + 1);\n nextLine =\n nextLineEndOffset === -1 ?\n str.slice(lineEndOffset) :\n str.slice(lineEndOffset, nextLineEndOffset);\n // Strip leading and trailing EOL char(s).\n nextLine = nextLine.replace(/^\\r?\\n/, '').replace(/\\r$/, '');\n }\n\n // Get the previous line.\n if (prevLineStartOffset >= 0) {\n // Strip trailing EOL char(s).\n prevLine = str.slice(prevLineStartOffset, lineStartOffset).replace(/\\r?\\n$/, '');\n }\n\n // Get the target line, stripping a trailing carriage return if necessary.\n const line = str.slice(lineStartOffset, lineEndOffset).replace(/\\r$/, '');\n\n return {\n offset,\n lineNum,\n colNum,\n line,\n prevLine,\n nextLine,\n toString: lineAndColumnToMessage,\n };\n}\n\n// Return a nicely-formatted string describing the line and column for the\n// given offset in `str` highlighting `ranges`.\nexport function getLineAndColumnMessage(str, offset, ...ranges) {\n return getLineAndColumn(str, offset).toString(...ranges);\n}\n\nexport const uniqueId = (() => {\n let idCounter = 0;\n return prefix => '' + prefix + idCounter++;\n})();\n","import {assert} from './common.js';\nimport * as errors from './errors.js';\nimport * as util from './util.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class Interval {\n constructor(sourceString, startIdx, endIdx) {\n this.sourceString = sourceString;\n this.startIdx = startIdx;\n this.endIdx = endIdx;\n }\n\n get contents() {\n if (this._contents === undefined) {\n this._contents = this.sourceString.slice(this.startIdx, this.endIdx);\n }\n return this._contents;\n }\n\n get length() {\n return this.endIdx - this.startIdx;\n }\n\n coverageWith(...intervals) {\n return Interval.coverage(...intervals, this);\n }\n\n collapsedLeft() {\n return new Interval(this.sourceString, this.startIdx, this.startIdx);\n }\n\n collapsedRight() {\n return new Interval(this.sourceString, this.endIdx, this.endIdx);\n }\n\n getLineAndColumn() {\n return util.getLineAndColumn(this.sourceString, this.startIdx);\n }\n\n getLineAndColumnMessage() {\n const range = [this.startIdx, this.endIdx];\n return util.getLineAndColumnMessage(this.sourceString, this.startIdx, range);\n }\n\n // Returns an array of 0, 1, or 2 intervals that represents the result of the\n // interval difference operation.\n minus(that) {\n if (this.sourceString !== that.sourceString) {\n throw errors.intervalSourcesDontMatch();\n } else if (this.startIdx === that.startIdx && this.endIdx === that.endIdx) {\n // `this` and `that` are the same interval!\n return [];\n } else if (this.startIdx < that.startIdx && that.endIdx < this.endIdx) {\n // `that` splits `this` into two intervals\n return [\n new Interval(this.sourceString, this.startIdx, that.startIdx),\n new Interval(this.sourceString, that.endIdx, this.endIdx),\n ];\n } else if (this.startIdx < that.endIdx && that.endIdx < this.endIdx) {\n // `that` contains a prefix of `this`\n return [new Interval(this.sourceString, that.endIdx, this.endIdx)];\n } else if (this.startIdx < that.startIdx && that.startIdx < this.endIdx) {\n // `that` contains a suffix of `this`\n return [new Interval(this.sourceString, this.startIdx, that.startIdx)];\n } else {\n // `that` and `this` do not overlap\n return [this];\n }\n }\n\n // Returns a new Interval that has the same extent as this one, but which is relative\n // to `that`, an Interval that fully covers this one.\n relativeTo(that) {\n if (this.sourceString !== that.sourceString) {\n throw errors.intervalSourcesDontMatch();\n }\n assert(\n this.startIdx >= that.startIdx && this.endIdx <= that.endIdx,\n 'other interval does not cover this one',\n );\n return new Interval(\n this.sourceString,\n this.startIdx - that.startIdx,\n this.endIdx - that.startIdx,\n );\n }\n\n // Returns a new Interval which contains the same contents as this one,\n // but with whitespace trimmed from both ends.\n trimmed() {\n const {contents} = this;\n const startIdx = this.startIdx + contents.match(/^\\s*/)[0].length;\n const endIdx = this.endIdx - contents.match(/\\s*$/)[0].length;\n return new Interval(this.sourceString, startIdx, endIdx);\n }\n\n subInterval(offset, len) {\n const newStartIdx = this.startIdx + offset;\n return new Interval(this.sourceString, newStartIdx, newStartIdx + len);\n }\n}\n\nInterval.coverage = function(firstInterval, ...intervals) {\n let {startIdx, endIdx} = firstInterval;\n for (const interval of intervals) {\n if (interval.sourceString !== firstInterval.sourceString) {\n throw errors.intervalSourcesDontMatch();\n } else {\n startIdx = Math.min(startIdx, interval.startIdx);\n endIdx = Math.max(endIdx, interval.endIdx);\n }\n }\n return new Interval(firstInterval.sourceString, startIdx, endIdx);\n};\n","import {Interval} from './Interval.js';\n\nconst MAX_CHAR_CODE = 0xffff;\n\nexport class InputStream {\n constructor(source) {\n this.source = source;\n this.pos = 0;\n this.examinedLength = 0;\n }\n\n atEnd() {\n const ans = this.pos >= this.source.length;\n this.examinedLength = Math.max(this.examinedLength, this.pos + 1);\n return ans;\n }\n\n next() {\n const ans = this.source[this.pos++];\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return ans;\n }\n\n nextCharCode() {\n const nextChar = this.next();\n return nextChar && nextChar.charCodeAt(0);\n }\n\n nextCodePoint() {\n const cp = this.source.slice(this.pos++).codePointAt(0);\n // If the code point is beyond plane 0, it takes up two characters.\n if (cp > MAX_CHAR_CODE) {\n this.pos += 1;\n }\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return cp;\n }\n\n matchString(s, optIgnoreCase) {\n let idx;\n if (optIgnoreCase) {\n /*\n Case-insensitive comparison is a tricky business. Some notable gotchas include the\n \"Turkish I\" problem (http://www.i18nguy.com/unicode/turkish-i18n.html) and the fact\n that the German Esszet (ß) turns into \"SS\" in upper case.\n\n This is intended to be a locale-invariant comparison, which means it may not obey\n locale-specific expectations (e.g. \"i\" => \"İ\").\n */\n for (idx = 0; idx < s.length; idx++) {\n const actual = this.next();\n const expected = s[idx];\n if (actual == null || actual.toUpperCase() !== expected.toUpperCase()) {\n return false;\n }\n }\n return true;\n }\n // Default is case-sensitive comparison.\n for (idx = 0; idx < s.length; idx++) {\n if (this.next() !== s[idx]) {\n return false;\n }\n }\n return true;\n }\n\n sourceSlice(startIdx, endIdx) {\n return this.source.slice(startIdx, endIdx);\n }\n\n interval(startIdx, optEndIdx) {\n return new Interval(this.source, startIdx, optEndIdx ? optEndIdx : this.pos);\n }\n}\n","import * as common from './common.js';\nimport * as util from './util.js';\nimport {Interval} from './Interval.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class MatchResult {\n constructor(\n matcher,\n input,\n startExpr,\n cst,\n cstOffset,\n rightmostFailurePosition,\n optRecordedFailures,\n ) {\n this.matcher = matcher;\n this.input = input;\n this.startExpr = startExpr;\n this._cst = cst;\n this._cstOffset = cstOffset;\n this._rightmostFailurePosition = rightmostFailurePosition;\n this._rightmostFailures = optRecordedFailures;\n\n if (this.failed()) {\n /* eslint-disable no-invalid-this */\n common.defineLazyProperty(this, 'message', function() {\n const detail = 'Expected ' + this.getExpectedText();\n return (\n util.getLineAndColumnMessage(this.input, this.getRightmostFailurePosition()) + detail\n );\n });\n common.defineLazyProperty(this, 'shortMessage', function() {\n const detail = 'expected ' + this.getExpectedText();\n const errorInfo = util.getLineAndColumn(\n this.input,\n this.getRightmostFailurePosition(),\n );\n return 'Line ' + errorInfo.lineNum + ', col ' + errorInfo.colNum + ': ' + detail;\n });\n /* eslint-enable no-invalid-this */\n }\n }\n\n succeeded() {\n return !!this._cst;\n }\n\n failed() {\n return !this.succeeded();\n }\n\n getRightmostFailurePosition() {\n return this._rightmostFailurePosition;\n }\n\n getRightmostFailures() {\n if (!this._rightmostFailures) {\n this.matcher.setInput(this.input);\n const matchResultWithFailures = this.matcher._match(this.startExpr, {\n tracing: false,\n positionToRecordFailures: this.getRightmostFailurePosition(),\n });\n this._rightmostFailures = matchResultWithFailures.getRightmostFailures();\n }\n return this._rightmostFailures;\n }\n\n toString() {\n return this.succeeded() ?\n '[match succeeded]' :\n '[match failed at position ' + this.getRightmostFailurePosition() + ']';\n }\n\n // Return a string summarizing the expected contents of the input stream when\n // the match failure occurred.\n getExpectedText() {\n if (this.succeeded()) {\n throw new Error('cannot get expected text of a successful MatchResult');\n }\n\n const sb = new common.StringBuffer();\n let failures = this.getRightmostFailures();\n\n // Filter out the fluffy failures to make the default error messages more useful\n failures = failures.filter(failure => !failure.isFluffy());\n\n for (let idx = 0; idx < failures.length; idx++) {\n if (idx > 0) {\n if (idx === failures.length - 1) {\n sb.append(failures.length > 2 ? ', or ' : ' or ');\n } else {\n sb.append(', ');\n }\n }\n sb.append(failures[idx].toString());\n }\n return sb.contents();\n }\n\n getInterval() {\n const pos = this.getRightmostFailurePosition();\n return new Interval(this.input, pos, pos);\n }\n}\n","export class PosInfo {\n constructor() {\n this.applicationMemoKeyStack = []; // active applications at this position\n this.memo = {};\n this.maxExaminedLength = 0;\n this.maxRightmostFailureOffset = -1;\n this.currentLeftRecursion = undefined;\n }\n\n isActive(application) {\n return this.applicationMemoKeyStack.indexOf(application.toMemoKey()) >= 0;\n }\n\n enter(application) {\n this.applicationMemoKeyStack.push(application.toMemoKey());\n }\n\n exit() {\n this.applicationMemoKeyStack.pop();\n }\n\n startLeftRecursion(headApplication, memoRec) {\n memoRec.isLeftRecursion = true;\n memoRec.headApplication = headApplication;\n memoRec.nextLeftRecursion = this.currentLeftRecursion;\n this.currentLeftRecursion = memoRec;\n\n const {applicationMemoKeyStack} = this;\n const indexOfFirstInvolvedRule =\n applicationMemoKeyStack.indexOf(headApplication.toMemoKey()) + 1;\n const involvedApplicationMemoKeys = applicationMemoKeyStack.slice(\n indexOfFirstInvolvedRule,\n );\n\n memoRec.isInvolved = function(applicationMemoKey) {\n return involvedApplicationMemoKeys.indexOf(applicationMemoKey) >= 0;\n };\n\n memoRec.updateInvolvedApplicationMemoKeys = function() {\n for (let idx = indexOfFirstInvolvedRule; idx < applicationMemoKeyStack.length; idx++) {\n const applicationMemoKey = applicationMemoKeyStack[idx];\n if (!this.isInvolved(applicationMemoKey)) {\n involvedApplicationMemoKeys.push(applicationMemoKey);\n }\n }\n };\n }\n\n endLeftRecursion() {\n this.currentLeftRecursion = this.currentLeftRecursion.nextLeftRecursion;\n }\n\n // Note: this method doesn't get called for the \"head\" of a left recursion -- for LR heads,\n // the memoized result (which starts out being a failure) is always used.\n shouldUseMemoizedResult(memoRec) {\n if (!memoRec.isLeftRecursion) {\n return true;\n }\n const {applicationMemoKeyStack} = this;\n for (let idx = 0; idx < applicationMemoKeyStack.length; idx++) {\n const applicationMemoKey = applicationMemoKeyStack[idx];\n if (memoRec.isInvolved(applicationMemoKey)) {\n return false;\n }\n }\n return true;\n }\n\n memoize(memoKey, memoRec) {\n this.memo[memoKey] = memoRec;\n this.maxExaminedLength = Math.max(this.maxExaminedLength, memoRec.examinedLength);\n this.maxRightmostFailureOffset = Math.max(\n this.maxRightmostFailureOffset,\n memoRec.rightmostFailureOffset,\n );\n return memoRec;\n }\n\n clearObsoleteEntries(pos, invalidatedIdx) {\n if (pos + this.maxExaminedLength <= invalidatedIdx) {\n // Optimization: none of the rule applications that were memoized here examined the\n // interval of the input that changed, so nothing has to be invalidated.\n return;\n }\n\n const {memo} = this;\n this.maxExaminedLength = 0;\n this.maxRightmostFailureOffset = -1;\n Object.keys(memo).forEach(k => {\n const memoRec = memo[k];\n if (pos + memoRec.examinedLength > invalidatedIdx) {\n delete memo[k];\n } else {\n this.maxExaminedLength = Math.max(this.maxExaminedLength, memoRec.examinedLength);\n this.maxRightmostFailureOffset = Math.max(\n this.maxRightmostFailureOffset,\n memoRec.rightmostFailureOffset,\n );\n }\n });\n }\n}\n","import {Interval} from './Interval.js';\nimport * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n// Unicode characters that are used in the `toString` output.\nconst BALLOT_X = '\\u2717';\nconst CHECK_MARK = '\\u2713';\nconst DOT_OPERATOR = '\\u22C5';\nconst RIGHTWARDS_DOUBLE_ARROW = '\\u21D2';\nconst SYMBOL_FOR_HORIZONTAL_TABULATION = '\\u2409';\nconst SYMBOL_FOR_LINE_FEED = '\\u240A';\nconst SYMBOL_FOR_CARRIAGE_RETURN = '\\u240D';\n\nconst Flags = {\n succeeded: 1 << 0,\n isRootNode: 1 << 1,\n isImplicitSpaces: 1 << 2,\n isMemoized: 1 << 3,\n isHeadOfLeftRecursion: 1 << 4,\n terminatesLR: 1 << 5,\n};\n\nfunction spaces(n) {\n return common.repeat(' ', n).join('');\n}\n\n// Return a string representation of a portion of `input` at offset `pos`.\n// The result will contain exactly `len` characters.\nfunction getInputExcerpt(input, pos, len) {\n const excerpt = asEscapedString(input.slice(pos, pos + len));\n\n // Pad the output if necessary.\n if (excerpt.length < len) {\n return excerpt + common.repeat(' ', len - excerpt.length).join('');\n }\n return excerpt;\n}\n\nfunction asEscapedString(obj) {\n if (typeof obj === 'string') {\n // Replace non-printable characters with visible symbols.\n return obj\n .replace(/ /g, DOT_OPERATOR)\n .replace(/\\t/g, SYMBOL_FOR_HORIZONTAL_TABULATION)\n .replace(/\\n/g, SYMBOL_FOR_LINE_FEED)\n .replace(/\\r/g, SYMBOL_FOR_CARRIAGE_RETURN);\n }\n return String(obj);\n}\n\n// ----------------- Trace -----------------\n\nexport class Trace {\n constructor(input, pos1, pos2, expr, succeeded, bindings, optChildren) {\n this.input = input;\n this.pos = this.pos1 = pos1;\n this.pos2 = pos2;\n this.source = new Interval(input, pos1, pos2);\n this.expr = expr;\n this.bindings = bindings;\n this.children = optChildren || [];\n this.terminatingLREntry = null;\n\n this._flags = succeeded ? Flags.succeeded : 0;\n }\n\n get displayString() {\n return this.expr.toDisplayString();\n }\n\n clone() {\n return this.cloneWithExpr(this.expr);\n }\n\n cloneWithExpr(expr) {\n const ans = new Trace(\n this.input,\n this.pos,\n this.pos2,\n expr,\n this.succeeded,\n this.bindings,\n this.children,\n );\n\n ans.isHeadOfLeftRecursion = this.isHeadOfLeftRecursion;\n ans.isImplicitSpaces = this.isImplicitSpaces;\n ans.isMemoized = this.isMemoized;\n ans.isRootNode = this.isRootNode;\n ans.terminatesLR = this.terminatesLR;\n ans.terminatingLREntry = this.terminatingLREntry;\n return ans;\n }\n\n // Record the trace information for the terminating condition of the LR loop.\n recordLRTermination(ruleBodyTrace, value) {\n this.terminatingLREntry = new Trace(\n this.input,\n this.pos,\n this.pos2,\n this.expr,\n false,\n [value],\n [ruleBodyTrace],\n );\n this.terminatingLREntry.terminatesLR = true;\n }\n\n // Recursively traverse this trace node and all its descendents, calling a visitor function\n // for each node that is visited. If `vistorObjOrFn` is an object, then its 'enter' property\n // is a function to call before visiting the children of a node, and its 'exit' property is\n // a function to call afterwards. If `visitorObjOrFn` is a function, it represents the 'enter'\n // function.\n //\n // The functions are called with three arguments: the Trace node, its parent Trace, and a number\n // representing the depth of the node in the tree. (The root node has depth 0.) `optThisArg`, if\n // specified, is the value to use for `this` when executing the visitor functions.\n walk(visitorObjOrFn, optThisArg) {\n let visitor = visitorObjOrFn;\n if (typeof visitor === 'function') {\n visitor = {enter: visitor};\n }\n\n function _walk(node, parent, depth) {\n let recurse = true;\n if (visitor.enter) {\n if (visitor.enter.call(optThisArg, node, parent, depth) === Trace.prototype.SKIP) {\n recurse = false;\n }\n }\n if (recurse) {\n node.children.forEach(child => {\n _walk(child, node, depth + 1);\n });\n if (visitor.exit) {\n visitor.exit.call(optThisArg, node, parent, depth);\n }\n }\n }\n if (this.isRootNode) {\n // Don't visit the root node itself, only its children.\n this.children.forEach(c => {\n _walk(c, null, 0);\n });\n } else {\n _walk(this, null, 0);\n }\n }\n\n // Return a string representation of the trace.\n // Sample:\n // 12⋅+⋅2⋅*⋅3 ✓ exp ⇒ \"12\"\n // 12⋅+⋅2⋅*⋅3 ✓ addExp (LR) ⇒ \"12\"\n // 12⋅+⋅2⋅*⋅3 ✗ addExp_plus\n toString() {\n const sb = new common.StringBuffer();\n this.walk((node, parent, depth) => {\n if (!node) {\n return this.SKIP;\n }\n const ctorName = node.expr.constructor.name;\n // Don't print anything for Alt nodes.\n if (ctorName === 'Alt') {\n return; // eslint-disable-line consistent-return\n }\n sb.append(getInputExcerpt(node.input, node.pos, 10) + spaces(depth * 2 + 1));\n sb.append((node.succeeded ? CHECK_MARK : BALLOT_X) + ' ' + node.displayString);\n if (node.isHeadOfLeftRecursion) {\n sb.append(' (LR)');\n }\n if (node.succeeded) {\n const contents = asEscapedString(node.source.contents);\n sb.append(' ' + RIGHTWARDS_DOUBLE_ARROW + ' ');\n sb.append(typeof contents === 'string' ? '\"' + contents + '\"' : contents);\n }\n sb.append('\\n');\n });\n return sb.contents();\n }\n}\n\n// A value that can be returned from visitor functions to indicate that a\n// node should not be recursed into.\nTrace.prototype.SKIP = {};\n\n// For convenience, create a getter and setter for the boolean flags in `Flags`.\nObject.keys(Flags).forEach(name => {\n const mask = Flags[name];\n Object.defineProperty(Trace.prototype, name, {\n get() {\n return (this._flags & mask) !== 0;\n },\n set(val) {\n if (val) {\n this._flags |= mask;\n } else {\n this._flags &= ~mask;\n }\n },\n });\n});\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Return true if we should skip spaces preceding this expression in a syntactic context.\n*/\npexprs.PExpr.prototype.allowsSkippingPrecedingSpace = abstract('allowsSkippingPrecedingSpace');\n\n/*\n Generally, these are all first-order expressions and (with the exception of Apply)\n directly read from the input stream.\n*/\npexprs.any.allowsSkippingPrecedingSpace =\n pexprs.end.allowsSkippingPrecedingSpace =\n pexprs.Apply.prototype.allowsSkippingPrecedingSpace =\n pexprs.Terminal.prototype.allowsSkippingPrecedingSpace =\n pexprs.Range.prototype.allowsSkippingPrecedingSpace =\n pexprs.UnicodeChar.prototype.allowsSkippingPrecedingSpace =\n function() {\n return true;\n };\n\n/*\n Higher-order expressions that don't directly consume input.\n*/\npexprs.Alt.prototype.allowsSkippingPrecedingSpace =\n pexprs.Iter.prototype.allowsSkippingPrecedingSpace =\n pexprs.Lex.prototype.allowsSkippingPrecedingSpace =\n pexprs.Lookahead.prototype.allowsSkippingPrecedingSpace =\n pexprs.Not.prototype.allowsSkippingPrecedingSpace =\n pexprs.Param.prototype.allowsSkippingPrecedingSpace =\n pexprs.Seq.prototype.allowsSkippingPrecedingSpace =\n function() {\n return false;\n };\n","import {abstract, isSyntactic} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs-main.js';\nimport * as util from './util.js';\n\nlet BuiltInRules;\n\nutil.awaitBuiltInRules(g => {\n BuiltInRules = g;\n});\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\nlet lexifyCount;\n\npexprs.PExpr.prototype.assertAllApplicationsAreValid = function(ruleName, grammar) {\n lexifyCount = 0;\n this._assertAllApplicationsAreValid(ruleName, grammar);\n};\n\npexprs.PExpr.prototype._assertAllApplicationsAreValid = abstract(\n '_assertAllApplicationsAreValid',\n);\n\npexprs.any._assertAllApplicationsAreValid =\n pexprs.end._assertAllApplicationsAreValid =\n pexprs.Terminal.prototype._assertAllApplicationsAreValid =\n pexprs.Range.prototype._assertAllApplicationsAreValid =\n pexprs.Param.prototype._assertAllApplicationsAreValid =\n pexprs.UnicodeChar.prototype._assertAllApplicationsAreValid =\n function(ruleName, grammar) {\n // no-op\n };\n\npexprs.Lex.prototype._assertAllApplicationsAreValid = function(ruleName, grammar) {\n lexifyCount++;\n this.expr._assertAllApplicationsAreValid(ruleName, grammar);\n lexifyCount--;\n};\n\npexprs.Alt.prototype._assertAllApplicationsAreValid = function(ruleName, grammar) {\n for (let idx = 0; idx < this.terms.length; idx++) {\n this.terms[idx]._assertAllApplicationsAreValid(ruleName, grammar);\n }\n};\n\npexprs.Seq.prototype._assertAllApplicationsAreValid = function(ruleName, grammar) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n this.factors[idx]._assertAllApplicationsAreValid(ruleName, grammar);\n }\n};\n\npexprs.Iter.prototype._assertAllApplicationsAreValid =\n pexprs.Not.prototype._assertAllApplicationsAreValid =\n pexprs.Lookahead.prototype._assertAllApplicationsAreValid =\n function(ruleName, grammar) {\n this.expr._assertAllApplicationsAreValid(ruleName, grammar);\n };\n\npexprs.Apply.prototype._assertAllApplicationsAreValid = function(\n ruleName,\n grammar,\n skipSyntacticCheck = false,\n) {\n const ruleInfo = grammar.rules[this.ruleName];\n const isContextSyntactic = isSyntactic(ruleName) && lexifyCount === 0;\n\n // Make sure that the rule exists...\n if (!ruleInfo) {\n throw errors.undeclaredRule(this.ruleName, grammar.name, this.source);\n }\n\n // ...and that this application is allowed\n if (!skipSyntacticCheck && isSyntactic(this.ruleName) && !isContextSyntactic) {\n throw errors.applicationOfSyntacticRuleFromLexicalContext(this.ruleName, this);\n }\n\n // ...and that this application has the correct number of arguments.\n const actual = this.args.length;\n const expected = ruleInfo.formals.length;\n if (actual !== expected) {\n throw errors.wrongNumberOfArguments(this.ruleName, expected, actual, this.source);\n }\n\n const isBuiltInApplySyntactic =\n BuiltInRules && ruleInfo === BuiltInRules.rules.applySyntactic;\n const isBuiltInCaseInsensitive =\n BuiltInRules && ruleInfo === BuiltInRules.rules.caseInsensitive;\n\n // If it's an application of 'caseInsensitive', ensure that the argument is a Terminal.\n if (isBuiltInCaseInsensitive) {\n if (!(this.args[0] instanceof pexprs.Terminal)) {\n throw errors.incorrectArgumentType('a Terminal (e.g. \"abc\")', this.args[0]);\n }\n }\n\n if (isBuiltInApplySyntactic) {\n const arg = this.args[0];\n if (!(arg instanceof pexprs.Apply)) {\n throw errors.incorrectArgumentType('a syntactic rule application', arg);\n }\n if (!isSyntactic(arg.ruleName)) {\n throw errors.applySyntacticWithLexicalRuleApplication(arg);\n }\n if (isContextSyntactic) {\n throw errors.unnecessaryExperimentalApplySyntactic(this);\n }\n }\n\n // ...and that all of the argument expressions only have valid applications and have arity 1.\n // If `this` is an application of the built-in applySyntactic rule, then its arg is\n // allowed (and expected) to be a syntactic rule, even if we're in a lexical context.\n this.args.forEach(arg => {\n arg._assertAllApplicationsAreValid(ruleName, grammar, isBuiltInApplySyntactic);\n if (arg.getArity() !== 1) {\n throw errors.invalidParameter(this.ruleName, arg);\n }\n });\n};\n","import {abstract} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.assertChoicesHaveUniformArity = abstract(\n 'assertChoicesHaveUniformArity',\n);\n\npexprs.any.assertChoicesHaveUniformArity =\n pexprs.end.assertChoicesHaveUniformArity =\n pexprs.Terminal.prototype.assertChoicesHaveUniformArity =\n pexprs.Range.prototype.assertChoicesHaveUniformArity =\n pexprs.Param.prototype.assertChoicesHaveUniformArity =\n pexprs.Lex.prototype.assertChoicesHaveUniformArity =\n pexprs.UnicodeChar.prototype.assertChoicesHaveUniformArity =\n function(ruleName) {\n // no-op\n };\n\npexprs.Alt.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n if (this.terms.length === 0) {\n return;\n }\n const arity = this.terms[0].getArity();\n for (let idx = 0; idx < this.terms.length; idx++) {\n const term = this.terms[idx];\n term.assertChoicesHaveUniformArity();\n const otherArity = term.getArity();\n if (arity !== otherArity) {\n throw errors.inconsistentArity(ruleName, arity, otherArity, term);\n }\n }\n};\n\npexprs.Extend.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n // Extend is a special case of Alt that's guaranteed to have exactly two\n // cases: [extensions, origBody].\n const actualArity = this.terms[0].getArity();\n const expectedArity = this.terms[1].getArity();\n if (actualArity !== expectedArity) {\n throw errors.inconsistentArity(ruleName, expectedArity, actualArity, this.terms[0]);\n }\n};\n\npexprs.Seq.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n this.factors[idx].assertChoicesHaveUniformArity(ruleName);\n }\n};\n\npexprs.Iter.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n this.expr.assertChoicesHaveUniformArity(ruleName);\n};\n\npexprs.Not.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n // no-op (not required b/c the nested expr doesn't show up in the CST)\n};\n\npexprs.Lookahead.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n this.expr.assertChoicesHaveUniformArity(ruleName);\n};\n\npexprs.Apply.prototype.assertChoicesHaveUniformArity = function(ruleName) {\n // The arities of the parameter expressions is required to be 1 by\n // `assertAllApplicationsAreValid()`.\n};\n","import {abstract} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.assertIteratedExprsAreNotNullable = abstract(\n 'assertIteratedExprsAreNotNullable',\n);\n\npexprs.any.assertIteratedExprsAreNotNullable =\n pexprs.end.assertIteratedExprsAreNotNullable =\n pexprs.Terminal.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Range.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Param.prototype.assertIteratedExprsAreNotNullable =\n pexprs.UnicodeChar.prototype.assertIteratedExprsAreNotNullable =\n function(grammar) {\n // no-op\n };\n\npexprs.Alt.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n for (let idx = 0; idx < this.terms.length; idx++) {\n this.terms[idx].assertIteratedExprsAreNotNullable(grammar);\n }\n};\n\npexprs.Seq.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n this.factors[idx].assertIteratedExprsAreNotNullable(grammar);\n }\n};\n\npexprs.Iter.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n // Note: this is the implementation of this method for `Star` and `Plus` expressions.\n // It is overridden for `Opt` below.\n this.expr.assertIteratedExprsAreNotNullable(grammar);\n if (this.expr.isNullable(grammar)) {\n throw errors.kleeneExprHasNullableOperand(this, []);\n }\n};\n\npexprs.Opt.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Not.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Lookahead.prototype.assertIteratedExprsAreNotNullable =\n pexprs.Lex.prototype.assertIteratedExprsAreNotNullable =\n function(grammar) {\n this.expr.assertIteratedExprsAreNotNullable(grammar);\n };\n\npexprs.Apply.prototype.assertIteratedExprsAreNotNullable = function(grammar) {\n this.args.forEach(arg => {\n arg.assertIteratedExprsAreNotNullable(grammar);\n });\n};\n","import * as common from './common.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class Node {\n constructor(matchLength) {\n this.matchLength = matchLength;\n }\n\n get ctorName() {\n throw new Error('subclass responsibility');\n }\n\n numChildren() {\n return this.children ? this.children.length : 0;\n }\n\n childAt(idx) {\n if (this.children) {\n return this.children[idx];\n }\n }\n\n indexOfChild(arg) {\n return this.children.indexOf(arg);\n }\n\n hasChildren() {\n return this.numChildren() > 0;\n }\n\n hasNoChildren() {\n return !this.hasChildren();\n }\n\n onlyChild() {\n if (this.numChildren() !== 1) {\n throw new Error(\n 'cannot get only child of a node of type ' +\n this.ctorName +\n ' (it has ' +\n this.numChildren() +\n ' children)',\n );\n } else {\n return this.firstChild();\n }\n }\n\n firstChild() {\n if (this.hasNoChildren()) {\n throw new Error(\n 'cannot get first child of a ' + this.ctorName + ' node, which has no children',\n );\n } else {\n return this.childAt(0);\n }\n }\n\n lastChild() {\n if (this.hasNoChildren()) {\n throw new Error(\n 'cannot get last child of a ' + this.ctorName + ' node, which has no children',\n );\n } else {\n return this.childAt(this.numChildren() - 1);\n }\n }\n\n childBefore(child) {\n const childIdx = this.indexOfChild(child);\n if (childIdx < 0) {\n throw new Error('Node.childBefore() called w/ an argument that is not a child');\n } else if (childIdx === 0) {\n throw new Error('cannot get child before first child');\n } else {\n return this.childAt(childIdx - 1);\n }\n }\n\n childAfter(child) {\n const childIdx = this.indexOfChild(child);\n if (childIdx < 0) {\n throw new Error('Node.childAfter() called w/ an argument that is not a child');\n } else if (childIdx === this.numChildren() - 1) {\n throw new Error('cannot get child after last child');\n } else {\n return this.childAt(childIdx + 1);\n }\n }\n\n isTerminal() {\n return false;\n }\n\n isNonterminal() {\n return false;\n }\n\n isIteration() {\n return false;\n }\n\n isOptional() {\n return false;\n }\n}\n\n// Terminals\n\nexport class TerminalNode extends Node {\n get ctorName() {\n return '_terminal';\n }\n\n isTerminal() {\n return true;\n }\n\n get primitiveValue() {\n throw new Error('The `primitiveValue` property was removed in Ohm v17.');\n }\n}\n\n// Nonterminals\n\nexport class NonterminalNode extends Node {\n constructor(ruleName, children, childOffsets, matchLength) {\n super(matchLength);\n this.ruleName = ruleName;\n this.children = children;\n this.childOffsets = childOffsets;\n }\n\n get ctorName() {\n return this.ruleName;\n }\n\n isNonterminal() {\n return true;\n }\n\n isLexical() {\n return common.isLexical(this.ctorName);\n }\n\n isSyntactic() {\n return common.isSyntactic(this.ctorName);\n }\n}\n\n// Iterations\n\nexport class IterationNode extends Node {\n constructor(children, childOffsets, matchLength, isOptional) {\n super(matchLength);\n this.children = children;\n this.childOffsets = childOffsets;\n this.optional = isOptional;\n }\n\n get ctorName() {\n return '_iter';\n }\n\n isIteration() {\n return true;\n }\n\n isOptional() {\n return this.optional;\n }\n}\n","import {Trace} from './Trace.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport {IterationNode, NonterminalNode, TerminalNode} from './nodes.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Evaluate the expression and return `true` if it succeeds, `false` otherwise. This method should\n only be called directly by `State.prototype.eval(expr)`, which also updates the data structures\n that are used for tracing. (Making those updates in a method of `State` enables the trace-specific\n data structures to be \"secrets\" of that class, which is good for modularity.)\n\n The contract of this method is as follows:\n * When the return value is `true`,\n - the state object will have `expr.getArity()` more bindings than it did before the call.\n * When the return value is `false`,\n - the state object may have more bindings than it did before the call, and\n - its input stream's position may be anywhere.\n\n Note that `State.prototype.eval(expr)`, unlike this method, guarantees that neither the state\n object's bindings nor its input stream's position will change if the expression fails to match.\n*/\npexprs.PExpr.prototype.eval = common.abstract('eval'); // function(state) { ... }\n\npexprs.any.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const cp = inputStream.nextCodePoint();\n if (cp !== undefined) {\n state.pushBinding(new TerminalNode(String.fromCodePoint(cp).length), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n\npexprs.end.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n if (inputStream.atEnd()) {\n state.pushBinding(new TerminalNode(0), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n\npexprs.Terminal.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n if (!inputStream.matchString(this.obj)) {\n state.processFailure(origPos, this);\n return false;\n } else {\n state.pushBinding(new TerminalNode(this.obj.length), origPos);\n return true;\n }\n};\n\npexprs.Range.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n\n // A range can operate in one of two modes: matching a single, 16-bit _code unit_,\n // or matching a _code point_. (Code points over 0xFFFF take up two 16-bit code units.)\n const cp = this.matchCodePoint ? inputStream.nextCodePoint() : inputStream.nextCharCode();\n\n // Always compare by code point value to get the correct result in all scenarios.\n // Note that for strings of length 1, codePointAt(0) and charPointAt(0) are equivalent.\n if (cp !== undefined && this.from.codePointAt(0) <= cp && cp <= this.to.codePointAt(0)) {\n state.pushBinding(new TerminalNode(String.fromCodePoint(cp).length), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n\npexprs.Param.prototype.eval = function(state) {\n return state.eval(state.currentApplication().args[this.index]);\n};\n\npexprs.Lex.prototype.eval = function(state) {\n state.enterLexifiedContext();\n const ans = state.eval(this.expr);\n state.exitLexifiedContext();\n return ans;\n};\n\npexprs.Alt.prototype.eval = function(state) {\n for (let idx = 0; idx < this.terms.length; idx++) {\n if (state.eval(this.terms[idx])) {\n return true;\n }\n }\n return false;\n};\n\npexprs.Seq.prototype.eval = function(state) {\n for (let idx = 0; idx < this.factors.length; idx++) {\n const factor = this.factors[idx];\n if (!state.eval(factor)) {\n return false;\n }\n }\n return true;\n};\n\npexprs.Iter.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const arity = this.getArity();\n const cols = [];\n const colOffsets = [];\n while (cols.length < arity) {\n cols.push([]);\n colOffsets.push([]);\n }\n\n let numMatches = 0;\n let prevPos = origPos;\n let idx;\n while (numMatches < this.maxNumMatches && state.eval(this.expr)) {\n if (inputStream.pos === prevPos) {\n throw errors.kleeneExprHasNullableOperand(this, state._applicationStack);\n }\n prevPos = inputStream.pos;\n numMatches++;\n const row = state._bindings.splice(state._bindings.length - arity, arity);\n const rowOffsets = state._bindingOffsets.splice(\n state._bindingOffsets.length - arity,\n arity,\n );\n for (idx = 0; idx < row.length; idx++) {\n cols[idx].push(row[idx]);\n colOffsets[idx].push(rowOffsets[idx]);\n }\n }\n if (numMatches < this.minNumMatches) {\n return false;\n }\n let offset = state.posToOffset(origPos);\n let matchLength = 0;\n if (numMatches > 0) {\n const lastCol = cols[arity - 1];\n const lastColOffsets = colOffsets[arity - 1];\n\n const endOffset =\n lastColOffsets[lastColOffsets.length - 1] + lastCol[lastCol.length - 1].matchLength;\n offset = colOffsets[0][0];\n matchLength = endOffset - offset;\n }\n const isOptional = this instanceof pexprs.Opt;\n for (idx = 0; idx < cols.length; idx++) {\n state._bindings.push(\n new IterationNode(cols[idx], colOffsets[idx], matchLength, isOptional),\n );\n state._bindingOffsets.push(offset);\n }\n return true;\n};\n\npexprs.Not.prototype.eval = function(state) {\n /*\n TODO:\n - Right now we're just throwing away all of the failures that happen inside a `not`, and\n recording `this` as a failed expression.\n - Double negation should be equivalent to lookahead, but that's not the case right now wrt\n failures. E.g., ~~'foo' produces a failure for ~~'foo', but maybe it should produce\n a failure for 'foo' instead.\n */\n\n const {inputStream} = state;\n const origPos = inputStream.pos;\n state.pushFailuresInfo();\n\n const ans = state.eval(this.expr);\n\n state.popFailuresInfo();\n if (ans) {\n state.processFailure(origPos, this);\n return false;\n }\n\n inputStream.pos = origPos;\n return true;\n};\n\npexprs.Lookahead.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n if (state.eval(this.expr)) {\n inputStream.pos = origPos;\n return true;\n } else {\n return false;\n }\n};\n\npexprs.Apply.prototype.eval = function(state) {\n const caller = state.currentApplication();\n const actuals = caller ? caller.args : [];\n const app = this.substituteParams(actuals);\n\n const posInfo = state.getCurrentPosInfo();\n if (posInfo.isActive(app)) {\n // This rule is already active at this position, i.e., it is left-recursive.\n return app.handleCycle(state);\n }\n\n const memoKey = app.toMemoKey();\n const memoRec = posInfo.memo[memoKey];\n\n if (memoRec && posInfo.shouldUseMemoizedResult(memoRec)) {\n if (state.hasNecessaryInfo(memoRec)) {\n return state.useMemoizedResult(state.inputStream.pos, memoRec);\n }\n delete posInfo.memo[memoKey];\n }\n return app.reallyEval(state);\n};\n\npexprs.Apply.prototype.handleCycle = function(state) {\n const posInfo = state.getCurrentPosInfo();\n const {currentLeftRecursion} = posInfo;\n const memoKey = this.toMemoKey();\n let memoRec = posInfo.memo[memoKey];\n\n if (currentLeftRecursion && currentLeftRecursion.headApplication.toMemoKey() === memoKey) {\n // We already know about this left recursion, but it's possible there are \"involved\n // applications\" that we don't already know about, so...\n memoRec.updateInvolvedApplicationMemoKeys();\n } else if (!memoRec) {\n // New left recursion detected! Memoize a failure to try to get a seed parse.\n memoRec = posInfo.memoize(memoKey, {\n matchLength: 0,\n examinedLength: 0,\n value: false,\n rightmostFailureOffset: -1,\n });\n posInfo.startLeftRecursion(this, memoRec);\n }\n return state.useMemoizedResult(state.inputStream.pos, memoRec);\n};\n\npexprs.Apply.prototype.reallyEval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const origPosInfo = state.getCurrentPosInfo();\n const ruleInfo = state.grammar.rules[this.ruleName];\n const {body} = ruleInfo;\n const {description} = ruleInfo;\n\n state.enterApplication(origPosInfo, this);\n\n if (description) {\n state.pushFailuresInfo();\n }\n\n // Reset the input stream's examinedLength property so that we can track\n // the examined length of this particular application.\n const origInputStreamExaminedLength = inputStream.examinedLength;\n inputStream.examinedLength = 0;\n\n let value = this.evalOnce(body, state);\n const currentLR = origPosInfo.currentLeftRecursion;\n const memoKey = this.toMemoKey();\n const isHeadOfLeftRecursion = currentLR && currentLR.headApplication.toMemoKey() === memoKey;\n let memoRec;\n\n if (state.doNotMemoize) {\n state.doNotMemoize = false;\n } else if (isHeadOfLeftRecursion) {\n value = this.growSeedResult(body, state, origPos, currentLR, value);\n origPosInfo.endLeftRecursion();\n memoRec = currentLR;\n memoRec.examinedLength = inputStream.examinedLength - origPos;\n memoRec.rightmostFailureOffset = state._getRightmostFailureOffset();\n origPosInfo.memoize(memoKey, memoRec); // updates origPosInfo's maxExaminedLength\n } else if (!currentLR || !currentLR.isInvolved(memoKey)) {\n // This application is not involved in left recursion, so it's ok to memoize it.\n memoRec = origPosInfo.memoize(memoKey, {\n matchLength: inputStream.pos - origPos,\n examinedLength: inputStream.examinedLength - origPos,\n value,\n failuresAtRightmostPosition: state.cloneRecordedFailures(),\n rightmostFailureOffset: state._getRightmostFailureOffset(),\n });\n }\n const succeeded = !!value;\n\n if (description) {\n state.popFailuresInfo();\n if (!succeeded) {\n state.processFailure(origPos, this);\n }\n if (memoRec) {\n memoRec.failuresAtRightmostPosition = state.cloneRecordedFailures();\n }\n }\n\n // Record trace information in the memo table, so that it is available if the memoized result\n // is used later.\n if (state.isTracing() && memoRec) {\n const entry = state.getTraceEntry(origPos, this, succeeded, succeeded ? [value] : []);\n if (isHeadOfLeftRecursion) {\n common.assert(entry.terminatingLREntry != null || !succeeded);\n entry.isHeadOfLeftRecursion = true;\n }\n memoRec.traceEntry = entry;\n }\n\n // Fix the input stream's examinedLength -- it should be the maximum examined length\n // across all applications, not just this one.\n inputStream.examinedLength = Math.max(\n inputStream.examinedLength,\n origInputStreamExaminedLength,\n );\n\n state.exitApplication(origPosInfo, value);\n\n return succeeded;\n};\n\npexprs.Apply.prototype.evalOnce = function(expr, state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n\n if (state.eval(expr)) {\n const arity = expr.getArity();\n const bindings = state._bindings.splice(state._bindings.length - arity, arity);\n const offsets = state._bindingOffsets.splice(state._bindingOffsets.length - arity, arity);\n const matchLength = inputStream.pos - origPos;\n return new NonterminalNode(this.ruleName, bindings, offsets, matchLength);\n } else {\n return false;\n }\n};\n\npexprs.Apply.prototype.growSeedResult = function(body, state, origPos, lrMemoRec, newValue) {\n if (!newValue) {\n return false;\n }\n\n const {inputStream} = state;\n\n while (true) {\n lrMemoRec.matchLength = inputStream.pos - origPos;\n lrMemoRec.value = newValue;\n lrMemoRec.failuresAtRightmostPosition = state.cloneRecordedFailures();\n\n if (state.isTracing()) {\n // Before evaluating the body again, add a trace node for this application to the memo entry.\n // Its only child is a copy of the trace node from `newValue`, which will always be the last\n // element in `state.trace`.\n const seedTrace = state.trace[state.trace.length - 1];\n lrMemoRec.traceEntry = new Trace(\n state.input,\n origPos,\n inputStream.pos,\n this,\n true,\n [newValue],\n [seedTrace.clone()],\n );\n }\n inputStream.pos = origPos;\n newValue = this.evalOnce(body, state);\n if (inputStream.pos - origPos <= lrMemoRec.matchLength) {\n break;\n }\n if (state.isTracing()) {\n state.trace.splice(-2, 1); // Drop the trace for the old seed.\n }\n }\n if (state.isTracing()) {\n // The last entry is for an unused result -- pop it and save it in the \"real\" entry.\n lrMemoRec.traceEntry.recordLRTermination(state.trace.pop(), newValue);\n }\n inputStream.pos = origPos + lrMemoRec.matchLength;\n return lrMemoRec.value;\n};\n\npexprs.UnicodeChar.prototype.eval = function(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const ch = inputStream.next();\n if (ch && this.pattern.test(ch)) {\n state.pushBinding(new TerminalNode(ch.length), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.getArity = abstract('getArity');\n\npexprs.any.getArity =\n pexprs.end.getArity =\n pexprs.Terminal.prototype.getArity =\n pexprs.Range.prototype.getArity =\n pexprs.Param.prototype.getArity =\n pexprs.Apply.prototype.getArity =\n pexprs.UnicodeChar.prototype.getArity =\n function() {\n return 1;\n };\n\npexprs.Alt.prototype.getArity = function() {\n // This is ok b/c all terms must have the same arity -- this property is\n // checked by the Grammar constructor.\n return this.terms.length === 0 ? 0 : this.terms[0].getArity();\n};\n\npexprs.Seq.prototype.getArity = function() {\n let arity = 0;\n for (let idx = 0; idx < this.factors.length; idx++) {\n arity += this.factors[idx].getArity();\n }\n return arity;\n};\n\npexprs.Iter.prototype.getArity = function() {\n return this.expr.getArity();\n};\n\npexprs.Not.prototype.getArity = function() {\n return 0;\n};\n\npexprs.Lookahead.prototype.getArity = pexprs.Lex.prototype.getArity = function() {\n return this.expr.getArity();\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nfunction getMetaInfo(expr, grammarInterval) {\n const metaInfo = {};\n if (expr.source && grammarInterval) {\n const adjusted = expr.source.relativeTo(grammarInterval);\n metaInfo.sourceInterval = [adjusted.startIdx, adjusted.endIdx];\n }\n return metaInfo;\n}\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.outputRecipe = abstract('outputRecipe');\n\npexprs.any.outputRecipe = function(formals, grammarInterval) {\n return ['any', getMetaInfo(this, grammarInterval)];\n};\n\npexprs.end.outputRecipe = function(formals, grammarInterval) {\n return ['end', getMetaInfo(this, grammarInterval)];\n};\n\npexprs.Terminal.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['terminal', getMetaInfo(this, grammarInterval), this.obj];\n};\n\npexprs.Range.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['range', getMetaInfo(this, grammarInterval), this.from, this.to];\n};\n\npexprs.Param.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['param', getMetaInfo(this, grammarInterval), this.index];\n};\n\npexprs.Alt.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['alt', getMetaInfo(this, grammarInterval)].concat(\n this.terms.map(term => term.outputRecipe(formals, grammarInterval)),\n );\n};\n\npexprs.Extend.prototype.outputRecipe = function(formals, grammarInterval) {\n const extension = this.terms[0]; // [extension, original]\n return extension.outputRecipe(formals, grammarInterval);\n};\n\npexprs.Splice.prototype.outputRecipe = function(formals, grammarInterval) {\n const beforeTerms = this.terms.slice(0, this.expansionPos);\n const afterTerms = this.terms.slice(this.expansionPos + 1);\n return [\n 'splice',\n getMetaInfo(this, grammarInterval),\n beforeTerms.map(term => term.outputRecipe(formals, grammarInterval)),\n afterTerms.map(term => term.outputRecipe(formals, grammarInterval)),\n ];\n};\n\npexprs.Seq.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['seq', getMetaInfo(this, grammarInterval)].concat(\n this.factors.map(factor => factor.outputRecipe(formals, grammarInterval)),\n );\n};\n\npexprs.Star.prototype.outputRecipe =\n pexprs.Plus.prototype.outputRecipe =\n pexprs.Opt.prototype.outputRecipe =\n pexprs.Not.prototype.outputRecipe =\n pexprs.Lookahead.prototype.outputRecipe =\n pexprs.Lex.prototype.outputRecipe =\n function(formals, grammarInterval) {\n return [\n this.constructor.name.toLowerCase(),\n getMetaInfo(this, grammarInterval),\n this.expr.outputRecipe(formals, grammarInterval),\n ];\n };\n\npexprs.Apply.prototype.outputRecipe = function(formals, grammarInterval) {\n return [\n 'app',\n getMetaInfo(this, grammarInterval),\n this.ruleName,\n this.args.map(arg => arg.outputRecipe(formals, grammarInterval)),\n ];\n};\n\npexprs.UnicodeChar.prototype.outputRecipe = function(formals, grammarInterval) {\n return ['unicodeChar', getMetaInfo(this, grammarInterval), this.category];\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Called at grammar creation time to rewrite a rule body, replacing each reference to a formal\n parameter with a `Param` node. Returns a PExpr -- either a new one, or the original one if\n it was modified in place.\n*/\npexprs.PExpr.prototype.introduceParams = abstract('introduceParams');\n\npexprs.any.introduceParams =\n pexprs.end.introduceParams =\n pexprs.Terminal.prototype.introduceParams =\n pexprs.Range.prototype.introduceParams =\n pexprs.Param.prototype.introduceParams =\n pexprs.UnicodeChar.prototype.introduceParams =\n function(formals) {\n return this;\n };\n\npexprs.Alt.prototype.introduceParams = function(formals) {\n this.terms.forEach((term, idx, terms) => {\n terms[idx] = term.introduceParams(formals);\n });\n return this;\n};\n\npexprs.Seq.prototype.introduceParams = function(formals) {\n this.factors.forEach((factor, idx, factors) => {\n factors[idx] = factor.introduceParams(formals);\n });\n return this;\n};\n\npexprs.Iter.prototype.introduceParams =\n pexprs.Not.prototype.introduceParams =\n pexprs.Lookahead.prototype.introduceParams =\n pexprs.Lex.prototype.introduceParams =\n function(formals) {\n this.expr = this.expr.introduceParams(formals);\n return this;\n };\n\npexprs.Apply.prototype.introduceParams = function(formals) {\n const index = formals.indexOf(this.ruleName);\n if (index >= 0) {\n if (this.args.length > 0) {\n // TODO: Should this be supported? See issue #64.\n throw new Error('Parameterized rules cannot be passed as arguments to another rule.');\n }\n return new pexprs.Param(index).withSource(this.source);\n } else {\n this.args.forEach((arg, idx, args) => {\n args[idx] = arg.introduceParams(formals);\n });\n return this;\n }\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n// Returns `true` if this parsing expression may accept without consuming any input.\npexprs.PExpr.prototype.isNullable = function(grammar) {\n return this._isNullable(grammar, Object.create(null));\n};\n\npexprs.PExpr.prototype._isNullable = abstract('_isNullable');\n\npexprs.any._isNullable =\n pexprs.Range.prototype._isNullable =\n pexprs.Param.prototype._isNullable =\n pexprs.Plus.prototype._isNullable =\n pexprs.UnicodeChar.prototype._isNullable =\n function(grammar, memo) {\n return false;\n };\n\npexprs.end._isNullable = function(grammar, memo) {\n return true;\n};\n\npexprs.Terminal.prototype._isNullable = function(grammar, memo) {\n if (typeof this.obj === 'string') {\n // This is an over-simplification: it's only correct if the input is a string. If it's an array\n // or an object, then the empty string parsing expression is not nullable.\n return this.obj === '';\n } else {\n return false;\n }\n};\n\npexprs.Alt.prototype._isNullable = function(grammar, memo) {\n return this.terms.length === 0 || this.terms.some(term => term._isNullable(grammar, memo));\n};\n\npexprs.Seq.prototype._isNullable = function(grammar, memo) {\n return this.factors.every(factor => factor._isNullable(grammar, memo));\n};\n\npexprs.Star.prototype._isNullable =\n pexprs.Opt.prototype._isNullable =\n pexprs.Not.prototype._isNullable =\n pexprs.Lookahead.prototype._isNullable =\n function(grammar, memo) {\n return true;\n };\n\npexprs.Lex.prototype._isNullable = function(grammar, memo) {\n return this.expr._isNullable(grammar, memo);\n};\n\npexprs.Apply.prototype._isNullable = function(grammar, memo) {\n const key = this.toMemoKey();\n if (!Object.prototype.hasOwnProperty.call(memo, key)) {\n const {body} = grammar.rules[this.ruleName];\n const inlined = body.substituteParams(this.args);\n memo[key] = false; // Prevent infinite recursion for recursive rules.\n memo[key] = inlined._isNullable(grammar, memo);\n }\n return memo[key];\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Returns a PExpr that results from recursively replacing every formal parameter (i.e., instance\n of `Param`) inside this PExpr with its actual value from `actuals` (an Array).\n\n The receiver must not be modified; a new PExpr must be returned if any replacement is necessary.\n*/\n// function(actuals) { ... }\npexprs.PExpr.prototype.substituteParams = abstract('substituteParams');\n\npexprs.any.substituteParams =\n pexprs.end.substituteParams =\n pexprs.Terminal.prototype.substituteParams =\n pexprs.Range.prototype.substituteParams =\n pexprs.UnicodeChar.prototype.substituteParams =\n function(actuals) {\n return this;\n };\n\npexprs.Param.prototype.substituteParams = function(actuals) {\n return actuals[this.index];\n};\n\npexprs.Alt.prototype.substituteParams = function(actuals) {\n return new pexprs.Alt(this.terms.map(term => term.substituteParams(actuals)));\n};\n\npexprs.Seq.prototype.substituteParams = function(actuals) {\n return new pexprs.Seq(this.factors.map(factor => factor.substituteParams(actuals)));\n};\n\npexprs.Iter.prototype.substituteParams =\n pexprs.Not.prototype.substituteParams =\n pexprs.Lookahead.prototype.substituteParams =\n pexprs.Lex.prototype.substituteParams =\n function(actuals) {\n return new this.constructor(this.expr.substituteParams(actuals));\n };\n\npexprs.Apply.prototype.substituteParams = function(actuals) {\n if (this.args.length === 0) {\n // Avoid making a copy of this application, as an optimization\n return this;\n } else {\n const args = this.args.map(arg => arg.substituteParams(actuals));\n return new pexprs.Apply(this.ruleName, args);\n }\n};\n","import {abstract, copyWithoutDuplicates} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nfunction isRestrictedJSIdentifier(str) {\n return /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(str);\n}\n\nfunction resolveDuplicatedNames(argumentNameList) {\n // `count` is used to record the number of times each argument name occurs in the list,\n // this is useful for checking duplicated argument name. It maps argument names to ints.\n const count = Object.create(null);\n argumentNameList.forEach(argName => {\n count[argName] = (count[argName] || 0) + 1;\n });\n\n // Append subscripts ('_1', '_2', ...) to duplicate argument names.\n Object.keys(count).forEach(dupArgName => {\n if (count[dupArgName] <= 1) {\n return;\n }\n\n // This name shows up more than once, so add subscripts.\n let subscript = 1;\n argumentNameList.forEach((argName, idx) => {\n if (argName === dupArgName) {\n argumentNameList[idx] = argName + '_' + subscript++;\n }\n });\n });\n}\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n Returns a list of strings that will be used as the default argument names for its receiver\n (a pexpr) in a semantic action. This is used exclusively by the Semantics Editor.\n\n `firstArgIndex` is the 1-based index of the first argument name that will be generated for this\n pexpr. It enables us to name arguments positionally, e.g., if the second argument is a\n non-alphanumeric terminal like \"+\", it will be named '$2'.\n\n `noDupCheck` is true if the caller of `toArgumentNameList` is not a top level caller. It enables\n us to avoid nested duplication subscripts appending, e.g., '_1_1', '_1_2', by only checking\n duplicates at the top level.\n\n Here is a more elaborate example that illustrates how this method works:\n `(a \"+\" b).toArgumentNameList(1)` evaluates to `['a', '$2', 'b']` with the following recursive\n calls:\n\n (a).toArgumentNameList(1) -> ['a'],\n (\"+\").toArgumentNameList(2) -> ['$2'],\n (b).toArgumentNameList(3) -> ['b']\n\n Notes:\n * This method must only be called on well-formed expressions, e.g., the receiver must\n not have any Alt sub-expressions with inconsistent arities.\n * e.getArity() === e.toArgumentNameList(1).length\n*/\n// function(firstArgIndex, noDupCheck) { ... }\npexprs.PExpr.prototype.toArgumentNameList = abstract('toArgumentNameList');\n\npexprs.any.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['any'];\n};\n\npexprs.end.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['end'];\n};\n\npexprs.Terminal.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n if (typeof this.obj === 'string' && /^[_a-zA-Z0-9]+$/.test(this.obj)) {\n // If this terminal is a valid suffix for a JS identifier, just prepend it with '_'\n return ['_' + this.obj];\n } else {\n // Otherwise, name it positionally.\n return ['$' + firstArgIndex];\n }\n};\n\npexprs.Range.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n let argName = this.from + '_to_' + this.to;\n // If the `argName` is not valid then try to prepend a `_`.\n if (!isRestrictedJSIdentifier(argName)) {\n argName = '_' + argName;\n }\n // If the `argName` still not valid after prepending a `_`, then name it positionally.\n if (!isRestrictedJSIdentifier(argName)) {\n argName = '$' + firstArgIndex;\n }\n return [argName];\n};\n\npexprs.Alt.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n // `termArgNameLists` is an array of arrays where each row is the\n // argument name list that corresponds to a term in this alternation.\n const termArgNameLists = this.terms.map(term =>\n term.toArgumentNameList(firstArgIndex, true),\n );\n\n const argumentNameList = [];\n const numArgs = termArgNameLists[0].length;\n for (let colIdx = 0; colIdx < numArgs; colIdx++) {\n const col = [];\n for (let rowIdx = 0; rowIdx < this.terms.length; rowIdx++) {\n col.push(termArgNameLists[rowIdx][colIdx]);\n }\n const uniqueNames = copyWithoutDuplicates(col);\n argumentNameList.push(uniqueNames.join('_or_'));\n }\n\n if (!noDupCheck) {\n resolveDuplicatedNames(argumentNameList);\n }\n return argumentNameList;\n};\n\npexprs.Seq.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n // Generate the argument name list, without worrying about duplicates.\n let argumentNameList = [];\n this.factors.forEach(factor => {\n const factorArgumentNameList = factor.toArgumentNameList(firstArgIndex, true);\n argumentNameList = argumentNameList.concat(factorArgumentNameList);\n\n // Shift the firstArgIndex to take this factor's argument names into account.\n firstArgIndex += factorArgumentNameList.length;\n });\n if (!noDupCheck) {\n resolveDuplicatedNames(argumentNameList);\n }\n return argumentNameList;\n};\n\npexprs.Iter.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n const argumentNameList = this.expr\n .toArgumentNameList(firstArgIndex, noDupCheck)\n .map(exprArgumentString =>\n exprArgumentString[exprArgumentString.length - 1] === 's' ?\n exprArgumentString + 'es' :\n exprArgumentString + 's',\n );\n if (!noDupCheck) {\n resolveDuplicatedNames(argumentNameList);\n }\n return argumentNameList;\n};\n\npexprs.Opt.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return this.expr.toArgumentNameList(firstArgIndex, noDupCheck).map(argName => {\n return 'opt' + argName[0].toUpperCase() + argName.slice(1);\n });\n};\n\npexprs.Not.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return [];\n};\n\npexprs.Lookahead.prototype.toArgumentNameList = pexprs.Lex.prototype.toArgumentNameList =\n function(firstArgIndex, noDupCheck) {\n return this.expr.toArgumentNameList(firstArgIndex, noDupCheck);\n };\n\npexprs.Apply.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return [this.ruleName];\n};\n\npexprs.UnicodeChar.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['$' + firstArgIndex];\n};\n\npexprs.Param.prototype.toArgumentNameList = function(firstArgIndex, noDupCheck) {\n return ['param' + this.index];\n};\n\n// \"Value pexprs\" (Value, Str, Arr, Obj) are going away soon, so we don't worry about them here.\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n// Returns a string representing the PExpr, for use as a UI label, etc.\npexprs.PExpr.prototype.toDisplayString = abstract('toDisplayString');\n\npexprs.Alt.prototype.toDisplayString = pexprs.Seq.prototype.toDisplayString = function() {\n if (this.source) {\n return this.source.trimmed().contents;\n }\n return '[' + this.constructor.name + ']';\n};\n\npexprs.any.toDisplayString =\n pexprs.end.toDisplayString =\n pexprs.Iter.prototype.toDisplayString =\n pexprs.Not.prototype.toDisplayString =\n pexprs.Lookahead.prototype.toDisplayString =\n pexprs.Lex.prototype.toDisplayString =\n pexprs.Terminal.prototype.toDisplayString =\n pexprs.Range.prototype.toDisplayString =\n pexprs.Param.prototype.toDisplayString =\n function() {\n return this.toString();\n };\n\npexprs.Apply.prototype.toDisplayString = function() {\n if (this.args.length > 0) {\n const ps = this.args.map(arg => arg.toDisplayString());\n return this.ruleName + '<' + ps.join(',') + '>';\n } else {\n return this.ruleName;\n }\n};\n\npexprs.UnicodeChar.prototype.toDisplayString = function() {\n return 'Unicode [' + this.category + '] character';\n};\n","// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\n/*\n `Failure`s represent expressions that weren't matched while parsing. They are used to generate\n error messages automatically. The interface of `Failure`s includes the collowing methods:\n\n - getText() : String\n - getType() : String (one of {\"description\", \"string\", \"code\"})\n - isDescription() : bool\n - isStringTerminal() : bool\n - isCode() : bool\n - isFluffy() : bool\n - makeFluffy() : void\n - subsumes(Failure) : bool\n*/\n\nfunction isValidType(type) {\n return type === 'description' || type === 'string' || type === 'code';\n}\n\nexport class Failure {\n constructor(pexpr, text, type) {\n if (!isValidType(type)) {\n throw new Error('invalid Failure type: ' + type);\n }\n this.pexpr = pexpr;\n this.text = text;\n this.type = type;\n this.fluffy = false;\n }\n\n getPExpr() {\n return this.pexpr;\n }\n\n getText() {\n return this.text;\n }\n\n getType() {\n return this.type;\n }\n\n isDescription() {\n return this.type === 'description';\n }\n\n isStringTerminal() {\n return this.type === 'string';\n }\n\n isCode() {\n return this.type === 'code';\n }\n\n isFluffy() {\n return this.fluffy;\n }\n\n makeFluffy() {\n this.fluffy = true;\n }\n\n clearFluffy() {\n this.fluffy = false;\n }\n\n subsumes(that) {\n return (\n this.getText() === that.getText() &&\n this.type === that.type &&\n (!this.isFluffy() || (this.isFluffy() && that.isFluffy()))\n );\n }\n\n toString() {\n return this.type === 'string' ? JSON.stringify(this.getText()) : this.getText();\n }\n\n clone() {\n const failure = new Failure(this.pexpr, this.text, this.type);\n if (this.isFluffy()) {\n failure.makeFluffy();\n }\n return failure;\n }\n\n toKey() {\n return this.toString() + '#' + this.type;\n }\n}\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\nimport {Failure} from './Failure.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\npexprs.PExpr.prototype.toFailure = abstract('toFailure');\n\npexprs.any.toFailure = function(grammar) {\n return new Failure(this, 'any object', 'description');\n};\n\npexprs.end.toFailure = function(grammar) {\n return new Failure(this, 'end of input', 'description');\n};\n\npexprs.Terminal.prototype.toFailure = function(grammar) {\n return new Failure(this, this.obj, 'string');\n};\n\npexprs.Range.prototype.toFailure = function(grammar) {\n // TODO: come up with something better\n return new Failure(this, JSON.stringify(this.from) + '..' + JSON.stringify(this.to), 'code');\n};\n\npexprs.Not.prototype.toFailure = function(grammar) {\n const description =\n this.expr === pexprs.any ? 'nothing' : 'not ' + this.expr.toFailure(grammar);\n return new Failure(this, description, 'description');\n};\n\npexprs.Lookahead.prototype.toFailure = function(grammar) {\n return this.expr.toFailure(grammar);\n};\n\npexprs.Apply.prototype.toFailure = function(grammar) {\n let {description} = grammar.rules[this.ruleName];\n if (!description) {\n const article = /^[aeiouAEIOU]/.test(this.ruleName) ? 'an' : 'a';\n description = article + ' ' + this.ruleName;\n }\n return new Failure(this, description, 'description');\n};\n\npexprs.UnicodeChar.prototype.toFailure = function(grammar) {\n return new Failure(this, 'a Unicode [' + this.category + '] character', 'description');\n};\n\npexprs.Alt.prototype.toFailure = function(grammar) {\n const fs = this.terms.map(t => t.toFailure(grammar));\n const description = '(' + fs.join(' or ') + ')';\n return new Failure(this, description, 'description');\n};\n\npexprs.Seq.prototype.toFailure = function(grammar) {\n const fs = this.factors.map(f => f.toFailure(grammar));\n const description = '(' + fs.join(' ') + ')';\n return new Failure(this, description, 'description');\n};\n\npexprs.Iter.prototype.toFailure = function(grammar) {\n const description = '(' + this.expr.toFailure(grammar) + this.operator + ')';\n return new Failure(this, description, 'description');\n};\n","import {abstract} from './common.js';\nimport * as pexprs from './pexprs-main.js';\n\n// --------------------------------------------------------------------\n// Operations\n// --------------------------------------------------------------------\n\n/*\n e1.toString() === e2.toString() ==> e1 and e2 are semantically equivalent.\n Note that this is not an iff (<==>): e.g.,\n (~\"b\" \"a\").toString() !== (\"a\").toString(), even though\n ~\"b\" \"a\" and \"a\" are interchangeable in any grammar,\n both in terms of the languages they accept and their arities.\n*/\npexprs.PExpr.prototype.toString = abstract('toString');\n\npexprs.any.toString = function() {\n return 'any';\n};\n\npexprs.end.toString = function() {\n return 'end';\n};\n\npexprs.Terminal.prototype.toString = function() {\n return JSON.stringify(this.obj);\n};\n\npexprs.Range.prototype.toString = function() {\n return JSON.stringify(this.from) + '..' + JSON.stringify(this.to);\n};\n\npexprs.Param.prototype.toString = function() {\n return '$' + this.index;\n};\n\npexprs.Lex.prototype.toString = function() {\n return '#(' + this.expr.toString() + ')';\n};\n\npexprs.Alt.prototype.toString = function() {\n return this.terms.length === 1 ?\n this.terms[0].toString() :\n '(' + this.terms.map(term => term.toString()).join(' | ') + ')';\n};\n\npexprs.Seq.prototype.toString = function() {\n return this.factors.length === 1 ?\n this.factors[0].toString() :\n '(' + this.factors.map(factor => factor.toString()).join(' ') + ')';\n};\n\npexprs.Iter.prototype.toString = function() {\n return this.expr + this.operator;\n};\n\npexprs.Not.prototype.toString = function() {\n return '~' + this.expr;\n};\n\npexprs.Lookahead.prototype.toString = function() {\n return '&' + this.expr;\n};\n\npexprs.Apply.prototype.toString = function() {\n if (this.args.length > 0) {\n const ps = this.args.map(arg => arg.toString());\n return this.ruleName + '<' + ps.join(',') + '>';\n } else {\n return this.ruleName;\n }\n};\n\npexprs.UnicodeChar.prototype.toString = function() {\n return '\\\\p{' + this.category + '}';\n};\n","import {Failure} from './Failure.js';\nimport {TerminalNode} from './nodes.js';\nimport {assert} from './common.js';\nimport {PExpr, Terminal} from './pexprs-main.js';\n\nexport class CaseInsensitiveTerminal extends PExpr {\n constructor(param) {\n super();\n this.obj = param;\n }\n\n _getString(state) {\n const terminal = state.currentApplication().args[this.obj.index];\n assert(terminal instanceof Terminal, 'expected a Terminal expression');\n return terminal.obj;\n }\n\n // Implementation of the PExpr API\n\n allowsSkippingPrecedingSpace() {\n return true;\n }\n\n eval(state) {\n const {inputStream} = state;\n const origPos = inputStream.pos;\n const matchStr = this._getString(state);\n if (!inputStream.matchString(matchStr, true)) {\n state.processFailure(origPos, this);\n return false;\n } else {\n state.pushBinding(new TerminalNode(matchStr.length), origPos);\n return true;\n }\n }\n\n getArity() {\n return 1;\n }\n\n substituteParams(actuals) {\n return new CaseInsensitiveTerminal(this.obj.substituteParams(actuals));\n }\n\n toDisplayString() {\n return this.obj.toDisplayString() + ' (case-insensitive)';\n }\n\n toFailure(grammar) {\n return new Failure(\n this,\n this.obj.toFailure(grammar) + ' (case-insensitive)',\n 'description',\n );\n }\n\n _isNullable(grammar, memo) {\n return this.obj._isNullable(grammar, memo);\n }\n}\n","// --------------------------------------------------------------------\n// Extensions\n// --------------------------------------------------------------------\n\nimport './pexprs-allowsSkippingPrecedingSpace.js';\nimport './pexprs-assertAllApplicationsAreValid.js';\nimport './pexprs-assertChoicesHaveUniformArity.js';\nimport './pexprs-assertIteratedExprsAreNotNullable.js';\nimport './pexprs-eval.js';\nimport './pexprs-getArity.js';\nimport './pexprs-outputRecipe.js';\nimport './pexprs-introduceParams.js';\nimport './pexprs-isNullable.js';\nimport './pexprs-substituteParams.js';\nimport './pexprs-toArgumentNameList.js';\nimport './pexprs-toDisplayString.js';\nimport './pexprs-toFailure.js';\nimport './pexprs-toString.js';\n\nexport * from './pexprs-main.js';\nexport {CaseInsensitiveTerminal} from './CaseInsensitiveTerminal.js';\n","import {InputStream} from './InputStream.js';\nimport {MatchResult} from './MatchResult.js';\nimport {PosInfo} from './PosInfo.js';\nimport {Trace} from './Trace.js';\nimport * as pexprs from './pexprs.js';\nimport * as util from './util.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nlet builtInApplySyntacticBody;\n\nutil.awaitBuiltInRules(builtInRules => {\n builtInApplySyntacticBody = builtInRules.rules.applySyntactic.body;\n});\n\nconst applySpaces = new pexprs.Apply('spaces');\n\nexport class MatchState {\n constructor(matcher, startExpr, optPositionToRecordFailures) {\n this.matcher = matcher;\n this.startExpr = startExpr;\n\n this.grammar = matcher.grammar;\n this.input = matcher.getInput();\n this.inputStream = new InputStream(this.input);\n this.memoTable = matcher._memoTable;\n\n this.userData = undefined;\n this.doNotMemoize = false;\n\n this._bindings = [];\n this._bindingOffsets = [];\n this._applicationStack = [];\n this._posStack = [0];\n this.inLexifiedContextStack = [false];\n\n this.rightmostFailurePosition = -1;\n this._rightmostFailurePositionStack = [];\n this._recordedFailuresStack = [];\n\n if (optPositionToRecordFailures !== undefined) {\n this.positionToRecordFailures = optPositionToRecordFailures;\n this.recordedFailures = Object.create(null);\n }\n }\n\n posToOffset(pos) {\n return pos - this._posStack[this._posStack.length - 1];\n }\n\n enterApplication(posInfo, app) {\n this._posStack.push(this.inputStream.pos);\n this._applicationStack.push(app);\n this.inLexifiedContextStack.push(false);\n posInfo.enter(app);\n this._rightmostFailurePositionStack.push(this.rightmostFailurePosition);\n this.rightmostFailurePosition = -1;\n }\n\n exitApplication(posInfo, optNode) {\n const origPos = this._posStack.pop();\n this._applicationStack.pop();\n this.inLexifiedContextStack.pop();\n posInfo.exit();\n\n this.rightmostFailurePosition = Math.max(\n this.rightmostFailurePosition,\n this._rightmostFailurePositionStack.pop(),\n );\n\n if (optNode) {\n this.pushBinding(optNode, origPos);\n }\n }\n\n enterLexifiedContext() {\n this.inLexifiedContextStack.push(true);\n }\n\n exitLexifiedContext() {\n this.inLexifiedContextStack.pop();\n }\n\n currentApplication() {\n return this._applicationStack[this._applicationStack.length - 1];\n }\n\n inSyntacticContext() {\n const currentApplication = this.currentApplication();\n if (currentApplication) {\n return currentApplication.isSyntactic() && !this.inLexifiedContext();\n } else {\n // The top-level context is syntactic if the start application is.\n return this.startExpr.factors[0].isSyntactic();\n }\n }\n\n inLexifiedContext() {\n return this.inLexifiedContextStack[this.inLexifiedContextStack.length - 1];\n }\n\n skipSpaces() {\n this.pushFailuresInfo();\n this.eval(applySpaces);\n this.popBinding();\n this.popFailuresInfo();\n return this.inputStream.pos;\n }\n\n skipSpacesIfInSyntacticContext() {\n return this.inSyntacticContext() ? this.skipSpaces() : this.inputStream.pos;\n }\n\n maybeSkipSpacesBefore(expr) {\n if (expr.allowsSkippingPrecedingSpace() && expr !== applySpaces) {\n return this.skipSpacesIfInSyntacticContext();\n } else {\n return this.inputStream.pos;\n }\n }\n\n pushBinding(node, origPos) {\n this._bindings.push(node);\n this._bindingOffsets.push(this.posToOffset(origPos));\n }\n\n popBinding() {\n this._bindings.pop();\n this._bindingOffsets.pop();\n }\n\n numBindings() {\n return this._bindings.length;\n }\n\n truncateBindings(newLength) {\n // Yes, this is this really faster than setting the `length` property (tested with\n // bin/es5bench on Node v6.1.0).\n // Update 2021-10-25: still true on v14.15.5 — it's ~20% speedup on es5bench.\n while (this._bindings.length > newLength) {\n this.popBinding();\n }\n }\n\n getCurrentPosInfo() {\n return this.getPosInfo(this.inputStream.pos);\n }\n\n getPosInfo(pos) {\n let posInfo = this.memoTable[pos];\n if (!posInfo) {\n posInfo = this.memoTable[pos] = new PosInfo();\n }\n return posInfo;\n }\n\n processFailure(pos, expr) {\n this.rightmostFailurePosition = Math.max(this.rightmostFailurePosition, pos);\n\n if (this.recordedFailures && pos === this.positionToRecordFailures) {\n const app = this.currentApplication();\n if (app) {\n // Substitute parameters with the actual pexprs that were passed to\n // the current rule.\n expr = expr.substituteParams(app.args);\n } else {\n // This branch is only reached for the \"end-check\" that is\n // performed after the top-level application. In that case,\n // expr === pexprs.end so there is no need to substitute\n // parameters.\n }\n\n this.recordFailure(expr.toFailure(this.grammar), false);\n }\n }\n\n recordFailure(failure, shouldCloneIfNew) {\n const key = failure.toKey();\n if (!this.recordedFailures[key]) {\n this.recordedFailures[key] = shouldCloneIfNew ? failure.clone() : failure;\n } else if (this.recordedFailures[key].isFluffy() && !failure.isFluffy()) {\n this.recordedFailures[key].clearFluffy();\n }\n }\n\n recordFailures(failures, shouldCloneIfNew) {\n Object.keys(failures).forEach(key => {\n this.recordFailure(failures[key], shouldCloneIfNew);\n });\n }\n\n cloneRecordedFailures() {\n if (!this.recordedFailures) {\n return undefined;\n }\n\n const ans = Object.create(null);\n Object.keys(this.recordedFailures).forEach(key => {\n ans[key] = this.recordedFailures[key].clone();\n });\n return ans;\n }\n\n getRightmostFailurePosition() {\n return this.rightmostFailurePosition;\n }\n\n _getRightmostFailureOffset() {\n return this.rightmostFailurePosition >= 0 ?\n this.posToOffset(this.rightmostFailurePosition) :\n -1;\n }\n\n // Returns the memoized trace entry for `expr` at `pos`, if one exists, `null` otherwise.\n getMemoizedTraceEntry(pos, expr) {\n const posInfo = this.memoTable[pos];\n if (posInfo && expr instanceof pexprs.Apply) {\n const memoRec = posInfo.memo[expr.toMemoKey()];\n if (memoRec && memoRec.traceEntry) {\n const entry = memoRec.traceEntry.cloneWithExpr(expr);\n entry.isMemoized = true;\n return entry;\n }\n }\n return null;\n }\n\n // Returns a new trace entry, with the currently active trace array as its children.\n getTraceEntry(pos, expr, succeeded, bindings) {\n if (expr instanceof pexprs.Apply) {\n const app = this.currentApplication();\n const actuals = app ? app.args : [];\n expr = expr.substituteParams(actuals);\n }\n return (\n this.getMemoizedTraceEntry(pos, expr) ||\n new Trace(this.input, pos, this.inputStream.pos, expr, succeeded, bindings, this.trace)\n );\n }\n\n isTracing() {\n return !!this.trace;\n }\n\n hasNecessaryInfo(memoRec) {\n if (this.trace && !memoRec.traceEntry) {\n return false;\n }\n\n if (\n this.recordedFailures &&\n this.inputStream.pos + memoRec.rightmostFailureOffset === this.positionToRecordFailures\n ) {\n return !!memoRec.failuresAtRightmostPosition;\n }\n\n return true;\n }\n\n useMemoizedResult(origPos, memoRec) {\n if (this.trace) {\n this.trace.push(memoRec.traceEntry);\n }\n\n const memoRecRightmostFailurePosition =\n this.inputStream.pos + memoRec.rightmostFailureOffset;\n this.rightmostFailurePosition = Math.max(\n this.rightmostFailurePosition,\n memoRecRightmostFailurePosition,\n );\n if (\n this.recordedFailures &&\n this.positionToRecordFailures === memoRecRightmostFailurePosition &&\n memoRec.failuresAtRightmostPosition\n ) {\n this.recordFailures(memoRec.failuresAtRightmostPosition, true);\n }\n\n this.inputStream.examinedLength = Math.max(\n this.inputStream.examinedLength,\n memoRec.examinedLength + origPos,\n );\n\n if (memoRec.value) {\n this.inputStream.pos += memoRec.matchLength;\n this.pushBinding(memoRec.value, origPos);\n return true;\n }\n return false;\n }\n\n // Evaluate `expr` and return `true` if it succeeded, `false` otherwise. On success, `bindings`\n // will have `expr.getArity()` more elements than before, and the input stream's position may\n // have increased. On failure, `bindings` and position will be unchanged.\n eval(expr) {\n const {inputStream} = this;\n const origNumBindings = this._bindings.length;\n const origUserData = this.userData;\n\n let origRecordedFailures;\n if (this.recordedFailures) {\n origRecordedFailures = this.recordedFailures;\n this.recordedFailures = Object.create(null);\n }\n\n const origPos = inputStream.pos;\n const memoPos = this.maybeSkipSpacesBefore(expr);\n\n let origTrace;\n if (this.trace) {\n origTrace = this.trace;\n this.trace = [];\n }\n\n // Do the actual evaluation.\n const ans = expr.eval(this);\n\n if (this.trace) {\n const bindings = this._bindings.slice(origNumBindings);\n const traceEntry = this.getTraceEntry(memoPos, expr, ans, bindings);\n traceEntry.isImplicitSpaces = expr === applySpaces;\n traceEntry.isRootNode = expr === this.startExpr;\n origTrace.push(traceEntry);\n this.trace = origTrace;\n }\n\n if (ans) {\n if (this.recordedFailures && inputStream.pos === this.positionToRecordFailures) {\n Object.keys(this.recordedFailures).forEach(key => {\n this.recordedFailures[key].makeFluffy();\n });\n }\n } else {\n // Reset the position, bindings, and userData.\n inputStream.pos = origPos;\n this.truncateBindings(origNumBindings);\n this.userData = origUserData;\n }\n\n if (this.recordedFailures) {\n this.recordFailures(origRecordedFailures, false);\n }\n\n // The built-in applySyntactic rule needs special handling: we want to skip\n // trailing spaces, just as with the top-level application of a syntactic rule.\n if (expr === builtInApplySyntacticBody) {\n this.skipSpaces();\n }\n\n return ans;\n }\n\n getMatchResult() {\n this.grammar._setUpMatchState(this);\n this.eval(this.startExpr);\n let rightmostFailures;\n if (this.recordedFailures) {\n rightmostFailures = Object.keys(this.recordedFailures).map(\n key => this.recordedFailures[key],\n );\n }\n const cst = this._bindings[0];\n if (cst) {\n cst.grammar = this.grammar;\n }\n return new MatchResult(\n this.matcher,\n this.input,\n this.startExpr,\n cst,\n this._bindingOffsets[0],\n this.rightmostFailurePosition,\n rightmostFailures,\n );\n }\n\n getTrace() {\n this.trace = [];\n const matchResult = this.getMatchResult();\n\n // The trace node for the start rule is always the last entry. If it is a syntactic rule,\n // the first entry is for an application of 'spaces'.\n // TODO(pdubroy): Clean this up by introducing a special `Match<startAppl>` rule, which will\n // ensure that there is always a single root trace node.\n const rootTrace = this.trace[this.trace.length - 1];\n rootTrace.result = matchResult;\n return rootTrace;\n }\n\n pushFailuresInfo() {\n this._rightmostFailurePositionStack.push(this.rightmostFailurePosition);\n this._recordedFailuresStack.push(this.recordedFailures);\n }\n\n popFailuresInfo() {\n this.rightmostFailurePosition = this._rightmostFailurePositionStack.pop();\n this.recordedFailures = this._recordedFailuresStack.pop();\n }\n}\n","import {grammarDoesNotSupportIncrementalParsing} from './errors.js';\nimport {MatchState} from './MatchState.js';\nimport * as pexprs from './pexprs.js';\n\nexport class Matcher {\n constructor(grammar) {\n this.grammar = grammar;\n this._memoTable = [];\n this._input = '';\n this._isMemoTableStale = false;\n }\n\n _resetMemoTable() {\n this._memoTable = [];\n this._isMemoTableStale = false;\n }\n\n getInput() {\n return this._input;\n }\n\n setInput(str) {\n if (this._input !== str) {\n this.replaceInputRange(0, this._input.length, str);\n }\n return this;\n }\n\n replaceInputRange(startIdx, endIdx, str) {\n const prevInput = this._input;\n const memoTable = this._memoTable;\n if (\n startIdx < 0 ||\n startIdx > prevInput.length ||\n endIdx < 0 ||\n endIdx > prevInput.length ||\n startIdx > endIdx\n ) {\n throw new Error('Invalid indices: ' + startIdx + ' and ' + endIdx);\n }\n\n // update input\n this._input = prevInput.slice(0, startIdx) + str + prevInput.slice(endIdx);\n if (this._input !== prevInput && memoTable.length > 0) {\n this._isMemoTableStale = true;\n }\n\n // update memo table (similar to the above)\n const restOfMemoTable = memoTable.slice(endIdx);\n memoTable.length = startIdx;\n for (let idx = 0; idx < str.length; idx++) {\n memoTable.push(undefined);\n }\n for (const posInfo of restOfMemoTable) {\n memoTable.push(posInfo);\n }\n\n // Invalidate memoRecs\n for (let pos = 0; pos < startIdx; pos++) {\n const posInfo = memoTable[pos];\n if (posInfo) {\n posInfo.clearObsoleteEntries(pos, startIdx);\n }\n }\n\n return this;\n }\n\n match(optStartApplicationStr, options = {incremental: true}) {\n return this._match(this._getStartExpr(optStartApplicationStr), {\n incremental: options.incremental,\n tracing: false,\n });\n }\n\n trace(optStartApplicationStr, options = {incremental: true}) {\n return this._match(this._getStartExpr(optStartApplicationStr), {\n incremental: options.incremental,\n tracing: true,\n });\n }\n\n _match(startExpr, options = {}) {\n const opts = {\n tracing: false,\n incremental: true,\n positionToRecordFailures: undefined,\n ...options,\n };\n if (!opts.incremental) {\n this._resetMemoTable();\n } else if (this._isMemoTableStale && !this.grammar.supportsIncrementalParsing) {\n throw grammarDoesNotSupportIncrementalParsing(this.grammar);\n }\n\n const state = new MatchState(this, startExpr, opts.positionToRecordFailures);\n return opts.tracing ? state.getTrace() : state.getMatchResult();\n }\n\n /*\n Returns the starting expression for this Matcher's associated grammar. If\n `optStartApplicationStr` is specified, it is a string expressing a rule application in the\n grammar. If not specified, the grammar's default start rule will be used.\n */\n _getStartExpr(optStartApplicationStr) {\n const applicationStr = optStartApplicationStr || this.grammar.defaultStartRule;\n if (!applicationStr) {\n throw new Error('Missing start rule argument -- the grammar has no default start rule.');\n }\n\n const startApp = this.grammar.parseApplication(applicationStr);\n return new pexprs.Seq([startApp, pexprs.end]);\n }\n}\n","import {InputStream} from './InputStream.js';\nimport {IterationNode} from './nodes.js';\nimport {MatchResult} from './MatchResult.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport * as util from './util.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nconst globalActionStack = [];\n\nconst hasOwnProperty = (x, prop) => Object.prototype.hasOwnProperty.call(x, prop);\n\n// ----------------- Wrappers -----------------\n\n// Wrappers decorate CST nodes with all of the functionality (i.e., operations and attributes)\n// provided by a Semantics (see below). `Wrapper` is the abstract superclass of all wrappers. A\n// `Wrapper` must have `_node` and `_semantics` instance variables, which refer to the CST node and\n// Semantics (resp.) for which it was created, and a `_childWrappers` instance variable which is\n// used to cache the wrapper instances that are created for its child nodes. Setting these instance\n// variables is the responsibility of the constructor of each Semantics-specific subclass of\n// `Wrapper`.\nclass Wrapper {\n constructor(node, sourceInterval, baseInterval) {\n this._node = node;\n this.source = sourceInterval;\n\n // The interval that the childOffsets of `node` are relative to. It should be the source\n // of the closest Nonterminal node.\n this._baseInterval = baseInterval;\n\n if (node.isNonterminal()) {\n common.assert(sourceInterval === baseInterval);\n }\n this._childWrappers = [];\n }\n\n _forgetMemoizedResultFor(attributeName) {\n // Remove the memoized attribute from the cstNode and all its children.\n delete this._node[this._semantics.attributeKeys[attributeName]];\n this.children.forEach(child => {\n child._forgetMemoizedResultFor(attributeName);\n });\n }\n\n // Returns the wrapper of the specified child node. Child wrappers are created lazily and\n // cached in the parent wrapper's `_childWrappers` instance variable.\n child(idx) {\n if (!(0 <= idx && idx < this._node.numChildren())) {\n // TODO: Consider throwing an exception here.\n return undefined;\n }\n let childWrapper = this._childWrappers[idx];\n if (!childWrapper) {\n const childNode = this._node.childAt(idx);\n const offset = this._node.childOffsets[idx];\n\n const source = this._baseInterval.subInterval(offset, childNode.matchLength);\n const base = childNode.isNonterminal() ? source : this._baseInterval;\n childWrapper = this._childWrappers[idx] = this._semantics.wrap(childNode, source, base);\n }\n return childWrapper;\n }\n\n // Returns an array containing the wrappers of all of the children of the node associated\n // with this wrapper.\n _children() {\n // Force the creation of all child wrappers\n for (let idx = 0; idx < this._node.numChildren(); idx++) {\n this.child(idx);\n }\n return this._childWrappers;\n }\n\n // Returns `true` if the CST node associated with this wrapper corresponds to an iteration\n // expression, i.e., a Kleene-*, Kleene-+, or an optional. Returns `false` otherwise.\n isIteration() {\n return this._node.isIteration();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a terminal node, `false`\n // otherwise.\n isTerminal() {\n return this._node.isTerminal();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a nonterminal node, `false`\n // otherwise.\n isNonterminal() {\n return this._node.isNonterminal();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a nonterminal node\n // corresponding to a syntactic rule, `false` otherwise.\n isSyntactic() {\n return this.isNonterminal() && this._node.isSyntactic();\n }\n\n // Returns `true` if the CST node associated with this wrapper is a nonterminal node\n // corresponding to a lexical rule, `false` otherwise.\n isLexical() {\n return this.isNonterminal() && this._node.isLexical();\n }\n\n // Returns `true` if the CST node associated with this wrapper is an iterator node\n // having either one or no child (? operator), `false` otherwise.\n // Otherwise, throws an exception.\n isOptional() {\n return this._node.isOptional();\n }\n\n // Create a new _iter wrapper in the same semantics as this wrapper.\n iteration(optChildWrappers) {\n const childWrappers = optChildWrappers || [];\n\n const childNodes = childWrappers.map(c => c._node);\n const iter = new IterationNode(childNodes, [], -1, false);\n\n const wrapper = this._semantics.wrap(iter, null, null);\n wrapper._childWrappers = childWrappers;\n return wrapper;\n }\n\n // Returns an array containing the children of this CST node.\n get children() {\n return this._children();\n }\n\n // Returns the name of grammar rule that created this CST node.\n get ctorName() {\n return this._node.ctorName;\n }\n\n // Returns the number of children of this CST node.\n get numChildren() {\n return this._node.numChildren();\n }\n\n // Returns the contents of the input stream consumed by this CST node.\n get sourceString() {\n return this.source.contents;\n }\n}\n\n// ----------------- Semantics -----------------\n\n// A Semantics is a container for a family of Operations and Attributes for a given grammar.\n// Semantics enable modularity (different clients of a grammar can create their set of operations\n// and attributes in isolation) and extensibility even when operations and attributes are mutually-\n// recursive. This constructor should not be called directly except from\n// `Semantics.createSemantics`. The normal ways to create a Semantics, given a grammar 'g', are\n// `g.createSemantics()` and `g.extendSemantics(parentSemantics)`.\nexport class Semantics {\n constructor(grammar, superSemantics) {\n const self = this;\n this.grammar = grammar;\n this.checkedActionDicts = false;\n\n // Constructor for wrapper instances, which are passed as the arguments to the semantic actions\n // of an operation or attribute. Operations and attributes require double dispatch: the semantic\n // action is chosen based on both the node's type and the semantics. Wrappers ensure that\n // the `execute` method is called with the correct (most specific) semantics object as an\n // argument.\n this.Wrapper = class extends (superSemantics ? superSemantics.Wrapper : Wrapper) {\n constructor(node, sourceInterval, baseInterval) {\n super(node, sourceInterval, baseInterval);\n self.checkActionDictsIfHaventAlready();\n this._semantics = self;\n }\n\n toString() {\n return '[semantics wrapper for ' + self.grammar.name + ']';\n }\n };\n\n this.super = superSemantics;\n if (superSemantics) {\n if (!(grammar.equals(this.super.grammar) || grammar._inheritsFrom(this.super.grammar))) {\n throw new Error(\n \"Cannot extend a semantics for grammar '\" +\n this.super.grammar.name +\n \"' for use with grammar '\" +\n grammar.name +\n \"' (not a sub-grammar)\",\n );\n }\n this.operations = Object.create(this.super.operations);\n this.attributes = Object.create(this.super.attributes);\n this.attributeKeys = Object.create(null);\n\n // Assign unique symbols for each of the attributes inherited from the super-semantics so that\n // they are memoized independently.\n // eslint-disable-next-line guard-for-in\n for (const attributeName in this.attributes) {\n Object.defineProperty(this.attributeKeys, attributeName, {\n value: util.uniqueId(attributeName),\n });\n }\n } else {\n this.operations = Object.create(null);\n this.attributes = Object.create(null);\n this.attributeKeys = Object.create(null);\n }\n }\n\n toString() {\n return '[semantics for ' + this.grammar.name + ']';\n }\n\n checkActionDictsIfHaventAlready() {\n if (!this.checkedActionDicts) {\n this.checkActionDicts();\n this.checkedActionDicts = true;\n }\n }\n\n // Checks that the action dictionaries for all operations and attributes in this semantics,\n // including the ones that were inherited from the super-semantics, agree with the grammar.\n // Throws an exception if one or more of them doesn't.\n checkActionDicts() {\n let name;\n // eslint-disable-next-line guard-for-in\n for (name in this.operations) {\n this.operations[name].checkActionDict(this.grammar);\n }\n // eslint-disable-next-line guard-for-in\n for (name in this.attributes) {\n this.attributes[name].checkActionDict(this.grammar);\n }\n }\n\n toRecipe(semanticsOnly) {\n function hasSuperSemantics(s) {\n return s.super !== Semantics.BuiltInSemantics._getSemantics();\n }\n\n let str = '(function(g) {\\n';\n if (hasSuperSemantics(this)) {\n str += ' var semantics = ' + this.super.toRecipe(true) + '(g';\n\n const superSemanticsGrammar = this.super.grammar;\n let relatedGrammar = this.grammar;\n while (relatedGrammar !== superSemanticsGrammar) {\n str += '.superGrammar';\n relatedGrammar = relatedGrammar.superGrammar;\n }\n\n str += ');\\n';\n str += ' return g.extendSemantics(semantics)';\n } else {\n str += ' return g.createSemantics()';\n }\n ['Operation', 'Attribute'].forEach(type => {\n const semanticOperations = this[type.toLowerCase() + 's'];\n Object.keys(semanticOperations).forEach(name => {\n const {actionDict, formals, builtInDefault} = semanticOperations[name];\n\n let signature = name;\n if (formals.length > 0) {\n signature += '(' + formals.join(', ') + ')';\n }\n\n let method;\n if (hasSuperSemantics(this) && this.super[type.toLowerCase() + 's'][name]) {\n method = 'extend' + type;\n } else {\n method = 'add' + type;\n }\n str += '\\n .' + method + '(' + JSON.stringify(signature) + ', {';\n\n const srcArray = [];\n Object.keys(actionDict).forEach(actionName => {\n if (actionDict[actionName] !== builtInDefault) {\n let source = actionDict[actionName].toString().trim();\n\n // Convert method shorthand to plain old function syntax.\n // https://github.com/harc/ohm/issues/263\n source = source.replace(/^.*\\(/, 'function(');\n\n srcArray.push('\\n ' + JSON.stringify(actionName) + ': ' + source);\n }\n });\n str += srcArray.join(',') + '\\n })';\n });\n });\n str += ';\\n })';\n\n if (!semanticsOnly) {\n str =\n '(function() {\\n' +\n ' var grammar = this.fromRecipe(' +\n this.grammar.toRecipe() +\n ');\\n' +\n ' var semantics = ' +\n str +\n '(grammar);\\n' +\n ' return semantics;\\n' +\n '});\\n';\n }\n\n return str;\n }\n\n addOperationOrAttribute(type, signature, actionDict) {\n const typePlural = type + 's';\n\n const parsedNameAndFormalArgs = parseSignature(signature, type);\n const {name} = parsedNameAndFormalArgs;\n const {formals} = parsedNameAndFormalArgs;\n\n // TODO: check that there are no duplicate formal arguments\n\n this.assertNewName(name, type);\n\n // Create the action dictionary for this operation / attribute that contains a `_default` action\n // which defines the default behavior of iteration, terminal, and non-terminal nodes...\n const builtInDefault = newDefaultAction(type, name, doIt);\n const realActionDict = {_default: builtInDefault};\n // ... and add in the actions supplied by the programmer, which may override some or all of the\n // default ones.\n Object.keys(actionDict).forEach(name => {\n realActionDict[name] = actionDict[name];\n });\n\n const entry =\n type === 'operation' ?\n new Operation(name, formals, realActionDict, builtInDefault) :\n new Attribute(name, realActionDict, builtInDefault);\n\n // The following check is not strictly necessary (it will happen later anyway) but it's better\n // to catch errors early.\n entry.checkActionDict(this.grammar);\n\n this[typePlural][name] = entry;\n\n function doIt(...args) {\n // Dispatch to most specific version of this operation / attribute -- it may have been\n // overridden by a sub-semantics.\n const thisThing = this._semantics[typePlural][name];\n\n // Check that the caller passed the correct number of arguments.\n if (arguments.length !== thisThing.formals.length) {\n throw new Error(\n 'Invalid number of arguments passed to ' +\n name +\n ' ' +\n type +\n ' (expected ' +\n thisThing.formals.length +\n ', got ' +\n arguments.length +\n ')',\n );\n }\n\n // Create an \"arguments object\" from the arguments that were passed to this\n // operation / attribute.\n const argsObj = Object.create(null);\n for (const [idx, val] of Object.entries(args)) {\n const formal = thisThing.formals[idx];\n argsObj[formal] = val;\n }\n\n const oldArgs = this.args;\n this.args = argsObj;\n const ans = thisThing.execute(this._semantics, this);\n this.args = oldArgs;\n return ans;\n }\n\n if (type === 'operation') {\n this.Wrapper.prototype[name] = doIt;\n this.Wrapper.prototype[name].toString = function() {\n return '[' + name + ' operation]';\n };\n } else {\n Object.defineProperty(this.Wrapper.prototype, name, {\n get: doIt,\n configurable: true, // So the property can be deleted.\n });\n Object.defineProperty(this.attributeKeys, name, {\n value: util.uniqueId(name),\n });\n }\n }\n\n extendOperationOrAttribute(type, name, actionDict) {\n const typePlural = type + 's';\n\n // Make sure that `name` really is just a name, i.e., that it doesn't also contain formals.\n parseSignature(name, 'attribute');\n\n if (!(this.super && name in this.super[typePlural])) {\n throw new Error(\n 'Cannot extend ' +\n type +\n \" '\" +\n name +\n \"': did not inherit an \" +\n type +\n ' with that name',\n );\n }\n if (hasOwnProperty(this[typePlural], name)) {\n throw new Error('Cannot extend ' + type + \" '\" + name + \"' again\");\n }\n\n // Create a new operation / attribute whose actionDict delegates to the super operation /\n // attribute's actionDict, and which has all the keys from `inheritedActionDict`.\n const inheritedFormals = this[typePlural][name].formals;\n const inheritedActionDict = this[typePlural][name].actionDict;\n const newActionDict = Object.create(inheritedActionDict);\n Object.keys(actionDict).forEach(name => {\n newActionDict[name] = actionDict[name];\n });\n\n this[typePlural][name] =\n type === 'operation' ?\n new Operation(name, inheritedFormals, newActionDict) :\n new Attribute(name, newActionDict);\n\n // The following check is not strictly necessary (it will happen later anyway) but it's better\n // to catch errors early.\n this[typePlural][name].checkActionDict(this.grammar);\n }\n\n assertNewName(name, type) {\n if (hasOwnProperty(Wrapper.prototype, name)) {\n throw new Error('Cannot add ' + type + \" '\" + name + \"': that's a reserved name\");\n }\n if (name in this.operations) {\n throw new Error(\n 'Cannot add ' + type + \" '\" + name + \"': an operation with that name already exists\",\n );\n }\n if (name in this.attributes) {\n throw new Error(\n 'Cannot add ' + type + \" '\" + name + \"': an attribute with that name already exists\",\n );\n }\n }\n\n // Returns a wrapper for the given CST `node` in this semantics.\n // If `node` is already a wrapper, returns `node` itself. // TODO: why is this needed?\n wrap(node, source, optBaseInterval) {\n const baseInterval = optBaseInterval || source;\n return node instanceof this.Wrapper ? node : new this.Wrapper(node, source, baseInterval);\n }\n}\n\nfunction parseSignature(signature, type) {\n if (!Semantics.prototypeGrammar) {\n // The Operations and Attributes grammar won't be available while Ohm is loading,\n // but we can get away the following simplification b/c none of the operations\n // that are used while loading take arguments.\n common.assert(signature.indexOf('(') === -1);\n return {\n name: signature,\n formals: [],\n };\n }\n\n const r = Semantics.prototypeGrammar.match(\n signature,\n type === 'operation' ? 'OperationSignature' : 'AttributeSignature',\n );\n if (r.failed()) {\n throw new Error(r.message);\n }\n\n return Semantics.prototypeGrammarSemantics(r).parse();\n}\n\nfunction newDefaultAction(type, name, doIt) {\n return function(...children) {\n const thisThing = this._semantics.operations[name] || this._semantics.attributes[name];\n const args = thisThing.formals.map(formal => this.args[formal]);\n\n if (!this.isIteration() && children.length === 1) {\n // This CST node corresponds to a non-terminal in the grammar (e.g., AddExpr). The fact that\n // we got here means that this action dictionary doesn't have an action for this particular\n // non-terminal or a generic `_nonterminal` action.\n // As a convenience, if this node only has one child, we just return the result of applying\n // this operation / attribute to the child node.\n return doIt.apply(children[0], args);\n } else {\n // Otherwise, we throw an exception to let the programmer know that we don't know what\n // to do with this node.\n throw errors.missingSemanticAction(this.ctorName, name, type, globalActionStack);\n }\n };\n}\n\n// Creates a new Semantics instance for `grammar`, inheriting operations and attributes from\n// `optSuperSemantics`, if it is specified. Returns a function that acts as a proxy for the new\n// Semantics instance. When that function is invoked with a CST node as an argument, it returns\n// a wrapper for that node which gives access to the operations and attributes provided by this\n// semantics.\nSemantics.createSemantics = function(grammar, optSuperSemantics) {\n const s = new Semantics(\n grammar,\n optSuperSemantics !== undefined ?\n optSuperSemantics :\n Semantics.BuiltInSemantics._getSemantics(),\n );\n\n // To enable clients to invoke a semantics like a function, return a function that acts as a proxy\n // for `s`, which is the real `Semantics` instance.\n const proxy = function ASemantics(matchResult) {\n if (!(matchResult instanceof MatchResult)) {\n throw new TypeError(\n 'Semantics expected a MatchResult, but got ' +\n common.unexpectedObjToString(matchResult),\n );\n }\n if (matchResult.failed()) {\n throw new TypeError('cannot apply Semantics to ' + matchResult.toString());\n }\n\n const cst = matchResult._cst;\n if (cst.grammar !== grammar) {\n throw new Error(\n \"Cannot use a MatchResult from grammar '\" +\n cst.grammar.name +\n \"' with a semantics for '\" +\n grammar.name +\n \"'\",\n );\n }\n const inputStream = new InputStream(matchResult.input);\n return s.wrap(cst, inputStream.interval(matchResult._cstOffset, matchResult.input.length));\n };\n\n // Forward public methods from the proxy to the semantics instance.\n proxy.addOperation = function(signature, actionDict) {\n s.addOperationOrAttribute('operation', signature, actionDict);\n return proxy;\n };\n proxy.extendOperation = function(name, actionDict) {\n s.extendOperationOrAttribute('operation', name, actionDict);\n return proxy;\n };\n proxy.addAttribute = function(name, actionDict) {\n s.addOperationOrAttribute('attribute', name, actionDict);\n return proxy;\n };\n proxy.extendAttribute = function(name, actionDict) {\n s.extendOperationOrAttribute('attribute', name, actionDict);\n return proxy;\n };\n proxy._getActionDict = function(operationOrAttributeName) {\n const action =\n s.operations[operationOrAttributeName] || s.attributes[operationOrAttributeName];\n if (!action) {\n throw new Error(\n '\"' +\n operationOrAttributeName +\n '\" is not a valid operation or attribute ' +\n 'name in this semantics for \"' +\n grammar.name +\n '\"',\n );\n }\n return action.actionDict;\n };\n proxy._remove = function(operationOrAttributeName) {\n let semantic;\n if (operationOrAttributeName in s.operations) {\n semantic = s.operations[operationOrAttributeName];\n delete s.operations[operationOrAttributeName];\n } else if (operationOrAttributeName in s.attributes) {\n semantic = s.attributes[operationOrAttributeName];\n delete s.attributes[operationOrAttributeName];\n }\n delete s.Wrapper.prototype[operationOrAttributeName];\n return semantic;\n };\n proxy.getOperationNames = function() {\n return Object.keys(s.operations);\n };\n proxy.getAttributeNames = function() {\n return Object.keys(s.attributes);\n };\n proxy.getGrammar = function() {\n return s.grammar;\n };\n proxy.toRecipe = function(semanticsOnly) {\n return s.toRecipe(semanticsOnly);\n };\n\n // Make the proxy's toString() work.\n proxy.toString = s.toString.bind(s);\n\n // Returns the semantics for the proxy.\n proxy._getSemantics = function() {\n return s;\n };\n\n return proxy;\n};\n\n// ----------------- Operation -----------------\n\n// An Operation represents a function to be applied to a concrete syntax tree (CST) -- it's very\n// similar to a Visitor (http://en.wikipedia.org/wiki/Visitor_pattern). An operation is executed by\n// recursively walking the CST, and at each node, invoking the matching semantic action from\n// `actionDict`. See `Operation.prototype.execute` for details of how a CST node's matching semantic\n// action is found.\nclass Operation {\n constructor(name, formals, actionDict, builtInDefault) {\n this.name = name;\n this.formals = formals;\n this.actionDict = actionDict;\n this.builtInDefault = builtInDefault;\n }\n\n checkActionDict(grammar) {\n grammar._checkTopDownActionDict(this.typeName, this.name, this.actionDict);\n }\n\n // Execute this operation on the CST node associated with `nodeWrapper` in the context of the\n // given Semantics instance.\n execute(semantics, nodeWrapper) {\n try {\n // Look for a semantic action whose name matches the node's constructor name, which is either\n // the name of a rule in the grammar, or '_terminal' (for a terminal node), or '_iter' (for an\n // iteration node).\n const {ctorName} = nodeWrapper._node;\n let actionFn = this.actionDict[ctorName];\n if (actionFn) {\n globalActionStack.push([this, ctorName]);\n return actionFn.apply(nodeWrapper, nodeWrapper._children());\n }\n\n // The action dictionary does not contain a semantic action for this specific type of node.\n // If this is a nonterminal node and the programmer has provided a `_nonterminal` semantic\n // action, we invoke it:\n if (nodeWrapper.isNonterminal()) {\n actionFn = this.actionDict._nonterminal;\n if (actionFn) {\n globalActionStack.push([this, '_nonterminal', ctorName]);\n return actionFn.apply(nodeWrapper, nodeWrapper._children());\n }\n }\n\n // Otherwise, we invoke the '_default' semantic action.\n globalActionStack.push([this, 'default action', ctorName]);\n return this.actionDict._default.apply(nodeWrapper, nodeWrapper._children());\n } finally {\n globalActionStack.pop();\n }\n }\n}\n\nOperation.prototype.typeName = 'operation';\n\n// ----------------- Attribute -----------------\n\n// Attributes are Operations whose results are memoized. This means that, for any given semantics,\n// the semantic action for a CST node will be invoked no more than once.\nclass Attribute extends Operation {\n constructor(name, actionDict, builtInDefault) {\n super(name, [], actionDict, builtInDefault);\n }\n\n execute(semantics, nodeWrapper) {\n const node = nodeWrapper._node;\n const key = semantics.attributeKeys[this.name];\n if (!hasOwnProperty(node, key)) {\n // The following is a super-send -- isn't JS beautiful? :/\n node[key] = Operation.prototype.execute.call(this, semantics, nodeWrapper);\n }\n return node[key];\n }\n}\n\nAttribute.prototype.typeName = 'attribute';\n","import {Matcher} from './Matcher.js';\nimport {Semantics} from './Semantics.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nconst SPECIAL_ACTION_NAMES = ['_iter', '_terminal', '_nonterminal', '_default'];\n\nfunction getSortedRuleValues(grammar) {\n return Object.keys(grammar.rules)\n .sort()\n .map(name => grammar.rules[name]);\n}\n\n// Until ES2019, JSON was not a valid subset of JavaScript because U+2028 (line separator)\n// and U+2029 (paragraph separator) are allowed in JSON string literals, but not in JS.\n// This function properly encodes those two characters so that the resulting string is\n// represents both valid JSON, and valid JavaScript (for ES2018 and below).\n// See https://v8.dev/features/subsume-json for more details.\nconst jsonToJS = str => str.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\n\nlet ohmGrammar;\nlet buildGrammar;\n\nexport class Grammar {\n constructor(name, superGrammar, rules, optDefaultStartRule) {\n this.name = name;\n this.superGrammar = superGrammar;\n this.rules = rules;\n if (optDefaultStartRule) {\n if (!(optDefaultStartRule in rules)) {\n throw new Error(\n \"Invalid start rule: '\" +\n optDefaultStartRule +\n \"' is not a rule in grammar '\" +\n name +\n \"'\",\n );\n }\n this.defaultStartRule = optDefaultStartRule;\n }\n this._matchStateInitializer = undefined;\n this.supportsIncrementalParsing = true;\n }\n\n matcher() {\n return new Matcher(this);\n }\n\n // Return true if the grammar is a built-in grammar, otherwise false.\n // NOTE: This might give an unexpected result if called before BuiltInRules is defined!\n isBuiltIn() {\n return this === Grammar.ProtoBuiltInRules || this === Grammar.BuiltInRules;\n }\n\n equals(g) {\n if (this === g) {\n return true;\n }\n // Do the cheapest comparisons first.\n if (\n g == null ||\n this.name !== g.name ||\n this.defaultStartRule !== g.defaultStartRule ||\n !(this.superGrammar === g.superGrammar || this.superGrammar.equals(g.superGrammar))\n ) {\n return false;\n }\n const myRules = getSortedRuleValues(this);\n const otherRules = getSortedRuleValues(g);\n return (\n myRules.length === otherRules.length &&\n myRules.every((rule, i) => {\n return (\n rule.description === otherRules[i].description &&\n rule.formals.join(',') === otherRules[i].formals.join(',') &&\n rule.body.toString() === otherRules[i].body.toString()\n );\n })\n );\n }\n\n match(input, optStartApplication) {\n const m = this.matcher();\n m.replaceInputRange(0, 0, input);\n return m.match(optStartApplication);\n }\n\n trace(input, optStartApplication) {\n const m = this.matcher();\n m.replaceInputRange(0, 0, input);\n return m.trace(optStartApplication);\n }\n\n createSemantics() {\n return Semantics.createSemantics(this);\n }\n\n extendSemantics(superSemantics) {\n return Semantics.createSemantics(this, superSemantics._getSemantics());\n }\n\n // Check that every key in `actionDict` corresponds to a semantic action, and that it maps to\n // a function of the correct arity. If not, throw an exception.\n _checkTopDownActionDict(what, name, actionDict) {\n const problems = [];\n\n // eslint-disable-next-line guard-for-in\n for (const k in actionDict) {\n const v = actionDict[k];\n const isSpecialAction = SPECIAL_ACTION_NAMES.includes(k);\n\n if (!isSpecialAction && !(k in this.rules)) {\n problems.push(`'${k}' is not a valid semantic action for '${this.name}'`);\n continue;\n }\n if (typeof v !== 'function') {\n problems.push(`'${k}' must be a function in an action dictionary for '${this.name}'`);\n continue;\n }\n const actual = v.length;\n const expected = this._topDownActionArity(k);\n if (actual !== expected) {\n let details;\n if (k === '_iter' || k === '_nonterminal') {\n details =\n `it should use a rest parameter, e.g. \\`${k}(...children) {}\\`. ` +\n 'NOTE: this is new in Ohm v16 — see https://ohmjs.org/d/ati for details.';\n } else {\n details = `expected ${expected}, got ${actual}`;\n }\n problems.push(`Semantic action '${k}' has the wrong arity: ${details}`);\n }\n }\n if (problems.length > 0) {\n const prettyProblems = problems.map(problem => '- ' + problem);\n const error = new Error(\n [\n `Found errors in the action dictionary of the '${name}' ${what}:`,\n ...prettyProblems,\n ].join('\\n'),\n );\n error.problems = problems;\n throw error;\n }\n }\n\n // Return the expected arity for a semantic action named `actionName`, which\n // is either a rule name or a special action name like '_nonterminal'.\n _topDownActionArity(actionName) {\n // All special actions have an expected arity of 0, though all but _terminal\n // are expected to use the rest parameter syntax (e.g. `_iter(...children)`).\n // This is considered to have arity 0, i.e. `((...args) => {}).length` is 0.\n return SPECIAL_ACTION_NAMES.includes(actionName) ?\n 0 :\n this.rules[actionName].body.getArity();\n }\n\n _inheritsFrom(grammar) {\n let g = this.superGrammar;\n while (g) {\n if (g.equals(grammar, true)) {\n return true;\n }\n g = g.superGrammar;\n }\n return false;\n }\n\n toRecipe(superGrammarExpr = undefined) {\n const metaInfo = {};\n // Include the grammar source if it is available.\n if (this.source) {\n metaInfo.source = this.source.contents;\n }\n\n let startRule = null;\n if (this.defaultStartRule) {\n startRule = this.defaultStartRule;\n }\n\n const rules = {};\n Object.keys(this.rules).forEach(ruleName => {\n const ruleInfo = this.rules[ruleName];\n const {body} = ruleInfo;\n const isDefinition = !this.superGrammar || !this.superGrammar.rules[ruleName];\n\n let operation;\n if (isDefinition) {\n operation = 'define';\n } else {\n operation = body instanceof pexprs.Extend ? 'extend' : 'override';\n }\n\n const metaInfo = {};\n if (ruleInfo.source && this.source) {\n const adjusted = ruleInfo.source.relativeTo(this.source);\n metaInfo.sourceInterval = [adjusted.startIdx, adjusted.endIdx];\n }\n\n const description = isDefinition ? ruleInfo.description : null;\n const bodyRecipe = body.outputRecipe(ruleInfo.formals, this.source);\n\n rules[ruleName] = [\n operation, // \"define\"/\"extend\"/\"override\"\n metaInfo,\n description,\n ruleInfo.formals,\n bodyRecipe,\n ];\n });\n\n // If the caller provided an expression to use for the supergrammar, use that.\n // Otherwise, if the supergrammar is a user grammar, use its recipe inline.\n let superGrammarOutput = 'null';\n if (superGrammarExpr) {\n superGrammarOutput = superGrammarExpr;\n } else if (this.superGrammar && !this.superGrammar.isBuiltIn()) {\n superGrammarOutput = this.superGrammar.toRecipe();\n }\n\n const recipeElements = [\n ...['grammar', metaInfo, this.name].map(JSON.stringify),\n superGrammarOutput,\n ...[startRule, rules].map(JSON.stringify),\n ];\n return jsonToJS(`[${recipeElements.join(',')}]`);\n }\n\n // TODO: Come up with better names for these methods.\n // TODO: Write the analog of these methods for inherited attributes.\n toOperationActionDictionaryTemplate() {\n return this._toOperationOrAttributeActionDictionaryTemplate();\n }\n toAttributeActionDictionaryTemplate() {\n return this._toOperationOrAttributeActionDictionaryTemplate();\n }\n\n _toOperationOrAttributeActionDictionaryTemplate() {\n // TODO: add the super-grammar's templates at the right place, e.g., a case for AddExpr_plus\n // should appear next to other cases of AddExpr.\n\n const sb = new common.StringBuffer();\n sb.append('{');\n\n let first = true;\n // eslint-disable-next-line guard-for-in\n for (const ruleName in this.rules) {\n const {body} = this.rules[ruleName];\n if (first) {\n first = false;\n } else {\n sb.append(',');\n }\n sb.append('\\n');\n sb.append(' ');\n this.addSemanticActionTemplate(ruleName, body, sb);\n }\n\n sb.append('\\n}');\n return sb.contents();\n }\n\n addSemanticActionTemplate(ruleName, body, sb) {\n sb.append(ruleName);\n sb.append(': function(');\n const arity = this._topDownActionArity(ruleName);\n sb.append(common.repeat('_', arity).join(', '));\n sb.append(') {\\n');\n sb.append(' }');\n }\n\n // Parse a string which expresses a rule application in this grammar, and return the\n // resulting Apply node.\n parseApplication(str) {\n let app;\n if (str.indexOf('<') === -1) {\n // simple application\n app = new pexprs.Apply(str);\n } else {\n // parameterized application\n const cst = ohmGrammar.match(str, 'Base_application');\n app = buildGrammar(cst, {});\n }\n\n // Ensure that the application is valid.\n if (!(app.ruleName in this.rules)) {\n throw errors.undeclaredRule(app.ruleName, this.name);\n }\n const {formals} = this.rules[app.ruleName];\n if (formals.length !== app.args.length) {\n const {source} = this.rules[app.ruleName];\n throw errors.wrongNumberOfParameters(\n app.ruleName,\n formals.length,\n app.args.length,\n source,\n );\n }\n return app;\n }\n\n _setUpMatchState(state) {\n if (this._matchStateInitializer) {\n this._matchStateInitializer(state);\n }\n }\n}\n\n// The following grammar contains a few rules that couldn't be written in \"userland\".\n// At the bottom of src/main.js, we create a sub-grammar of this grammar that's called\n// `BuiltInRules`. That grammar contains several convenience rules, e.g., `letter` and\n// `digit`, and is implicitly the super-grammar of any grammar whose super-grammar\n// isn't specified.\nGrammar.ProtoBuiltInRules = new Grammar(\n 'ProtoBuiltInRules', // name\n undefined, // supergrammar\n {\n any: {\n body: pexprs.any,\n formals: [],\n description: 'any character',\n primitive: true,\n },\n end: {\n body: pexprs.end,\n formals: [],\n description: 'end of input',\n primitive: true,\n },\n\n caseInsensitive: {\n body: new pexprs.CaseInsensitiveTerminal(new pexprs.Param(0)),\n formals: ['str'],\n primitive: true,\n },\n lower: {\n body: new pexprs.UnicodeChar('Ll'),\n formals: [],\n description: 'a lowercase letter',\n primitive: true,\n },\n upper: {\n body: new pexprs.UnicodeChar('Lu'),\n formals: [],\n description: 'an uppercase letter',\n primitive: true,\n },\n // Union of Lt (titlecase), Lm (modifier), and Lo (other), i.e. any letter not in Ll or Lu.\n unicodeLtmo: {\n body: new pexprs.UnicodeChar('Ltmo'),\n formals: [],\n description: 'a Unicode character in Lt, Lm, or Lo',\n primitive: true,\n },\n\n // These rules are not truly primitive (they could be written in userland) but are defined\n // here for bootstrapping purposes.\n spaces: {\n body: new pexprs.Star(new pexprs.Apply('space')),\n formals: [],\n },\n space: {\n body: new pexprs.Range('\\x00', ' '),\n formals: [],\n description: 'a space',\n },\n },\n);\n\n// This method is called from main.js once Ohm has loaded.\nGrammar.initApplicationParser = function(grammar, builderFn) {\n ohmGrammar = grammar;\n buildGrammar = builderFn;\n};\n","import {Grammar} from './Grammar.js';\nimport {InputStream} from './InputStream.js';\nimport {getDuplicates} from './common.js';\nimport * as errors from './errors.js';\nimport * as pexprs from './pexprs.js';\n\n// --------------------------------------------------------------------\n// Private Stuff\n// --------------------------------------------------------------------\n\n// Constructors\n\nexport class GrammarDecl {\n constructor(name) {\n this.name = name;\n }\n\n // Helpers\n\n sourceInterval(startIdx, endIdx) {\n return this.source.subInterval(startIdx, endIdx - startIdx);\n }\n\n ensureSuperGrammar() {\n if (!this.superGrammar) {\n this.withSuperGrammar(\n // TODO: The conditional expression below is an ugly hack. It's kind of ok because\n // I doubt anyone will ever try to declare a grammar called `BuiltInRules`. Still,\n // we should try to find a better way to do this.\n this.name === 'BuiltInRules' ? Grammar.ProtoBuiltInRules : Grammar.BuiltInRules,\n );\n }\n return this.superGrammar;\n }\n\n ensureSuperGrammarRuleForOverriding(name, source) {\n const ruleInfo = this.ensureSuperGrammar().rules[name];\n if (!ruleInfo) {\n throw errors.cannotOverrideUndeclaredRule(name, this.superGrammar.name, source);\n }\n return ruleInfo;\n }\n\n installOverriddenOrExtendedRule(name, formals, body, source) {\n const duplicateParameterNames = getDuplicates(formals);\n if (duplicateParameterNames.length > 0) {\n throw errors.duplicateParameterNames(name, duplicateParameterNames, source);\n }\n const ruleInfo = this.ensureSuperGrammar().rules[name];\n const expectedFormals = ruleInfo.formals;\n const expectedNumFormals = expectedFormals ? expectedFormals.length : 0;\n if (formals.length !== expectedNumFormals) {\n throw errors.wrongNumberOfParameters(name, expectedNumFormals, formals.length, source);\n }\n return this.install(name, formals, body, ruleInfo.description, source);\n }\n\n install(name, formals, body, description, source, primitive = false) {\n this.rules[name] = {\n body: body.introduceParams(formals),\n formals,\n description,\n source,\n primitive,\n };\n return this;\n }\n\n // Stuff that you should only do once\n\n withSuperGrammar(superGrammar) {\n if (this.superGrammar) {\n throw new Error('the super grammar of a GrammarDecl cannot be set more than once');\n }\n this.superGrammar = superGrammar;\n this.rules = Object.create(superGrammar.rules);\n\n // Grammars with an explicit supergrammar inherit a default start rule.\n if (!superGrammar.isBuiltIn()) {\n this.defaultStartRule = superGrammar.defaultStartRule;\n }\n return this;\n }\n\n withDefaultStartRule(ruleName) {\n this.defaultStartRule = ruleName;\n return this;\n }\n\n withSource(source) {\n this.source = new InputStream(source).interval(0, source.length);\n return this;\n }\n\n // Creates a Grammar instance, and if it passes the sanity checks, returns it.\n build() {\n const grammar = new Grammar(\n this.name,\n this.ensureSuperGrammar(),\n this.rules,\n this.defaultStartRule,\n );\n // Initialize internal props that are inherited from the super grammar.\n grammar._matchStateInitializer = grammar.superGrammar._matchStateInitializer;\n grammar.supportsIncrementalParsing = grammar.superGrammar.supportsIncrementalParsing;\n\n // TODO: change the pexpr.prototype.assert... methods to make them add\n // exceptions to an array that's provided as an arg. Then we'll be able to\n // show more than one error of the same type at a time.\n // TODO: include the offending pexpr in the errors, that way we can show\n // the part of the source that caused it.\n const grammarErrors = [];\n let grammarHasInvalidApplications = false;\n Object.keys(grammar.rules).forEach(ruleName => {\n const {body} = grammar.rules[ruleName];\n try {\n body.assertChoicesHaveUniformArity(ruleName);\n } catch (e) {\n grammarErrors.push(e);\n }\n try {\n body.assertAllApplicationsAreValid(ruleName, grammar);\n } catch (e) {\n grammarErrors.push(e);\n grammarHasInvalidApplications = true;\n }\n });\n if (!grammarHasInvalidApplications) {\n // The following check can only be done if the grammar has no invalid applications.\n Object.keys(grammar.rules).forEach(ruleName => {\n const {body} = grammar.rules[ruleName];\n try {\n body.assertIteratedExprsAreNotNullable(grammar, []);\n } catch (e) {\n grammarErrors.push(e);\n }\n });\n }\n if (grammarErrors.length > 0) {\n errors.throwErrors(grammarErrors);\n }\n if (this.source) {\n grammar.source = this.source;\n }\n\n return grammar;\n }\n\n // Rule declarations\n\n define(name, formals, body, description, source, primitive) {\n this.ensureSuperGrammar();\n if (this.superGrammar.rules[name]) {\n throw errors.duplicateRuleDeclaration(name, this.name, this.superGrammar.name, source);\n } else if (this.rules[name]) {\n throw errors.duplicateRuleDeclaration(name, this.name, this.name, source);\n }\n const duplicateParameterNames = getDuplicates(formals);\n if (duplicateParameterNames.length > 0) {\n throw errors.duplicateParameterNames(name, duplicateParameterNames, source);\n }\n return this.install(name, formals, body, description, source, primitive);\n }\n\n override(name, formals, body, descIgnored, source) {\n this.ensureSuperGrammarRuleForOverriding(name, source);\n this.installOverriddenOrExtendedRule(name, formals, body, source);\n return this;\n }\n\n extend(name, formals, fragment, descIgnored, source) {\n const ruleInfo = this.ensureSuperGrammar().rules[name];\n if (!ruleInfo) {\n throw errors.cannotExtendUndeclaredRule(name, this.superGrammar.name, source);\n }\n const body = new pexprs.Extend(this.superGrammar, name, fragment);\n body.source = fragment.source;\n this.installOverriddenOrExtendedRule(name, formals, body, source);\n return this;\n }\n}\n","import {Grammar} from './Grammar.js';\nimport {GrammarDecl} from './GrammarDecl.js';\nimport * as pexprs from './pexprs.js';\n\n// --------------------------------------------------------------------\n// Private stuff\n// --------------------------------------------------------------------\n\nexport class Builder {\n constructor() {\n this.currentDecl = null;\n this.currentRuleName = null;\n }\n\n newGrammar(name) {\n return new GrammarDecl(name);\n }\n\n grammar(metaInfo, name, superGrammar, defaultStartRule, rules) {\n const gDecl = new GrammarDecl(name);\n if (superGrammar) {\n // `superGrammar` may be a recipe (i.e. an Array), or an actual grammar instance.\n gDecl.withSuperGrammar(\n superGrammar instanceof Grammar ? superGrammar : this.fromRecipe(superGrammar),\n );\n }\n if (defaultStartRule) {\n gDecl.withDefaultStartRule(defaultStartRule);\n }\n if (metaInfo && metaInfo.source) {\n gDecl.withSource(metaInfo.source);\n }\n\n this.currentDecl = gDecl;\n Object.keys(rules).forEach(ruleName => {\n this.currentRuleName = ruleName;\n const ruleRecipe = rules[ruleName];\n\n const action = ruleRecipe[0]; // define/extend/override\n const metaInfo = ruleRecipe[1];\n const description = ruleRecipe[2];\n const formals = ruleRecipe[3];\n const body = this.fromRecipe(ruleRecipe[4]);\n\n let source;\n if (gDecl.source && metaInfo && metaInfo.sourceInterval) {\n source = gDecl.source.subInterval(\n metaInfo.sourceInterval[0],\n metaInfo.sourceInterval[1] - metaInfo.sourceInterval[0],\n );\n }\n gDecl[action](ruleName, formals, body, description, source);\n });\n this.currentRuleName = this.currentDecl = null;\n return gDecl.build();\n }\n\n terminal(x) {\n return new pexprs.Terminal(x);\n }\n\n range(from, to) {\n return new pexprs.Range(from, to);\n }\n\n param(index) {\n return new pexprs.Param(index);\n }\n\n alt(...termArgs) {\n let terms = [];\n for (let arg of termArgs) {\n if (!(arg instanceof pexprs.PExpr)) {\n arg = this.fromRecipe(arg);\n }\n if (arg instanceof pexprs.Alt) {\n terms = terms.concat(arg.terms);\n } else {\n terms.push(arg);\n }\n }\n return terms.length === 1 ? terms[0] : new pexprs.Alt(terms);\n }\n\n seq(...factorArgs) {\n let factors = [];\n for (let arg of factorArgs) {\n if (!(arg instanceof pexprs.PExpr)) {\n arg = this.fromRecipe(arg);\n }\n if (arg instanceof pexprs.Seq) {\n factors = factors.concat(arg.factors);\n } else {\n factors.push(arg);\n }\n }\n return factors.length === 1 ? factors[0] : new pexprs.Seq(factors);\n }\n\n star(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Star(expr);\n }\n\n plus(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Plus(expr);\n }\n\n opt(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Opt(expr);\n }\n\n not(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Not(expr);\n }\n\n lookahead(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Lookahead(expr);\n }\n\n lex(expr) {\n if (!(expr instanceof pexprs.PExpr)) {\n expr = this.fromRecipe(expr);\n }\n return new pexprs.Lex(expr);\n }\n\n app(ruleName, optParams) {\n if (optParams && optParams.length > 0) {\n optParams = optParams.map(function(param) {\n return param instanceof pexprs.PExpr ? param : this.fromRecipe(param);\n }, this);\n }\n return new pexprs.Apply(ruleName, optParams);\n }\n\n // Note that unlike other methods in this class, this method cannot be used as a\n // convenience constructor. It only works with recipes, because it relies on\n // `this.currentDecl` and `this.currentRuleName` being set.\n splice(beforeTerms, afterTerms) {\n return new pexprs.Splice(\n this.currentDecl.superGrammar,\n this.currentRuleName,\n beforeTerms.map(term => this.fromRecipe(term)),\n afterTerms.map(term => this.fromRecipe(term)),\n );\n }\n\n fromRecipe(recipe) {\n // the meta-info of 'grammar' is processed in Builder.grammar\n const args = recipe[0] === 'grammar' ? recipe.slice(1) : recipe.slice(2);\n const result = this[recipe[0]](...args);\n\n const metaInfo = recipe[1];\n if (metaInfo) {\n if (metaInfo.sourceInterval && this.currentDecl) {\n result.withSource(this.currentDecl.sourceInterval(...metaInfo.sourceInterval));\n }\n }\n return result;\n }\n}\n","import {Builder} from './Builder.js';\n\nexport function makeRecipe(recipe) {\n if (typeof recipe === 'function') {\n return recipe.call(new Builder());\n } else {\n if (typeof recipe === 'string') {\n // stringified JSON recipe\n recipe = JSON.parse(recipe);\n }\n return new Builder().fromRecipe(recipe);\n }\n}\n","import {makeRecipe} from '../src/makeRecipe.js';\nexport default makeRecipe([\"grammar\",{\"source\":\"BuiltInRules {\\n\\n alnum (an alpha-numeric character)\\n = letter\\n | digit\\n\\n letter (a letter)\\n = lower\\n | upper\\n | unicodeLtmo\\n\\n digit (a digit)\\n = \\\"0\\\"..\\\"9\\\"\\n\\n hexDigit (a hexadecimal digit)\\n = digit\\n | \\\"a\\\"..\\\"f\\\"\\n | \\\"A\\\"..\\\"F\\\"\\n\\n ListOf<elem, sep>\\n = NonemptyListOf<elem, sep>\\n | EmptyListOf<elem, sep>\\n\\n NonemptyListOf<elem, sep>\\n = elem (sep elem)*\\n\\n EmptyListOf<elem, sep>\\n = /* nothing */\\n\\n listOf<elem, sep>\\n = nonemptyListOf<elem, sep>\\n | emptyListOf<elem, sep>\\n\\n nonemptyListOf<elem, sep>\\n = elem (sep elem)*\\n\\n emptyListOf<elem, sep>\\n = /* nothing */\\n\\n // Allows a syntactic rule application within a lexical context.\\n applySyntactic<app> = app\\n}\"},\"BuiltInRules\",null,null,{\"alnum\":[\"define\",{\"sourceInterval\":[18,78]},\"an alpha-numeric character\",[],[\"alt\",{\"sourceInterval\":[60,78]},[\"app\",{\"sourceInterval\":[60,66]},\"letter\",[]],[\"app\",{\"sourceInterval\":[73,78]},\"digit\",[]]]],\"letter\":[\"define\",{\"sourceInterval\":[82,142]},\"a letter\",[],[\"alt\",{\"sourceInterval\":[107,142]},[\"app\",{\"sourceInterval\":[107,112]},\"lower\",[]],[\"app\",{\"sourceInterval\":[119,124]},\"upper\",[]],[\"app\",{\"sourceInterval\":[131,142]},\"unicodeLtmo\",[]]]],\"digit\":[\"define\",{\"sourceInterval\":[146,177]},\"a digit\",[],[\"range\",{\"sourceInterval\":[169,177]},\"0\",\"9\"]],\"hexDigit\":[\"define\",{\"sourceInterval\":[181,254]},\"a hexadecimal digit\",[],[\"alt\",{\"sourceInterval\":[219,254]},[\"app\",{\"sourceInterval\":[219,224]},\"digit\",[]],[\"range\",{\"sourceInterval\":[231,239]},\"a\",\"f\"],[\"range\",{\"sourceInterval\":[246,254]},\"A\",\"F\"]]],\"ListOf\":[\"define\",{\"sourceInterval\":[258,336]},null,[\"elem\",\"sep\"],[\"alt\",{\"sourceInterval\":[282,336]},[\"app\",{\"sourceInterval\":[282,307]},\"NonemptyListOf\",[[\"param\",{\"sourceInterval\":[297,301]},0],[\"param\",{\"sourceInterval\":[303,306]},1]]],[\"app\",{\"sourceInterval\":[314,336]},\"EmptyListOf\",[[\"param\",{\"sourceInterval\":[326,330]},0],[\"param\",{\"sourceInterval\":[332,335]},1]]]]],\"NonemptyListOf\":[\"define\",{\"sourceInterval\":[340,388]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[372,388]},[\"param\",{\"sourceInterval\":[372,376]},0],[\"star\",{\"sourceInterval\":[377,388]},[\"seq\",{\"sourceInterval\":[378,386]},[\"param\",{\"sourceInterval\":[378,381]},1],[\"param\",{\"sourceInterval\":[382,386]},0]]]]],\"EmptyListOf\":[\"define\",{\"sourceInterval\":[392,434]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[438,438]}]],\"listOf\":[\"define\",{\"sourceInterval\":[438,516]},null,[\"elem\",\"sep\"],[\"alt\",{\"sourceInterval\":[462,516]},[\"app\",{\"sourceInterval\":[462,487]},\"nonemptyListOf\",[[\"param\",{\"sourceInterval\":[477,481]},0],[\"param\",{\"sourceInterval\":[483,486]},1]]],[\"app\",{\"sourceInterval\":[494,516]},\"emptyListOf\",[[\"param\",{\"sourceInterval\":[506,510]},0],[\"param\",{\"sourceInterval\":[512,515]},1]]]]],\"nonemptyListOf\":[\"define\",{\"sourceInterval\":[520,568]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[552,568]},[\"param\",{\"sourceInterval\":[552,556]},0],[\"star\",{\"sourceInterval\":[557,568]},[\"seq\",{\"sourceInterval\":[558,566]},[\"param\",{\"sourceInterval\":[558,561]},1],[\"param\",{\"sourceInterval\":[562,566]},0]]]]],\"emptyListOf\":[\"define\",{\"sourceInterval\":[572,682]},null,[\"elem\",\"sep\"],[\"seq\",{\"sourceInterval\":[685,685]}]],\"applySyntactic\":[\"define\",{\"sourceInterval\":[685,710]},null,[\"app\"],[\"param\",{\"sourceInterval\":[707,710]},0]]}]);\n","import BuiltInRules from '../dist/built-in-rules.js';\nimport {Grammar} from './Grammar.js';\nimport {announceBuiltInRules} from './util.js';\n\nGrammar.BuiltInRules = BuiltInRules;\nannounceBuiltInRules(Grammar.BuiltInRules);\n\n// During the bootstrap process, we instantiate some grammars that require\n// the built-in rules to be loaded first (e.g., ohm-grammar.ohm). By\n// exporting `makeRecipe` here, the recipes for those grammars can encode\n// that dependency by importing it from this module.\nexport {makeRecipe} from './makeRecipe.js';\n","import {makeRecipe} from '../src/main-kernel.js';\nexport default makeRecipe([\"grammar\",{\"source\":\"Ohm {\\n\\n Grammars\\n = Grammar*\\n\\n Grammar\\n = ident SuperGrammar? \\\"{\\\" Rule* \\\"}\\\"\\n\\n SuperGrammar\\n = \\\"<:\\\" ident\\n\\n Rule\\n = ident Formals? ruleDescr? \\\"=\\\" RuleBody -- define\\n | ident Formals? \\\":=\\\" OverrideRuleBody -- override\\n | ident Formals? \\\"+=\\\" RuleBody -- extend\\n\\n RuleBody\\n = \\\"|\\\"? NonemptyListOf<TopLevelTerm, \\\"|\\\">\\n\\n TopLevelTerm\\n = Seq caseName -- inline\\n | Seq\\n\\n OverrideRuleBody\\n = \\\"|\\\"? NonemptyListOf<OverrideTopLevelTerm, \\\"|\\\">\\n\\n OverrideTopLevelTerm\\n = \\\"...\\\" -- superSplice\\n | TopLevelTerm\\n\\n Formals\\n = \\\"<\\\" ListOf<ident, \\\",\\\"> \\\">\\\"\\n\\n Params\\n = \\\"<\\\" ListOf<Seq, \\\",\\\"> \\\">\\\"\\n\\n Alt\\n = NonemptyListOf<Seq, \\\"|\\\">\\n\\n Seq\\n = Iter*\\n\\n Iter\\n = Pred \\\"*\\\" -- star\\n | Pred \\\"+\\\" -- plus\\n | Pred \\\"?\\\" -- opt\\n | Pred\\n\\n Pred\\n = \\\"~\\\" Lex -- not\\n | \\\"&\\\" Lex -- lookahead\\n | Lex\\n\\n Lex\\n = \\\"#\\\" Base -- lex\\n | Base\\n\\n Base\\n = ident Params? ~(ruleDescr? \\\"=\\\" | \\\":=\\\" | \\\"+=\\\") -- application\\n | oneCharTerminal \\\"..\\\" oneCharTerminal -- range\\n | terminal -- terminal\\n | \\\"(\\\" Alt \\\")\\\" -- paren\\n\\n ruleDescr (a rule description)\\n = \\\"(\\\" ruleDescrText \\\")\\\"\\n\\n ruleDescrText\\n = (~\\\")\\\" any)*\\n\\n caseName\\n = \\\"--\\\" (~\\\"\\\\n\\\" space)* name (~\\\"\\\\n\\\" space)* (\\\"\\\\n\\\" | &\\\"}\\\")\\n\\n name (a name)\\n = nameFirst nameRest*\\n\\n nameFirst\\n = \\\"_\\\"\\n | letter\\n\\n nameRest\\n = \\\"_\\\"\\n | alnum\\n\\n ident (an identifier)\\n = name\\n\\n terminal\\n = \\\"\\\\\\\"\\\" terminalChar* \\\"\\\\\\\"\\\"\\n\\n oneCharTerminal\\n = \\\"\\\\\\\"\\\" terminalChar \\\"\\\\\\\"\\\"\\n\\n terminalChar\\n = escapeChar\\n | ~\\\"\\\\\\\\\\\" ~\\\"\\\\\\\"\\\" ~\\\"\\\\n\\\" \\\"\\\\u{0}\\\"..\\\"\\\\u{10FFFF}\\\"\\n\\n escapeChar (an escape sequence)\\n = \\\"\\\\\\\\\\\\\\\\\\\" -- backslash\\n | \\\"\\\\\\\\\\\\\\\"\\\" -- doubleQuote\\n | \\\"\\\\\\\\\\\\'\\\" -- singleQuote\\n | \\\"\\\\\\\\b\\\" -- backspace\\n | \\\"\\\\\\\\n\\\" -- lineFeed\\n | \\\"\\\\\\\\r\\\" -- carriageReturn\\n | \\\"\\\\\\\\t\\\" -- tab\\n | \\\"\\\\\\\\u{\\\" hexDigit hexDigit? hexDigit?\\n hexDigit? hexDigit? hexDigit? \\\"}\\\" -- unicodeCodePoint\\n | \\\"\\\\\\\\u\\\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\\n | \\\"\\\\\\\\x\\\" hexDigit hexDigit -- hexEscape\\n\\n space\\n += comment\\n\\n comment\\n = \\\"//\\\" (~\\\"\\\\n\\\" any)* &(\\\"\\\\n\\\" | end) -- singleLine\\n | \\\"/*\\\" (~\\\"*/\\\" any)* \\\"*/\\\" -- multiLine\\n\\n tokens = token*\\n\\n token = caseName | comment | ident | operator | punctuation | terminal | any\\n\\n operator = \\\"<:\\\" | \\\"=\\\" | \\\":=\\\" | \\\"+=\\\" | \\\"*\\\" | \\\"+\\\" | \\\"?\\\" | \\\"~\\\" | \\\"&\\\"\\n\\n punctuation = \\\"<\\\" | \\\">\\\" | \\\",\\\" | \\\"--\\\"\\n}\"},\"Ohm\",null,\"Grammars\",{\"Grammars\":[\"define\",{\"sourceInterval\":[9,32]},null,[],[\"star\",{\"sourceInterval\":[24,32]},[\"app\",{\"sourceInterval\":[24,31]},\"Grammar\",[]]]],\"Grammar\":[\"define\",{\"sourceInterval\":[36,83]},null,[],[\"seq\",{\"sourceInterval\":[50,83]},[\"app\",{\"sourceInterval\":[50,55]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[56,69]},[\"app\",{\"sourceInterval\":[56,68]},\"SuperGrammar\",[]]],[\"terminal\",{\"sourceInterval\":[70,73]},\"{\"],[\"star\",{\"sourceInterval\":[74,79]},[\"app\",{\"sourceInterval\":[74,78]},\"Rule\",[]]],[\"terminal\",{\"sourceInterval\":[80,83]},\"}\"]]],\"SuperGrammar\":[\"define\",{\"sourceInterval\":[87,116]},null,[],[\"seq\",{\"sourceInterval\":[106,116]},[\"terminal\",{\"sourceInterval\":[106,110]},\"<:\"],[\"app\",{\"sourceInterval\":[111,116]},\"ident\",[]]]],\"Rule_define\":[\"define\",{\"sourceInterval\":[131,181]},null,[],[\"seq\",{\"sourceInterval\":[131,170]},[\"app\",{\"sourceInterval\":[131,136]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[137,145]},[\"app\",{\"sourceInterval\":[137,144]},\"Formals\",[]]],[\"opt\",{\"sourceInterval\":[146,156]},[\"app\",{\"sourceInterval\":[146,155]},\"ruleDescr\",[]]],[\"terminal\",{\"sourceInterval\":[157,160]},\"=\"],[\"app\",{\"sourceInterval\":[162,170]},\"RuleBody\",[]]]],\"Rule_override\":[\"define\",{\"sourceInterval\":[188,248]},null,[],[\"seq\",{\"sourceInterval\":[188,235]},[\"app\",{\"sourceInterval\":[188,193]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[194,202]},[\"app\",{\"sourceInterval\":[194,201]},\"Formals\",[]]],[\"terminal\",{\"sourceInterval\":[214,218]},\":=\"],[\"app\",{\"sourceInterval\":[219,235]},\"OverrideRuleBody\",[]]]],\"Rule_extend\":[\"define\",{\"sourceInterval\":[255,305]},null,[],[\"seq\",{\"sourceInterval\":[255,294]},[\"app\",{\"sourceInterval\":[255,260]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[261,269]},[\"app\",{\"sourceInterval\":[261,268]},\"Formals\",[]]],[\"terminal\",{\"sourceInterval\":[281,285]},\"+=\"],[\"app\",{\"sourceInterval\":[286,294]},\"RuleBody\",[]]]],\"Rule\":[\"define\",{\"sourceInterval\":[120,305]},null,[],[\"alt\",{\"sourceInterval\":[131,305]},[\"app\",{\"sourceInterval\":[131,170]},\"Rule_define\",[]],[\"app\",{\"sourceInterval\":[188,235]},\"Rule_override\",[]],[\"app\",{\"sourceInterval\":[255,294]},\"Rule_extend\",[]]]],\"RuleBody\":[\"define\",{\"sourceInterval\":[309,362]},null,[],[\"seq\",{\"sourceInterval\":[324,362]},[\"opt\",{\"sourceInterval\":[324,328]},[\"terminal\",{\"sourceInterval\":[324,327]},\"|\"]],[\"app\",{\"sourceInterval\":[329,362]},\"NonemptyListOf\",[[\"app\",{\"sourceInterval\":[344,356]},\"TopLevelTerm\",[]],[\"terminal\",{\"sourceInterval\":[358,361]},\"|\"]]]]],\"TopLevelTerm_inline\":[\"define\",{\"sourceInterval\":[385,408]},null,[],[\"seq\",{\"sourceInterval\":[385,397]},[\"app\",{\"sourceInterval\":[385,388]},\"Seq\",[]],[\"app\",{\"sourceInterval\":[389,397]},\"caseName\",[]]]],\"TopLevelTerm\":[\"define\",{\"sourceInterval\":[366,418]},null,[],[\"alt\",{\"sourceInterval\":[385,418]},[\"app\",{\"sourceInterval\":[385,397]},\"TopLevelTerm_inline\",[]],[\"app\",{\"sourceInterval\":[415,418]},\"Seq\",[]]]],\"OverrideRuleBody\":[\"define\",{\"sourceInterval\":[422,491]},null,[],[\"seq\",{\"sourceInterval\":[445,491]},[\"opt\",{\"sourceInterval\":[445,449]},[\"terminal\",{\"sourceInterval\":[445,448]},\"|\"]],[\"app\",{\"sourceInterval\":[450,491]},\"NonemptyListOf\",[[\"app\",{\"sourceInterval\":[465,485]},\"OverrideTopLevelTerm\",[]],[\"terminal\",{\"sourceInterval\":[487,490]},\"|\"]]]]],\"OverrideTopLevelTerm_superSplice\":[\"define\",{\"sourceInterval\":[522,543]},null,[],[\"terminal\",{\"sourceInterval\":[522,527]},\"...\"]],\"OverrideTopLevelTerm\":[\"define\",{\"sourceInterval\":[495,562]},null,[],[\"alt\",{\"sourceInterval\":[522,562]},[\"app\",{\"sourceInterval\":[522,527]},\"OverrideTopLevelTerm_superSplice\",[]],[\"app\",{\"sourceInterval\":[550,562]},\"TopLevelTerm\",[]]]],\"Formals\":[\"define\",{\"sourceInterval\":[566,606]},null,[],[\"seq\",{\"sourceInterval\":[580,606]},[\"terminal\",{\"sourceInterval\":[580,583]},\"<\"],[\"app\",{\"sourceInterval\":[584,602]},\"ListOf\",[[\"app\",{\"sourceInterval\":[591,596]},\"ident\",[]],[\"terminal\",{\"sourceInterval\":[598,601]},\",\"]]],[\"terminal\",{\"sourceInterval\":[603,606]},\">\"]]],\"Params\":[\"define\",{\"sourceInterval\":[610,647]},null,[],[\"seq\",{\"sourceInterval\":[623,647]},[\"terminal\",{\"sourceInterval\":[623,626]},\"<\"],[\"app\",{\"sourceInterval\":[627,643]},\"ListOf\",[[\"app\",{\"sourceInterval\":[634,637]},\"Seq\",[]],[\"terminal\",{\"sourceInterval\":[639,642]},\",\"]]],[\"terminal\",{\"sourceInterval\":[644,647]},\">\"]]],\"Alt\":[\"define\",{\"sourceInterval\":[651,685]},null,[],[\"app\",{\"sourceInterval\":[661,685]},\"NonemptyListOf\",[[\"app\",{\"sourceInterval\":[676,679]},\"Seq\",[]],[\"terminal\",{\"sourceInterval\":[681,684]},\"|\"]]]],\"Seq\":[\"define\",{\"sourceInterval\":[689,704]},null,[],[\"star\",{\"sourceInterval\":[699,704]},[\"app\",{\"sourceInterval\":[699,703]},\"Iter\",[]]]],\"Iter_star\":[\"define\",{\"sourceInterval\":[719,736]},null,[],[\"seq\",{\"sourceInterval\":[719,727]},[\"app\",{\"sourceInterval\":[719,723]},\"Pred\",[]],[\"terminal\",{\"sourceInterval\":[724,727]},\"*\"]]],\"Iter_plus\":[\"define\",{\"sourceInterval\":[743,760]},null,[],[\"seq\",{\"sourceInterval\":[743,751]},[\"app\",{\"sourceInterval\":[743,747]},\"Pred\",[]],[\"terminal\",{\"sourceInterval\":[748,751]},\"+\"]]],\"Iter_opt\":[\"define\",{\"sourceInterval\":[767,783]},null,[],[\"seq\",{\"sourceInterval\":[767,775]},[\"app\",{\"sourceInterval\":[767,771]},\"Pred\",[]],[\"terminal\",{\"sourceInterval\":[772,775]},\"?\"]]],\"Iter\":[\"define\",{\"sourceInterval\":[708,794]},null,[],[\"alt\",{\"sourceInterval\":[719,794]},[\"app\",{\"sourceInterval\":[719,727]},\"Iter_star\",[]],[\"app\",{\"sourceInterval\":[743,751]},\"Iter_plus\",[]],[\"app\",{\"sourceInterval\":[767,775]},\"Iter_opt\",[]],[\"app\",{\"sourceInterval\":[790,794]},\"Pred\",[]]]],\"Pred_not\":[\"define\",{\"sourceInterval\":[809,824]},null,[],[\"seq\",{\"sourceInterval\":[809,816]},[\"terminal\",{\"sourceInterval\":[809,812]},\"~\"],[\"app\",{\"sourceInterval\":[813,816]},\"Lex\",[]]]],\"Pred_lookahead\":[\"define\",{\"sourceInterval\":[831,852]},null,[],[\"seq\",{\"sourceInterval\":[831,838]},[\"terminal\",{\"sourceInterval\":[831,834]},\"&\"],[\"app\",{\"sourceInterval\":[835,838]},\"Lex\",[]]]],\"Pred\":[\"define\",{\"sourceInterval\":[798,862]},null,[],[\"alt\",{\"sourceInterval\":[809,862]},[\"app\",{\"sourceInterval\":[809,816]},\"Pred_not\",[]],[\"app\",{\"sourceInterval\":[831,838]},\"Pred_lookahead\",[]],[\"app\",{\"sourceInterval\":[859,862]},\"Lex\",[]]]],\"Lex_lex\":[\"define\",{\"sourceInterval\":[876,892]},null,[],[\"seq\",{\"sourceInterval\":[876,884]},[\"terminal\",{\"sourceInterval\":[876,879]},\"#\"],[\"app\",{\"sourceInterval\":[880,884]},\"Base\",[]]]],\"Lex\":[\"define\",{\"sourceInterval\":[866,903]},null,[],[\"alt\",{\"sourceInterval\":[876,903]},[\"app\",{\"sourceInterval\":[876,884]},\"Lex_lex\",[]],[\"app\",{\"sourceInterval\":[899,903]},\"Base\",[]]]],\"Base_application\":[\"define\",{\"sourceInterval\":[918,979]},null,[],[\"seq\",{\"sourceInterval\":[918,963]},[\"app\",{\"sourceInterval\":[918,923]},\"ident\",[]],[\"opt\",{\"sourceInterval\":[924,931]},[\"app\",{\"sourceInterval\":[924,930]},\"Params\",[]]],[\"not\",{\"sourceInterval\":[932,963]},[\"alt\",{\"sourceInterval\":[934,962]},[\"seq\",{\"sourceInterval\":[934,948]},[\"opt\",{\"sourceInterval\":[934,944]},[\"app\",{\"sourceInterval\":[934,943]},\"ruleDescr\",[]]],[\"terminal\",{\"sourceInterval\":[945,948]},\"=\"]],[\"terminal\",{\"sourceInterval\":[951,955]},\":=\"],[\"terminal\",{\"sourceInterval\":[958,962]},\"+=\"]]]]],\"Base_range\":[\"define\",{\"sourceInterval\":[986,1041]},null,[],[\"seq\",{\"sourceInterval\":[986,1022]},[\"app\",{\"sourceInterval\":[986,1001]},\"oneCharTerminal\",[]],[\"terminal\",{\"sourceInterval\":[1002,1006]},\"..\"],[\"app\",{\"sourceInterval\":[1007,1022]},\"oneCharTerminal\",[]]]],\"Base_terminal\":[\"define\",{\"sourceInterval\":[1048,1106]},null,[],[\"app\",{\"sourceInterval\":[1048,1056]},\"terminal\",[]]],\"Base_paren\":[\"define\",{\"sourceInterval\":[1113,1168]},null,[],[\"seq\",{\"sourceInterval\":[1113,1124]},[\"terminal\",{\"sourceInterval\":[1113,1116]},\"(\"],[\"app\",{\"sourceInterval\":[1117,1120]},\"Alt\",[]],[\"terminal\",{\"sourceInterval\":[1121,1124]},\")\"]]],\"Base\":[\"define\",{\"sourceInterval\":[907,1168]},null,[],[\"alt\",{\"sourceInterval\":[918,1168]},[\"app\",{\"sourceInterval\":[918,963]},\"Base_application\",[]],[\"app\",{\"sourceInterval\":[986,1022]},\"Base_range\",[]],[\"app\",{\"sourceInterval\":[1048,1056]},\"Base_terminal\",[]],[\"app\",{\"sourceInterval\":[1113,1124]},\"Base_paren\",[]]]],\"ruleDescr\":[\"define\",{\"sourceInterval\":[1172,1231]},\"a rule description\",[],[\"seq\",{\"sourceInterval\":[1210,1231]},[\"terminal\",{\"sourceInterval\":[1210,1213]},\"(\"],[\"app\",{\"sourceInterval\":[1214,1227]},\"ruleDescrText\",[]],[\"terminal\",{\"sourceInterval\":[1228,1231]},\")\"]]],\"ruleDescrText\":[\"define\",{\"sourceInterval\":[1235,1266]},null,[],[\"star\",{\"sourceInterval\":[1255,1266]},[\"seq\",{\"sourceInterval\":[1256,1264]},[\"not\",{\"sourceInterval\":[1256,1260]},[\"terminal\",{\"sourceInterval\":[1257,1260]},\")\"]],[\"app\",{\"sourceInterval\":[1261,1264]},\"any\",[]]]]],\"caseName\":[\"define\",{\"sourceInterval\":[1270,1338]},null,[],[\"seq\",{\"sourceInterval\":[1285,1338]},[\"terminal\",{\"sourceInterval\":[1285,1289]},\"--\"],[\"star\",{\"sourceInterval\":[1290,1304]},[\"seq\",{\"sourceInterval\":[1291,1302]},[\"not\",{\"sourceInterval\":[1291,1296]},[\"terminal\",{\"sourceInterval\":[1292,1296]},\"\\n\"]],[\"app\",{\"sourceInterval\":[1297,1302]},\"space\",[]]]],[\"app\",{\"sourceInterval\":[1305,1309]},\"name\",[]],[\"star\",{\"sourceInterval\":[1310,1324]},[\"seq\",{\"sourceInterval\":[1311,1322]},[\"not\",{\"sourceInterval\":[1311,1316]},[\"terminal\",{\"sourceInterval\":[1312,1316]},\"\\n\"]],[\"app\",{\"sourceInterval\":[1317,1322]},\"space\",[]]]],[\"alt\",{\"sourceInterval\":[1326,1337]},[\"terminal\",{\"sourceInterval\":[1326,1330]},\"\\n\"],[\"lookahead\",{\"sourceInterval\":[1333,1337]},[\"terminal\",{\"sourceInterval\":[1334,1337]},\"}\"]]]]],\"name\":[\"define\",{\"sourceInterval\":[1342,1382]},\"a name\",[],[\"seq\",{\"sourceInterval\":[1363,1382]},[\"app\",{\"sourceInterval\":[1363,1372]},\"nameFirst\",[]],[\"star\",{\"sourceInterval\":[1373,1382]},[\"app\",{\"sourceInterval\":[1373,1381]},\"nameRest\",[]]]]],\"nameFirst\":[\"define\",{\"sourceInterval\":[1386,1418]},null,[],[\"alt\",{\"sourceInterval\":[1402,1418]},[\"terminal\",{\"sourceInterval\":[1402,1405]},\"_\"],[\"app\",{\"sourceInterval\":[1412,1418]},\"letter\",[]]]],\"nameRest\":[\"define\",{\"sourceInterval\":[1422,1452]},null,[],[\"alt\",{\"sourceInterval\":[1437,1452]},[\"terminal\",{\"sourceInterval\":[1437,1440]},\"_\"],[\"app\",{\"sourceInterval\":[1447,1452]},\"alnum\",[]]]],\"ident\":[\"define\",{\"sourceInterval\":[1456,1489]},\"an identifier\",[],[\"app\",{\"sourceInterval\":[1485,1489]},\"name\",[]]],\"terminal\":[\"define\",{\"sourceInterval\":[1493,1531]},null,[],[\"seq\",{\"sourceInterval\":[1508,1531]},[\"terminal\",{\"sourceInterval\":[1508,1512]},\"\\\"\"],[\"star\",{\"sourceInterval\":[1513,1526]},[\"app\",{\"sourceInterval\":[1513,1525]},\"terminalChar\",[]]],[\"terminal\",{\"sourceInterval\":[1527,1531]},\"\\\"\"]]],\"oneCharTerminal\":[\"define\",{\"sourceInterval\":[1535,1579]},null,[],[\"seq\",{\"sourceInterval\":[1557,1579]},[\"terminal\",{\"sourceInterval\":[1557,1561]},\"\\\"\"],[\"app\",{\"sourceInterval\":[1562,1574]},\"terminalChar\",[]],[\"terminal\",{\"sourceInterval\":[1575,1579]},\"\\\"\"]]],\"terminalChar\":[\"define\",{\"sourceInterval\":[1583,1660]},null,[],[\"alt\",{\"sourceInterval\":[1602,1660]},[\"app\",{\"sourceInterval\":[1602,1612]},\"escapeChar\",[]],[\"seq\",{\"sourceInterval\":[1621,1660]},[\"not\",{\"sourceInterval\":[1621,1626]},[\"terminal\",{\"sourceInterval\":[1622,1626]},\"\\\\\"]],[\"not\",{\"sourceInterval\":[1627,1632]},[\"terminal\",{\"sourceInterval\":[1628,1632]},\"\\\"\"]],[\"not\",{\"sourceInterval\":[1633,1638]},[\"terminal\",{\"sourceInterval\":[1634,1638]},\"\\n\"]],[\"range\",{\"sourceInterval\":[1639,1660]},\"\\u0000\",\"􏿿\"]]]],\"escapeChar_backslash\":[\"define\",{\"sourceInterval\":[1703,1758]},null,[],[\"terminal\",{\"sourceInterval\":[1703,1709]},\"\\\\\\\\\"]],\"escapeChar_doubleQuote\":[\"define\",{\"sourceInterval\":[1765,1822]},null,[],[\"terminal\",{\"sourceInterval\":[1765,1771]},\"\\\\\\\"\"]],\"escapeChar_singleQuote\":[\"define\",{\"sourceInterval\":[1829,1886]},null,[],[\"terminal\",{\"sourceInterval\":[1829,1835]},\"\\\\'\"]],\"escapeChar_backspace\":[\"define\",{\"sourceInterval\":[1893,1948]},null,[],[\"terminal\",{\"sourceInterval\":[1893,1898]},\"\\\\b\"]],\"escapeChar_lineFeed\":[\"define\",{\"sourceInterval\":[1955,2009]},null,[],[\"terminal\",{\"sourceInterval\":[1955,1960]},\"\\\\n\"]],\"escapeChar_carriageReturn\":[\"define\",{\"sourceInterval\":[2016,2076]},null,[],[\"terminal\",{\"sourceInterval\":[2016,2021]},\"\\\\r\"]],\"escapeChar_tab\":[\"define\",{\"sourceInterval\":[2083,2132]},null,[],[\"terminal\",{\"sourceInterval\":[2083,2088]},\"\\\\t\"]],\"escapeChar_unicodeCodePoint\":[\"define\",{\"sourceInterval\":[2139,2243]},null,[],[\"seq\",{\"sourceInterval\":[2139,2221]},[\"terminal\",{\"sourceInterval\":[2139,2145]},\"\\\\u{\"],[\"app\",{\"sourceInterval\":[2146,2154]},\"hexDigit\",[]],[\"opt\",{\"sourceInterval\":[2155,2164]},[\"app\",{\"sourceInterval\":[2155,2163]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2165,2174]},[\"app\",{\"sourceInterval\":[2165,2173]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2188,2197]},[\"app\",{\"sourceInterval\":[2188,2196]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2198,2207]},[\"app\",{\"sourceInterval\":[2198,2206]},\"hexDigit\",[]]],[\"opt\",{\"sourceInterval\":[2208,2217]},[\"app\",{\"sourceInterval\":[2208,2216]},\"hexDigit\",[]]],[\"terminal\",{\"sourceInterval\":[2218,2221]},\"}\"]]],\"escapeChar_unicodeEscape\":[\"define\",{\"sourceInterval\":[2250,2309]},null,[],[\"seq\",{\"sourceInterval\":[2250,2291]},[\"terminal\",{\"sourceInterval\":[2250,2255]},\"\\\\u\"],[\"app\",{\"sourceInterval\":[2256,2264]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2265,2273]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2274,2282]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2283,2291]},\"hexDigit\",[]]]],\"escapeChar_hexEscape\":[\"define\",{\"sourceInterval\":[2316,2371]},null,[],[\"seq\",{\"sourceInterval\":[2316,2339]},[\"terminal\",{\"sourceInterval\":[2316,2321]},\"\\\\x\"],[\"app\",{\"sourceInterval\":[2322,2330]},\"hexDigit\",[]],[\"app\",{\"sourceInterval\":[2331,2339]},\"hexDigit\",[]]]],\"escapeChar\":[\"define\",{\"sourceInterval\":[1664,2371]},\"an escape sequence\",[],[\"alt\",{\"sourceInterval\":[1703,2371]},[\"app\",{\"sourceInterval\":[1703,1709]},\"escapeChar_backslash\",[]],[\"app\",{\"sourceInterval\":[1765,1771]},\"escapeChar_doubleQuote\",[]],[\"app\",{\"sourceInterval\":[1829,1835]},\"escapeChar_singleQuote\",[]],[\"app\",{\"sourceInterval\":[1893,1898]},\"escapeChar_backspace\",[]],[\"app\",{\"sourceInterval\":[1955,1960]},\"escapeChar_lineFeed\",[]],[\"app\",{\"sourceInterval\":[2016,2021]},\"escapeChar_carriageReturn\",[]],[\"app\",{\"sourceInterval\":[2083,2088]},\"escapeChar_tab\",[]],[\"app\",{\"sourceInterval\":[2139,2221]},\"escapeChar_unicodeCodePoint\",[]],[\"app\",{\"sourceInterval\":[2250,2291]},\"escapeChar_unicodeEscape\",[]],[\"app\",{\"sourceInterval\":[2316,2339]},\"escapeChar_hexEscape\",[]]]],\"space\":[\"extend\",{\"sourceInterval\":[2375,2394]},null,[],[\"app\",{\"sourceInterval\":[2387,2394]},\"comment\",[]]],\"comment_singleLine\":[\"define\",{\"sourceInterval\":[2412,2458]},null,[],[\"seq\",{\"sourceInterval\":[2412,2443]},[\"terminal\",{\"sourceInterval\":[2412,2416]},\"//\"],[\"star\",{\"sourceInterval\":[2417,2429]},[\"seq\",{\"sourceInterval\":[2418,2427]},[\"not\",{\"sourceInterval\":[2418,2423]},[\"terminal\",{\"sourceInterval\":[2419,2423]},\"\\n\"]],[\"app\",{\"sourceInterval\":[2424,2427]},\"any\",[]]]],[\"lookahead\",{\"sourceInterval\":[2430,2443]},[\"alt\",{\"sourceInterval\":[2432,2442]},[\"terminal\",{\"sourceInterval\":[2432,2436]},\"\\n\"],[\"app\",{\"sourceInterval\":[2439,2442]},\"end\",[]]]]]],\"comment_multiLine\":[\"define\",{\"sourceInterval\":[2465,2501]},null,[],[\"seq\",{\"sourceInterval\":[2465,2487]},[\"terminal\",{\"sourceInterval\":[2465,2469]},\"/*\"],[\"star\",{\"sourceInterval\":[2470,2482]},[\"seq\",{\"sourceInterval\":[2471,2480]},[\"not\",{\"sourceInterval\":[2471,2476]},[\"terminal\",{\"sourceInterval\":[2472,2476]},\"*/\"]],[\"app\",{\"sourceInterval\":[2477,2480]},\"any\",[]]]],[\"terminal\",{\"sourceInterval\":[2483,2487]},\"*/\"]]],\"comment\":[\"define\",{\"sourceInterval\":[2398,2501]},null,[],[\"alt\",{\"sourceInterval\":[2412,2501]},[\"app\",{\"sourceInterval\":[2412,2443]},\"comment_singleLine\",[]],[\"app\",{\"sourceInterval\":[2465,2487]},\"comment_multiLine\",[]]]],\"tokens\":[\"define\",{\"sourceInterval\":[2505,2520]},null,[],[\"star\",{\"sourceInterval\":[2514,2520]},[\"app\",{\"sourceInterval\":[2514,2519]},\"token\",[]]]],\"token\":[\"define\",{\"sourceInterval\":[2524,2600]},null,[],[\"alt\",{\"sourceInterval\":[2532,2600]},[\"app\",{\"sourceInterval\":[2532,2540]},\"caseName\",[]],[\"app\",{\"sourceInterval\":[2543,2550]},\"comment\",[]],[\"app\",{\"sourceInterval\":[2553,2558]},\"ident\",[]],[\"app\",{\"sourceInterval\":[2561,2569]},\"operator\",[]],[\"app\",{\"sourceInterval\":[2572,2583]},\"punctuation\",[]],[\"app\",{\"sourceInterval\":[2586,2594]},\"terminal\",[]],[\"app\",{\"sourceInterval\":[2597,2600]},\"any\",[]]]],\"operator\":[\"define\",{\"sourceInterval\":[2604,2669]},null,[],[\"alt\",{\"sourceInterval\":[2615,2669]},[\"terminal\",{\"sourceInterval\":[2615,2619]},\"<:\"],[\"terminal\",{\"sourceInterval\":[2622,2625]},\"=\"],[\"terminal\",{\"sourceInterval\":[2628,2632]},\":=\"],[\"terminal\",{\"sourceInterval\":[2635,2639]},\"+=\"],[\"terminal\",{\"sourceInterval\":[2642,2645]},\"*\"],[\"terminal\",{\"sourceInterval\":[2648,2651]},\"+\"],[\"terminal\",{\"sourceInterval\":[2654,2657]},\"?\"],[\"terminal\",{\"sourceInterval\":[2660,2663]},\"~\"],[\"terminal\",{\"sourceInterval\":[2666,2669]},\"&\"]]],\"punctuation\":[\"define\",{\"sourceInterval\":[2673,2709]},null,[],[\"alt\",{\"sourceInterval\":[2687,2709]},[\"terminal\",{\"sourceInterval\":[2687,2690]},\"<\"],[\"terminal\",{\"sourceInterval\":[2693,2696]},\">\"],[\"terminal\",{\"sourceInterval\":[2699,2702]},\",\"],[\"terminal\",{\"sourceInterval\":[2705,2709]},\"--\"]]]}]);\n","import ohmGrammar from '../dist/ohm-grammar.js';\nimport {Builder} from './Builder.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport {Grammar} from './Grammar.js';\nimport * as pexprs from './pexprs.js';\n\nconst superSplicePlaceholder = Object.create(pexprs.PExpr.prototype);\n\nfunction namespaceHas(ns, name) {\n // Look for an enumerable property, anywhere in the prototype chain.\n for (const prop in ns) {\n if (prop === name) return true;\n }\n return false;\n}\n\n// Returns a Grammar instance (i.e., an object with a `match` method) for\n// `tree`, which is the concrete syntax tree of a user-written grammar.\n// The grammar will be assigned into `namespace` under the name of the grammar\n// as specified in the source.\nexport function buildGrammar(match, namespace, optOhmGrammarForTesting) {\n const builder = new Builder();\n let decl;\n let currentRuleName;\n let currentRuleFormals;\n let overriding = false;\n const metaGrammar = optOhmGrammarForTesting || ohmGrammar;\n\n // A visitor that produces a Grammar instance from the CST.\n const helpers = metaGrammar.createSemantics().addOperation('visit', {\n Grammars(grammarIter) {\n return grammarIter.children.map(c => c.visit());\n },\n Grammar(id, s, _open, rules, _close) {\n const grammarName = id.visit();\n decl = builder.newGrammar(grammarName);\n s.child(0) && s.child(0).visit();\n rules.children.map(c => c.visit());\n const g = decl.build();\n g.source = this.source.trimmed();\n if (namespaceHas(namespace, grammarName)) {\n throw errors.duplicateGrammarDeclaration(g, namespace);\n }\n namespace[grammarName] = g;\n return g;\n },\n\n SuperGrammar(_, n) {\n const superGrammarName = n.visit();\n if (superGrammarName === 'null') {\n decl.withSuperGrammar(null);\n } else {\n if (!namespace || !namespaceHas(namespace, superGrammarName)) {\n throw errors.undeclaredGrammar(superGrammarName, namespace, n.source);\n }\n decl.withSuperGrammar(namespace[superGrammarName]);\n }\n },\n\n Rule_define(n, fs, d, _, b) {\n currentRuleName = n.visit();\n currentRuleFormals = fs.children.map(c => c.visit())[0] || [];\n // If there is no default start rule yet, set it now. This must be done before visiting\n // the body, because it might contain an inline rule definition.\n if (!decl.defaultStartRule && decl.ensureSuperGrammar() !== Grammar.ProtoBuiltInRules) {\n decl.withDefaultStartRule(currentRuleName);\n }\n const body = b.visit();\n const description = d.children.map(c => c.visit())[0];\n const source = this.source.trimmed();\n return decl.define(currentRuleName, currentRuleFormals, body, description, source);\n },\n Rule_override(n, fs, _, b) {\n currentRuleName = n.visit();\n currentRuleFormals = fs.children.map(c => c.visit())[0] || [];\n\n const source = this.source.trimmed();\n decl.ensureSuperGrammarRuleForOverriding(currentRuleName, source);\n\n overriding = true;\n const body = b.visit();\n overriding = false;\n return decl.override(currentRuleName, currentRuleFormals, body, null, source);\n },\n Rule_extend(n, fs, _, b) {\n currentRuleName = n.visit();\n currentRuleFormals = fs.children.map(c => c.visit())[0] || [];\n const body = b.visit();\n const source = this.source.trimmed();\n return decl.extend(currentRuleName, currentRuleFormals, body, null, source);\n },\n RuleBody(_, terms) {\n return builder.alt(...terms.visit()).withSource(this.source);\n },\n OverrideRuleBody(_, terms) {\n const args = terms.visit();\n\n // Check if the super-splice operator (`...`) appears in the terms.\n const expansionPos = args.indexOf(superSplicePlaceholder);\n if (expansionPos >= 0) {\n const beforeTerms = args.slice(0, expansionPos);\n const afterTerms = args.slice(expansionPos + 1);\n\n // Ensure it appears no more than once.\n afterTerms.forEach(t => {\n if (t === superSplicePlaceholder) throw errors.multipleSuperSplices(t);\n });\n\n return new pexprs.Splice(\n decl.superGrammar,\n currentRuleName,\n beforeTerms,\n afterTerms,\n ).withSource(this.source);\n } else {\n return builder.alt(...args).withSource(this.source);\n }\n },\n Formals(opointy, fs, cpointy) {\n return fs.visit();\n },\n\n Params(opointy, ps, cpointy) {\n return ps.visit();\n },\n\n Alt(seqs) {\n return builder.alt(...seqs.visit()).withSource(this.source);\n },\n\n TopLevelTerm_inline(b, n) {\n const inlineRuleName = currentRuleName + '_' + n.visit();\n const body = b.visit();\n const source = this.source.trimmed();\n const isNewRuleDeclaration = !(\n decl.superGrammar && decl.superGrammar.rules[inlineRuleName]\n );\n if (overriding && !isNewRuleDeclaration) {\n decl.override(inlineRuleName, currentRuleFormals, body, null, source);\n } else {\n decl.define(inlineRuleName, currentRuleFormals, body, null, source);\n }\n const params = currentRuleFormals.map(formal => builder.app(formal));\n return builder.app(inlineRuleName, params).withSource(body.source);\n },\n OverrideTopLevelTerm_superSplice(_) {\n return superSplicePlaceholder;\n },\n\n Seq(expr) {\n return builder.seq(...expr.children.map(c => c.visit())).withSource(this.source);\n },\n\n Iter_star(x, _) {\n return builder.star(x.visit()).withSource(this.source);\n },\n Iter_plus(x, _) {\n return builder.plus(x.visit()).withSource(this.source);\n },\n Iter_opt(x, _) {\n return builder.opt(x.visit()).withSource(this.source);\n },\n\n Pred_not(_, x) {\n return builder.not(x.visit()).withSource(this.source);\n },\n Pred_lookahead(_, x) {\n return builder.lookahead(x.visit()).withSource(this.source);\n },\n\n Lex_lex(_, x) {\n return builder.lex(x.visit()).withSource(this.source);\n },\n\n Base_application(rule, ps) {\n const params = ps.children.map(c => c.visit())[0] || [];\n return builder.app(rule.visit(), params).withSource(this.source);\n },\n Base_range(from, _, to) {\n return builder.range(from.visit(), to.visit()).withSource(this.source);\n },\n Base_terminal(expr) {\n return builder.terminal(expr.visit()).withSource(this.source);\n },\n Base_paren(open, x, close) {\n return x.visit();\n },\n\n ruleDescr(open, t, close) {\n return t.visit();\n },\n ruleDescrText(_) {\n return this.sourceString.trim();\n },\n\n caseName(_, space1, n, space2, end) {\n return n.visit();\n },\n\n name(first, rest) {\n return this.sourceString;\n },\n nameFirst(expr) {},\n nameRest(expr) {},\n\n terminal(open, cs, close) {\n return cs.children.map(c => c.visit()).join('');\n },\n\n oneCharTerminal(open, c, close) {\n return c.visit();\n },\n\n escapeChar(c) {\n try {\n return common.unescapeCodePoint(this.sourceString);\n } catch (err) {\n if (err instanceof RangeError && err.message.startsWith('Invalid code point ')) {\n throw errors.invalidCodePoint(c);\n }\n throw err; // Rethrow\n }\n },\n\n NonemptyListOf(x, _, xs) {\n return [x.visit()].concat(xs.children.map(c => c.visit()));\n },\n EmptyListOf() {\n return [];\n },\n\n _terminal() {\n return this.sourceString;\n },\n });\n return helpers(match).visit();\n}\n","import {makeRecipe} from '../src/main-kernel.js';\nexport default makeRecipe([\"grammar\",{\"source\":\"OperationsAndAttributes {\\n\\n AttributeSignature =\\n name\\n\\n OperationSignature =\\n name Formals?\\n\\n Formals\\n = \\\"(\\\" ListOf<name, \\\",\\\"> \\\")\\\"\\n\\n name (a name)\\n = nameFirst nameRest*\\n\\n nameFirst\\n = \\\"_\\\"\\n | letter\\n\\n nameRest\\n = \\\"_\\\"\\n | alnum\\n\\n}\"},\"OperationsAndAttributes\",null,\"AttributeSignature\",{\"AttributeSignature\":[\"define\",{\"sourceInterval\":[29,58]},null,[],[\"app\",{\"sourceInterval\":[54,58]},\"name\",[]]],\"OperationSignature\":[\"define\",{\"sourceInterval\":[62,100]},null,[],[\"seq\",{\"sourceInterval\":[87,100]},[\"app\",{\"sourceInterval\":[87,91]},\"name\",[]],[\"opt\",{\"sourceInterval\":[92,100]},[\"app\",{\"sourceInterval\":[92,99]},\"Formals\",[]]]]],\"Formals\":[\"define\",{\"sourceInterval\":[104,143]},null,[],[\"seq\",{\"sourceInterval\":[118,143]},[\"terminal\",{\"sourceInterval\":[118,121]},\"(\"],[\"app\",{\"sourceInterval\":[122,139]},\"ListOf\",[[\"app\",{\"sourceInterval\":[129,133]},\"name\",[]],[\"terminal\",{\"sourceInterval\":[135,138]},\",\"]]],[\"terminal\",{\"sourceInterval\":[140,143]},\")\"]]],\"name\":[\"define\",{\"sourceInterval\":[147,187]},\"a name\",[],[\"seq\",{\"sourceInterval\":[168,187]},[\"app\",{\"sourceInterval\":[168,177]},\"nameFirst\",[]],[\"star\",{\"sourceInterval\":[178,187]},[\"app\",{\"sourceInterval\":[178,186]},\"nameRest\",[]]]]],\"nameFirst\":[\"define\",{\"sourceInterval\":[191,223]},null,[],[\"alt\",{\"sourceInterval\":[207,223]},[\"terminal\",{\"sourceInterval\":[207,210]},\"_\"],[\"app\",{\"sourceInterval\":[217,223]},\"letter\",[]]]],\"nameRest\":[\"define\",{\"sourceInterval\":[227,257]},null,[],[\"alt\",{\"sourceInterval\":[242,257]},[\"terminal\",{\"sourceInterval\":[242,245]},\"_\"],[\"app\",{\"sourceInterval\":[252,257]},\"alnum\",[]]]]}]);\n","import operationsAndAttributesGrammar from '../dist/operations-and-attributes.js';\nimport {Grammar} from './Grammar.js';\nimport {Semantics} from './Semantics.js';\n\ninitBuiltInSemantics(Grammar.BuiltInRules);\ninitPrototypeParser(operationsAndAttributesGrammar); // requires BuiltInSemantics\n\nfunction initBuiltInSemantics(builtInRules) {\n const actions = {\n empty() {\n return this.iteration();\n },\n nonEmpty(first, _, rest) {\n return this.iteration([first].concat(rest.children));\n },\n };\n\n Semantics.BuiltInSemantics = Semantics.createSemantics(builtInRules, null).addOperation(\n 'asIteration',\n {\n emptyListOf: actions.empty,\n nonemptyListOf: actions.nonEmpty,\n EmptyListOf: actions.empty,\n NonemptyListOf: actions.nonEmpty,\n },\n );\n}\n\nfunction initPrototypeParser(grammar) {\n Semantics.prototypeGrammarSemantics = grammar.createSemantics().addOperation('parse', {\n AttributeSignature(name) {\n return {\n name: name.parse(),\n formals: [],\n };\n },\n OperationSignature(name, optFormals) {\n return {\n name: name.parse(),\n formals: optFormals.children.map(c => c.parse())[0] || [],\n };\n },\n Formals(oparen, fs, cparen) {\n return fs.asIteration().children.map(c => c.parse());\n },\n name(first, rest) {\n return this.sourceString;\n },\n });\n Semantics.prototypeGrammar = grammar;\n}\n","export function findIndentation(input) {\n let pos = 0;\n const stack = [0];\n const topOfStack = () => stack[stack.length - 1];\n\n const result = {};\n\n const regex = /( *).*(?:$|\\r?\\n|\\r)/g;\n let match;\n while ((match = regex.exec(input)) != null) {\n const [line, indent] = match;\n\n // The last match will always have length 0. In every other case, some\n // characters will be matched (possibly only the end of line chars).\n if (line.length === 0) break;\n\n const indentSize = indent.length;\n const prevSize = topOfStack();\n\n const indentPos = pos + indentSize;\n\n if (indentSize > prevSize) {\n // Indent -- always only 1.\n stack.push(indentSize);\n result[indentPos] = 1;\n } else if (indentSize < prevSize) {\n // Dedent -- can be multiple levels.\n const prevLength = stack.length;\n while (topOfStack() !== indentSize) {\n stack.pop();\n }\n result[indentPos] = -1 * (prevLength - stack.length);\n }\n pos += line.length;\n }\n // Ensure that there is a matching DEDENT for every remaining INDENT.\n if (stack.length > 1) {\n result[pos] = 1 - stack.length;\n }\n return result;\n}\n","import BuiltInRules from '../dist/built-in-rules.js';\nimport {Builder} from '../src/Builder.js';\nimport {Failure} from '../src/Failure.js';\nimport {TerminalNode} from '../src/nodes.js';\nimport * as pexprs from '../src/pexprs.js';\nimport {findIndentation} from './findIndentation.js';\nimport {InputStream} from './InputStream.js';\n\nconst INDENT_DESCRIPTION = 'an indented block';\nconst DEDENT_DESCRIPTION = 'a dedent';\n\n// A sentinel value that is out of range for both charCodeAt() and codePointAt().\nconst INVALID_CODE_POINT = 0x10ffff + 1;\n\nclass InputStreamWithIndentation extends InputStream {\n constructor(state) {\n super(state.input);\n this.state = state;\n }\n\n _indentationAt(pos) {\n return this.state.userData[pos] || 0;\n }\n\n atEnd() {\n return super.atEnd() && this._indentationAt(this.pos) === 0;\n }\n\n next() {\n if (this._indentationAt(this.pos) !== 0) {\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return undefined;\n }\n return super.next();\n }\n\n nextCharCode() {\n if (this._indentationAt(this.pos) !== 0) {\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return INVALID_CODE_POINT;\n }\n return super.nextCharCode();\n }\n\n nextCodePoint() {\n if (this._indentationAt(this.pos) !== 0) {\n this.examinedLength = Math.max(this.examinedLength, this.pos);\n return INVALID_CODE_POINT;\n }\n return super.nextCodePoint();\n }\n}\n\nclass Indentation extends pexprs.PExpr {\n constructor(isIndent = true) {\n super();\n this.isIndent = isIndent;\n }\n\n allowsSkippingPrecedingSpace() {\n return true;\n }\n\n eval(state) {\n const {inputStream} = state;\n const pseudoTokens = state.userData;\n state.doNotMemoize = true;\n\n const origPos = inputStream.pos;\n\n const sign = this.isIndent ? 1 : -1;\n const count = (pseudoTokens[origPos] || 0) * sign;\n if (count > 0) {\n // Update the count to consume the pseudotoken.\n state.userData = Object.create(pseudoTokens);\n state.userData[origPos] -= sign;\n\n state.pushBinding(new TerminalNode(0), origPos);\n return true;\n } else {\n state.processFailure(origPos, this);\n return false;\n }\n }\n\n getArity() {\n return 1;\n }\n\n _assertAllApplicationsAreValid(ruleName, grammar) {}\n\n _isNullable(grammar, memo) {\n return false;\n }\n\n assertChoicesHaveUniformArity(ruleName) {}\n\n assertIteratedExprsAreNotNullable(grammar) {}\n\n introduceParams(formals) {\n return this;\n }\n\n substituteParams(actuals) {\n return this;\n }\n\n toString() {\n return this.isIndent ? 'indent' : 'dedent';\n }\n\n toDisplayString() {\n return this.toString();\n }\n\n toFailure(grammar) {\n const description = this.isIndent ? INDENT_DESCRIPTION : DEDENT_DESCRIPTION;\n return new Failure(this, description, 'description');\n }\n}\n\n// Create a new definition for `any` that can consume indent & dedent.\nconst applyIndent = new pexprs.Apply('indent');\nconst applyDedent = new pexprs.Apply('dedent');\nconst newAnyBody = new pexprs.Splice(BuiltInRules, 'any', [applyIndent, applyDedent], []);\n\nexport const IndentationSensitive = new Builder()\n .newGrammar('IndentationSensitive')\n .withSuperGrammar(BuiltInRules)\n .define('indent', [], new Indentation(true), INDENT_DESCRIPTION, undefined, true)\n .define('dedent', [], new Indentation(false), DEDENT_DESCRIPTION, undefined, true)\n .extend('any', [], newAnyBody, 'any character', undefined)\n .build();\n\nObject.assign(IndentationSensitive, {\n _matchStateInitializer(state) {\n state.userData = findIndentation(state.input);\n state.inputStream = new InputStreamWithIndentation(state);\n },\n supportsIncrementalParsing: false,\n});\n","// Generated by scripts/prebuild.js\nexport const version = '17.0.0';\n","import ohmGrammar from '../dist/ohm-grammar.js';\nimport {buildGrammar} from './buildGrammar.js';\nimport * as common from './common.js';\nimport * as errors from './errors.js';\nimport {Grammar} from './Grammar.js';\nimport * as pexprs from './pexprs.js';\nimport * as util from './util.js';\n\n// Late initialization for stuff that is bootstrapped.\n\nimport './semanticsDeferredInit.js'; // TODO: Clean this up.\nGrammar.initApplicationParser(ohmGrammar, buildGrammar);\n\nconst isBuffer = obj =>\n !!obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj);\n\nfunction compileAndLoad(source, namespace) {\n const m = ohmGrammar.match(source, 'Grammars');\n if (m.failed()) {\n throw errors.grammarSyntaxError(m);\n }\n return buildGrammar(m, namespace);\n}\n\nexport function grammar(source, optNamespace) {\n const ns = grammars(source, optNamespace);\n\n // Ensure that the source contained no more than one grammar definition.\n const grammarNames = Object.keys(ns);\n if (grammarNames.length === 0) {\n throw new Error('Missing grammar definition');\n } else if (grammarNames.length > 1) {\n const secondGrammar = ns[grammarNames[1]];\n const interval = secondGrammar.source;\n throw new Error(\n util.getLineAndColumnMessage(interval.sourceString, interval.startIdx) +\n 'Found more than one grammar definition -- use ohm.grammars() instead.',\n );\n }\n return ns[grammarNames[0]]; // Return the one and only grammar.\n}\n\nexport function grammars(source, optNamespace) {\n const ns = Object.create(optNamespace || {});\n if (typeof source !== 'string') {\n // For convenience, detect Node.js Buffer objects and automatically call toString().\n if (isBuffer(source)) {\n source = source.toString();\n } else {\n throw new TypeError(\n 'Expected string as first argument, got ' + common.unexpectedObjToString(source),\n );\n }\n }\n compileAndLoad(source, ns);\n return ns;\n}\n\nexport * from './main-kernel.js';\nexport {IndentationSensitive as ExperimentalIndentationSensitive} from './IndentationSensitive.js';\nexport {ohmGrammar};\nexport {pexprs};\nexport {version} from './version.js';\n"],"names":["common.isSyntactic","pexprs.Apply","common.padLeft","common.StringBuffer","common.assert","util.getLineAndColumn","util.getLineAndColumnMessage","errors.intervalSourcesDontMatch","common.defineLazyProperty","common.repeat","pexprs.PExpr","pexprs.any","pexprs.end","pexprs.Terminal","pexprs.Range","pexprs.UnicodeChar","pexprs.Alt","pexprs.Iter","pexprs.Lex","pexprs.Lookahead","pexprs.Not","pexprs.Param","pexprs.Seq","BuiltInRules","util.awaitBuiltInRules","errors.undeclaredRule","errors.applicationOfSyntacticRuleFromLexicalContext","errors.wrongNumberOfArguments","errors.incorrectArgumentType","errors.applySyntacticWithLexicalRuleApplication","errors.unnecessaryExperimentalApplySyntactic","errors.invalidParameter","errors.inconsistentArity","pexprs.Extend","errors.kleeneExprHasNullableOperand","pexprs.Opt","common.isLexical","common.abstract","pexprs.Splice","pexprs.Star","pexprs.Plus","util.uniqueId","errors.missingSemanticAction","common.unexpectedObjToString","ohmGrammar","buildGrammar","errors.wrongNumberOfParameters","pexprs.CaseInsensitiveTerminal","errors.cannotOverrideUndeclaredRule","duplicateParameterNames","errors.duplicateParameterNames","errors.throwErrors","errors.duplicateRuleDeclaration","errors.cannotExtendUndeclaredRule","errors.duplicateGrammarDeclaration","errors.undeclaredGrammar","errors.multipleSuperSplices","common.unescapeCodePoint","errors.invalidCodePoint","errors.grammarSyntaxError"],"mappings":"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CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAA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C,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAA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AC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CA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"}