{"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/ohmjs/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.1.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\n// This is used by ohm-editor to instantiate grammars after incremental\n// parsing, which is not otherwise supported in the public API.\nexport {buildGrammar as _buildGrammar};\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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"}