Current File : /home/tradevaly/www/node_modules/dfa/compile.js.map
{"version":3,"file":"compile.js","sources":["src/utils.js","src/nodes.js","src/grammar.js","src/SymbolTable.js","src/dfa.js","src/StateMachine.js","src/compile.js"],"sourcesContent":["/**\n * Returns a new set representing the union of a and b.\n */\nexport function union(a, b) {\n  let s = new Set(a);\n  addAll(s, b);\n  return s;\n}\n\n/**\n * Adds all items from the set b to a.\n */\nexport function addAll(a, b) {\n  for (let x of b) {\n    a.add(x);\n  }\n}\n\n/**\n * Returns whether two sets are equal\n */\nexport function equal(a, b) {\n  if (a === b)\n    return true;\n\n  if (a.size !== b.size)\n    return false;\n\n  for (let x of a) {\n    if (!b.has(x)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","import {addAll, union} from './utils';\n\n/**\n * Base AST node\n */\nexport class Node {\n  constructor() {\n    Object.defineProperty(this, 'followpos', {value: new Set})\n  }\n\n  calcFollowpos() {\n    for (let key in this) {\n      if (this[key] instanceof Node) {\n        this[key].calcFollowpos();\n      }\n    }\n  }\n}\n\n/**\n * Represents a variable reference\n */\nexport class Variable extends Node {\n  constructor(name) {\n    super();\n    this.name = name;\n  }\n\n  copy() {\n    return new Variable(this.name);\n  }\n}\n\n/**\n * Represents a comment\n */\nexport class Comment extends Node {\n  constructor(value) {\n    super();\n    this.value = value;\n  }\n}\n\n/**\n * Represents an assignment statement.\n * e.g. `variable = expression;`\n */\nexport class Assignment extends Node {\n  constructor(variable, expression) {\n    super();\n    this.variable = variable;\n    this.expression = expression;\n  }\n}\n\n/**\n * Represents an alternation.\n * e.g. `a | b`\n */\nexport class Alternation extends Node {\n  constructor(a, b) {\n    super();\n    this.a = a;\n    this.b = b;\n  }\n\n  get nullable() {\n    return this.a.nullable || this.b.nullable;\n  }\n\n  get firstpos() {\n    return union(this.a.firstpos, this.b.firstpos);\n  }\n\n  get lastpos() {\n    return union(this.a.lastpos, this.b.lastpos);\n  }\n\n  copy() {\n    return new Alternation(this.a.copy(), this.b.copy());\n  }\n}\n\n/**\n * Represents a concatenation, or chain.\n * e.g. `a b c`\n */\nexport class Concatenation extends Node {\n  constructor(a, b) {\n    super();\n    this.a = a;\n    this.b = b;\n  }\n\n  get nullable() {\n    return this.a.nullable && this.b.nullable;\n  }\n\n  get firstpos() {\n    let s = this.a.firstpos;\n    if (this.a.nullable) {\n      s = union(s, this.b.firstpos);\n    }\n\n    return s;\n  }\n\n  get lastpos() {\n    let s = this.b.lastpos;\n    if (this.b.nullable) {\n      s = union(s, this.a.lastpos);\n    }\n\n    return s;\n  }\n\n  calcFollowpos() {\n    super.calcFollowpos();\n    for (let n of this.a.lastpos) {\n      addAll(n.followpos, this.b.firstpos);\n    }\n  }\n\n  copy() {\n    return new Concatenation(this.a.copy(), this.b.copy());\n  }\n}\n\n/**\n * Represents a repetition.\n * e.g. `a+`, `b*`, or `c?`\n */\nexport class Repeat extends Node {\n  constructor(expression, op) {\n    super();\n    this.expression = expression;\n    this.op = op;\n  }\n\n  get nullable() {\n    return this.op === '*' || this.op === '?';\n  }\n\n  get firstpos() {\n    return this.expression.firstpos;\n  }\n\n  get lastpos() {\n    return this.expression.lastpos;\n  }\n\n  calcFollowpos() {\n    super.calcFollowpos();\n    if (this.op === '*' || this.op === '+') {\n      for (let n of this.lastpos) {\n        addAll(n.followpos, this.firstpos);\n      }\n    }\n  }\n\n  copy() {\n    return new Repeat(this.expression.copy(), this.op);\n  }\n}\n\nexport function buildRepetition(expression, min = 0, max = Infinity) {\n  if (min < 0 || min > max) {\n    throw new Error(`Invalid repetition range: ${min} ${max}`);\n  }\n\n  let res = null;\n  for (let i = 0; i < min; i++) {\n    res = concat(res, expression.copy());\n  }\n\n  if (max === Infinity) {\n    res = concat(res, new Repeat(expression.copy(), '*'));\n  } else {\n    for (let i = min; i < max; i++) {\n      res = concat(res, new Repeat(expression.copy(), '?'))\n    }\n  }\n\n  return res;\n}\n\nfunction concat(a, b) {\n  if (!a) {\n    return b;\n  }\n\n  return new Concatenation(a, b);\n}\n\n/**\n * Base class for leaf nodes\n */\nclass Leaf extends Node {\n  get nullable() {\n    return false;\n  }\n\n  get firstpos() {\n    return new Set([this]);\n  }\n\n  get lastpos() {\n    return new Set([this]);\n  }\n}\n\n/**\n * Represents a literal value, e.g. a number\n */\nexport class Literal extends Leaf {\n  constructor(value) {\n    super();\n    this.value = value;\n  }\n\n  copy() {\n    return new Literal(this.value);\n  }\n}\n\n/**\n * Marks the end of an expression\n */\nexport class EndMarker extends Leaf {}\n\n/**\n * Represents a tag\n * e.g. `a:(a b)`\n */\nexport class Tag extends Leaf {\n  constructor(name) {\n    super();\n    this.name = name;\n  }\n\n  get nullable() {\n    return true;\n  }\n\n  copy() {\n    return new Tag(this.name);\n  }\n}\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n  function ctor() { this.constructor = child; }\n  ctor.prototype = parent.prototype;\n  child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  this.message  = message;\n  this.expected = expected;\n  this.found    = found;\n  this.location = location;\n  this.name     = \"SyntaxError\";\n\n  if (typeof Error.captureStackTrace === \"function\") {\n    Error.captureStackTrace(this, peg$SyntaxError);\n  }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n        literal: function(expectation) {\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        },\n\n        \"class\": function(expectation) {\n          var escapedParts = \"\",\n              i;\n\n          for (i = 0; i < expectation.parts.length; i++) {\n            escapedParts += expectation.parts[i] instanceof Array\n              ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n              : classEscape(expectation.parts[i]);\n          }\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        },\n\n        any: function(expectation) {\n          return \"any character\";\n        },\n\n        end: function(expectation) {\n          return \"end of input\";\n        },\n\n        other: function(expectation) {\n          return expectation.description;\n        }\n      };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\"/g,  '\\\\\"')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\\]/g, '\\\\]')\n      .replace(/\\^/g, '\\\\^')\n      .replace(/-/g,  '\\\\-')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = new Array(expected.length),\n        i, j;\n\n    for (i = 0; i < expected.length; i++) {\n      descriptions[i] = describeExpectation(expected[i]);\n    }\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== void 0 ? options : {};\n\n  var peg$FAILED = {},\n\n      peg$startRuleFunctions = { rules: peg$parserules },\n      peg$startRuleFunction  = peg$parserules,\n\n      peg$c0 = function(s) { return s },\n      peg$c1 = \"#\",\n      peg$c2 = peg$literalExpectation(\"#\", false),\n      peg$c3 = /^[^\\r\\n]/,\n      peg$c4 = peg$classExpectation([\"\\r\", \"\\n\"], true, false),\n      peg$c5 = /^[\\r\\n]/,\n      peg$c6 = peg$classExpectation([\"\\r\", \"\\n\"], false, false),\n      peg$c7 = function(v) { return new n.Comment(v.join('')) },\n      peg$c8 = \"=\",\n      peg$c9 = peg$literalExpectation(\"=\", false),\n      peg$c10 = \";\",\n      peg$c11 = peg$literalExpectation(\";\", false),\n      peg$c12 = function(v, e) { return new n.Assignment(v, e) },\n      peg$c13 = function(v) { return new n.Variable(v) },\n      peg$c14 = \"|\",\n      peg$c15 = peg$literalExpectation(\"|\", false),\n      peg$c16 = function(a, b) { return new n.Alternation(a, b) },\n      peg$c17 = function(a, b) { return new n.Concatenation(a, b) },\n      peg$c18 = \":\",\n      peg$c19 = peg$literalExpectation(\":\", false),\n      peg$c20 = function(t, e) { return new n.Concatenation(e, new n.Tag(t)) },\n      peg$c21 = \"*\",\n      peg$c22 = peg$literalExpectation(\"*\", false),\n      peg$c23 = function(t) { return new n.Repeat(t, '*') },\n      peg$c24 = \"?\",\n      peg$c25 = peg$literalExpectation(\"?\", false),\n      peg$c26 = function(t) { return new n.Repeat(t, '?') },\n      peg$c27 = \"+\",\n      peg$c28 = peg$literalExpectation(\"+\", false),\n      peg$c29 = function(t) { return new n.Repeat(t, '+') },\n      peg$c30 = \"{\",\n      peg$c31 = peg$literalExpectation(\"{\", false),\n      peg$c32 = \"}\",\n      peg$c33 = peg$literalExpectation(\"}\", false),\n      peg$c34 = function(t, m) { return n.buildRepetition(t, m, m) },\n      peg$c35 = \",\",\n      peg$c36 = peg$literalExpectation(\",\", false),\n      peg$c37 = function(t, min) { return n.buildRepetition(t, min, Infinity) },\n      peg$c38 = function(t, max) { return n.buildRepetition(t, 0, max) },\n      peg$c39 = function(t, min, max) { return n.buildRepetition(t, min, max) },\n      peg$c40 = function(x) { return new n.Literal(x) },\n      peg$c41 = \"(\",\n      peg$c42 = peg$literalExpectation(\"(\", false),\n      peg$c43 = \")\",\n      peg$c44 = peg$literalExpectation(\")\", false),\n      peg$c45 = function(e) { return e },\n      peg$c46 = function() { return n.buildRepetition() },\n      peg$c47 = function(a, b) { return a + b.join('') },\n      peg$c48 = \"_\",\n      peg$c49 = peg$literalExpectation(\"_\", false),\n      peg$c50 = /^[a-zA-Z]/,\n      peg$c51 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false),\n      peg$c52 = /^[0-9]/,\n      peg$c53 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n      peg$c54 = function(num) { return parseInt(num.join('')) },\n      peg$c55 = /^[ \\t\\r\\n]/,\n      peg$c56 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false),\n\n      peg$currPos          = 0,\n      peg$savedPos         = 0,\n      peg$posDetailsCache  = [{ line: 1, column: 1 }],\n      peg$maxFailPos       = 0,\n      peg$maxFailExpected  = [],\n      peg$silentFails      = 0,\n\n      peg$result;\n\n  if (\"startRule\" in options) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos], p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line:   details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos) {\n    var startPosDetails = peg$computePosDetails(startPos),\n        endPosDetails   = peg$computePosDetails(endPos);\n\n    return {\n      start: {\n        offset: startPos,\n        line:   startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line:   endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parserules() {\n    var s0, s1;\n\n    s0 = [];\n    s1 = peg$parsestatement();\n    if (s1 !== peg$FAILED) {\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parsestatement();\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsestatement() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parsestatement_type();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c0(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsestatement_type() {\n    var s0;\n\n    s0 = peg$parseassignment();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsecomment();\n    }\n\n    return s0;\n  }\n\n  function peg$parsecomment() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 35) {\n      s1 = peg$c1;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c2); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      if (peg$c3.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c4); }\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c3.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c4); }\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        if (peg$c5.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c6); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c7(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseassignment() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parsevariable();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s3 = peg$c8;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c9); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsealternation();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 59) {\n                  s7 = peg$c10;\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c11); }\n                }\n                if (s7 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$c12(s1, s5);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsevariable() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parsename();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c13(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsealternation() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseconcatenation();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 124) {\n          s3 = peg$c14;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c15); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsealternation();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c16(s1, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseconcatenation();\n    }\n\n    return s0;\n  }\n\n  function peg$parseconcatenation() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parserepeat();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseconcatenation();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c17(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$parserepeat();\n    }\n\n    return s0;\n  }\n\n  function peg$parserepeat() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$parsename();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s2 = peg$c18;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parserepeat();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c20(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseterm();\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 42) {\n          s2 = peg$c21;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c22); }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c23(s1);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseterm();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 63) {\n            s2 = peg$c24;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c25); }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c26(s1);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseterm();\n          if (s1 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 43) {\n              s2 = peg$c27;\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c28); }\n            }\n            if (s2 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c29(s1);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parseterm();\n            if (s1 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 123) {\n                s2 = peg$c30;\n                peg$currPos++;\n              } else {\n                s2 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c31); }\n              }\n              if (s2 !== peg$FAILED) {\n                s3 = peg$parsenumber();\n                if (s3 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s4 = peg$c32;\n                    peg$currPos++;\n                  } else {\n                    s4 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c33); }\n                  }\n                  if (s4 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c34(s1, s3);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              s1 = peg$parseterm();\n              if (s1 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 123) {\n                  s2 = peg$c30;\n                  peg$currPos++;\n                } else {\n                  s2 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c31); }\n                }\n                if (s2 !== peg$FAILED) {\n                  s3 = peg$parsenumber();\n                  if (s3 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 44) {\n                      s4 = peg$c35;\n                      peg$currPos++;\n                    } else {\n                      s4 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n                    }\n                    if (s4 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 125) {\n                        s5 = peg$c32;\n                        peg$currPos++;\n                      } else {\n                        s5 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c33); }\n                      }\n                      if (s5 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s1 = peg$c37(s1, s3);\n                        s0 = s1;\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                s1 = peg$parseterm();\n                if (s1 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 123) {\n                    s2 = peg$c30;\n                    peg$currPos++;\n                  } else {\n                    s2 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c31); }\n                  }\n                  if (s2 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 44) {\n                      s3 = peg$c35;\n                      peg$currPos++;\n                    } else {\n                      s3 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n                    }\n                    if (s3 !== peg$FAILED) {\n                      s4 = peg$parsenumber();\n                      if (s4 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 125) {\n                          s5 = peg$c32;\n                          peg$currPos++;\n                        } else {\n                          s5 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c33); }\n                        }\n                        if (s5 !== peg$FAILED) {\n                          peg$savedPos = s0;\n                          s1 = peg$c38(s1, s4);\n                          s0 = s1;\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n                if (s0 === peg$FAILED) {\n                  s0 = peg$currPos;\n                  s1 = peg$parseterm();\n                  if (s1 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 123) {\n                      s2 = peg$c30;\n                      peg$currPos++;\n                    } else {\n                      s2 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c31); }\n                    }\n                    if (s2 !== peg$FAILED) {\n                      s3 = peg$parsenumber();\n                      if (s3 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 44) {\n                          s4 = peg$c35;\n                          peg$currPos++;\n                        } else {\n                          s4 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c36); }\n                        }\n                        if (s4 !== peg$FAILED) {\n                          s5 = peg$parsenumber();\n                          if (s5 !== peg$FAILED) {\n                            if (input.charCodeAt(peg$currPos) === 125) {\n                              s6 = peg$c32;\n                              peg$currPos++;\n                            } else {\n                              s6 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c33); }\n                            }\n                            if (s6 !== peg$FAILED) {\n                              peg$savedPos = s0;\n                              s1 = peg$c39(s1, s3, s5);\n                              s0 = s1;\n                            } else {\n                              peg$currPos = s0;\n                              s0 = peg$FAILED;\n                            }\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$parseterm();\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseterm() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$parsevariable();\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parsenumber();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c40(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 40) {\n          s1 = peg$c41;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c42); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsealternation();\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 41) {\n              s3 = peg$c43;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c44); }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c45(s2);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parserepetition() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c30;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c31); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsenumber();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 125) {\n          s3 = peg$c32;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c33); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c46();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsename() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsename_start_char();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsename_char();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsename_char();\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c47(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsename_start_char() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 95) {\n      s0 = peg$c48;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c49); }\n    }\n    if (s0 === peg$FAILED) {\n      if (peg$c50.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c51); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsename_char() {\n    var s0;\n\n    s0 = peg$parsename_start_char();\n    if (s0 === peg$FAILED) {\n      if (peg$c52.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsenumber() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c52.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c53); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c52.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c53); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c54(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1;\n\n    s0 = [];\n    if (peg$c55.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c56); }\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      if (peg$c55.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c56); }\n      }\n    }\n\n    return s0;\n  }\n\n\n    var n = require('./nodes');\n\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nmodule.exports = {\n  SyntaxError: peg$SyntaxError,\n  parse:       peg$parse\n};\n","import {Assignment, Literal, Node, Variable} from './nodes';\n\n/**\n * Processes a list of statements into a symbol table\n */\nexport default class SymbolTable {\n  constructor(statements, externalSymbols = {}) {\n    this.variables = {};\n    this.symbols = {};\n    this.main = null;\n    this.size = 0;\n\n    this.addExternalSymbols(externalSymbols);\n    this.process(statements);\n  }\n\n  addExternalSymbols(externalSymbols) {\n    for (let key in externalSymbols) {\n      this.variables[key] = new Literal(externalSymbols[key]);\n      this.symbols[key] = externalSymbols[key];\n      this.size++;\n    }\n  }\n\n  process(statements) {\n    for (let statement of statements) {\n      if (statement instanceof Assignment) {\n        this.variables[statement.variable.name] = this.processExpression(statement.expression);\n\n        if (statement.expression instanceof Literal) {\n          this.symbols[statement.variable.name] = statement.expression.value;\n          this.size++;\n        }\n      }\n    }\n\n    this.main = this.variables.main;\n    if (!this.main) {\n      throw new Error('No main variable declaration found');\n    }\n  }\n\n  processExpression(expr) {\n    // Process children\n    for (let key in expr) {\n      if (expr[key] instanceof Node) {\n        expr[key] = this.processExpression(expr[key]);\n      }\n    }\n\n    // Replace variable references with their values\n    if (expr instanceof Variable) {\n      let value = this.variables[expr.name];\n      if (value == null)\n        throw new Error(`Undeclared indentifier ${expr.name}`);\n\n      expr = this.processExpression(value.copy());\n    }\n\n    return expr;\n  }\n}\n","import {EndMarker, Concatenation, Literal, Tag} from './nodes';\nimport {addAll, equal} from './utils';\n\nconst END_MARKER = new EndMarker;\n\n/**\n * This is an implementation of the direct regular expression to DFA algorithm described\n * in section 3.9.5 of \"Compilers: Principles, Techniques, and Tools\" by Aho,\n * Lam, Sethi, and Ullman. http://dragonbook.stanford.edu\n * There is a PDF of the book here:\n * http://www.informatik.uni-bremen.de/agbkb/lehre/ccfl/Material/ALSUdragonbook.pdf\n */\nexport default function buildDFA(root, numSymbols) {\n  root = new Concatenation(root, END_MARKER);\n  root.calcFollowpos();\n\n  let failState = new State(new Set, numSymbols);\n  let initialState = new State(root.firstpos, numSymbols);\n  let dstates = [failState, initialState];\n\n  // while there is an unmarked state S in dstates\n  while (1) {\n    let s = null;\n\n    for (let j = 1; j < dstates.length; j++) {\n      if (!dstates[j].marked) {\n        s = dstates[j];\n        break;\n      }\n    }\n\n    if (s == null) {\n      break;\n    }\n\n    // mark S\n    s.marked = true;\n\n    // for each input symbol a\n    for (let a = 0; a < numSymbols; a++) {\n      // let U be the union of followpos(p) for all\n      //  p in S that correspond to a\n      let u = new Set;\n      for (let p of s.positions) {\n        if (p instanceof Literal && p.value === a) {\n          addAll(u, p.followpos);\n        }\n      }\n\n      if (u.size === 0) {\n        continue;\n      }\n\n      // if U is not in dstates\n      let ux = -1;\n      for (let i = 0; i < dstates.length; i++) {\n        if (equal(u, dstates[i].positions)) {\n          ux = i;\n          break;\n        }\n      }\n\n      if (ux === -1) {\n        // Add U as an unmarked state to dstates\n        dstates.push(new State(u, numSymbols));\n        ux = dstates.length - 1;\n      }\n\n      s.transitions[a] = ux;\n    }\n  }\n\n  return dstates;\n}\n\nclass State {\n  constructor(positions, len) {\n    this.positions = positions;\n    this.transitions = new Uint16Array(len);\n    this.accepting = positions.has(END_MARKER);\n    this.marked = false;\n    this.tags = new Set;\n\n    for (let pos of positions) {\n      if (pos instanceof Tag) {\n        this.tags.add(pos.name);\n      }\n    }\n  }\n}\n","const INITIAL_STATE = 1;\nconst FAIL_STATE = 0;\n\n/**\n * A StateMachine represents a deterministic finite automaton.\n * It can perform matches over a sequence of values, similar to a regular expression.\n */\nexport default class StateMachine {\n  constructor(dfa) {\n    this.stateTable = dfa.stateTable;\n    this.accepting = dfa.accepting;\n    this.tags = dfa.tags;\n  }\n\n  /**\n   * Returns an iterable object that yields pattern matches over the input sequence.\n   * Matches are of the form [startIndex, endIndex, tags].\n   */\n  match(str) {\n    let self = this;\n    return {\n      *[Symbol.iterator]() {\n        let state = INITIAL_STATE;\n        let startRun = null;\n        let lastAccepting = null;\n        let lastState = null;\n\n        for (let p = 0; p < str.length; p++) {\n          let c = str[p];\n\n          lastState = state;\n          state = self.stateTable[state][c];\n\n          if (state === FAIL_STATE) {\n            // yield the last match if any\n            if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n              yield [startRun, lastAccepting, self.tags[lastState]];\n            }\n\n            // reset the state as if we started over from the initial state\n            state = self.stateTable[INITIAL_STATE][c];\n            startRun = null;\n          }\n\n          // start a run if not in the failure state\n          if (state !== FAIL_STATE && startRun == null) {\n            startRun = p;\n          }\n\n          // if accepting, mark the potential match end\n          if (self.accepting[state]) {\n            lastAccepting = p;\n          }\n\n          // reset the state to the initial state if we get into the failure state\n          if (state === FAIL_STATE) {\n            state = INITIAL_STATE;\n          }\n        }\n\n        // yield the last match if any\n        if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n          yield [startRun, lastAccepting, self.tags[state]];\n        }\n      }\n    };\n  }\n\n  /**\n   * For each match over the input sequence, action functions matching\n   * the tag definitions in the input pattern are called with the startIndex,\n   * endIndex, and sub-match sequence.\n   */\n  apply(str, actions) {\n    for (let [start, end, tags] of this.match(str)) {\n      for (let tag of tags) {\n        if (typeof actions[tag] === 'function') {\n          actions[tag](start, end, str.slice(start, end + 1));\n        }\n      }\n    }\n  }\n}\n","import grammar from './grammar';\nimport SymbolTable from './SymbolTable';\nimport buildDFA from './dfa';\nimport StateMachine from './StateMachine';\n\nexport function parse(string, externalSymbols) {\n  let ast = grammar.parse(string);\n  return new SymbolTable(ast, externalSymbols);\n}\n\nexport function build(symbolTable) {\n  let states = buildDFA(symbolTable.main, symbolTable.size);\n\n  return new StateMachine({\n    stateTable: states.map(s => Array.from(s.transitions)),\n    accepting: states.map(s => s.accepting),\n    tags: states.map(s => Array.from(s.tags))\n  });\n}\n\nexport default function compile(string, externalSymbols) {\n  return build(parse(string, externalSymbols));\n}\n"],"names":["union","a","b","s","Set","addAll","x","add","equal","size","has","Node","constructor","Object","defineProperty","value","calcFollowpos","key","Variable","name","copy","Comment","Assignment","variable","expression","Alternation","nullable","firstpos","lastpos","Concatenation","n","followpos","Repeat","op","buildRepetition","min","max","Infinity","Error","res","i","concat","Leaf","Literal","EndMarker","Tag","peg$subclass","child","parent","ctor","prototype","peg$SyntaxError","message","expected","found","location","captureStackTrace","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","text","escapedParts","parts","length","Array","classEscape","inverted","any","end","other","description","hex","ch","charCodeAt","toString","toUpperCase","replace","describeExpectation","type","describeExpected","descriptions","j","sort","slice","join","describeFound","peg$parse","input","options","peg$FAILED","peg$startRuleFunctions","rules","peg$parserules","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","peg$literalExpectation","peg$c3","peg$c4","peg$classExpectation","peg$c5","peg$c6","peg$c7","v","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","e","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","t","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","m","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","num","parseInt","peg$c55","peg$c56","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","startRule","ignoreCase","peg$endExpectation","peg$computePosDetails","pos","details","p","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","start","offset","peg$fail","push","peg$buildStructuredError","s0","s1","peg$parsestatement","s2","peg$parsestatement_type","peg$parse_","peg$parseassignment","peg$parsecomment","s3","test","charAt","s4","s5","s6","s7","peg$parsevariable","peg$parsealternation","peg$parsename","peg$parseconcatenation","peg$parserepeat","peg$parseterm","peg$parsenumber","peg$parsename_start_char","peg$parsename_char","require$$0","SyntaxError","parse","SymbolTable","statements","externalSymbols","variables","symbols","main","addExternalSymbols","process","statement","processExpression","expr","END_MARKER","buildDFA","root","numSymbols","failState","State","initialState","dstates","marked","u","positions","ux","transitions","len","Uint16Array","accepting","tags","INITIAL_STATE","FAIL_STATE","StateMachine","dfa","stateTable","match","str","self","Symbol","iterator","state","startRun","lastAccepting","lastState","c","apply","actions","tag","string","ast","grammar","build","symbolTable","states","map","from","compile"],"mappings":"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"}