@slidejs/dsl 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +193 -0
- package/dist/ast.d.ts +117 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/compiler.d.ts +15 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +203 -0
- package/dist/index.js.map +1 -0
- package/dist/parser-KEWKxNFb.js +616 -0
- package/dist/parser-KEWKxNFb.js.map +1 -0
- package/dist/parser.d.ts +49 -0
- package/dist/parser.d.ts.map +1 -0
- package/package.json +47 -0
- package/src/generated/parser.js +2992 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-KEWKxNFb.js","sources":["../src/generated/parser.js"],"sourcesContent":["// @generated by Peggy 4.2.0.\n//\n// https://peggyjs.org/\n\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\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 = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\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 = expected.map(describeExpectation);\n var i, j;\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 !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { Start: peg$parseStart };\n var peg$startRuleFunction = peg$parseStart;\n\n var peg$c0 = \"present\";\n var peg$c1 = \"{\";\n var peg$c2 = \"}\";\n var peg$c3 = \"quiz\";\n var peg$c4 = \"survey\";\n var peg$c5 = \"form\";\n var peg$c6 = \"assessment\";\n var peg$c7 = \"rules\";\n var peg$c8 = \"rule\";\n var peg$c9 = \"start\";\n var peg$c10 = \"content\";\n var peg$c11 = \"end\";\n var peg$c12 = \"for\";\n var peg$c13 = \"in\";\n var peg$c14 = \"slide\";\n var peg$c15 = \"dynamic\";\n var peg$c16 = \"text\";\n var peg$c17 = \"name\";\n var peg$c18 = \":\";\n var peg$c19 = \"attrs\";\n var peg$c20 = \"behavior\";\n var peg$c21 = \"transition\";\n var peg$c22 = \"+\";\n var peg$c23 = \".\";\n var peg$c24 = \"\\\"\";\n var peg$c25 = \"'\";\n var peg$c26 = \"\\\\\";\n var peg$c27 = \"n\";\n var peg$c28 = \"r\";\n var peg$c29 = \"t\";\n var peg$c30 = \"true\";\n var peg$c31 = \"false\";\n var peg$c32 = \"//\";\n var peg$c33 = \"/*\";\n var peg$c34 = \"*/\";\n\n var peg$r0 = /^[a-zA-Z_]/;\n var peg$r1 = /^[a-zA-Z0-9_]/;\n var peg$r2 = /^[\"'\\\\]/;\n var peg$r3 = /^[0-9]/;\n var peg$r4 = /^[\\t-\\r \\u2028-\\u2029]/;\n var peg$r5 = /^[ \\t\\v\\f]/;\n var peg$r6 = /^[\\n\\r\\u2028\\u2029]/;\n\n var peg$e0 = peg$literalExpectation(\"present\", false);\n var peg$e1 = peg$literalExpectation(\"{\", false);\n var peg$e2 = peg$literalExpectation(\"}\", false);\n var peg$e3 = peg$literalExpectation(\"quiz\", false);\n var peg$e4 = peg$literalExpectation(\"survey\", false);\n var peg$e5 = peg$literalExpectation(\"form\", false);\n var peg$e6 = peg$literalExpectation(\"assessment\", false);\n var peg$e7 = peg$literalExpectation(\"rules\", false);\n var peg$e8 = peg$literalExpectation(\"rule\", false);\n var peg$e9 = peg$literalExpectation(\"start\", false);\n var peg$e10 = peg$literalExpectation(\"content\", false);\n var peg$e11 = peg$literalExpectation(\"end\", false);\n var peg$e12 = peg$literalExpectation(\"for\", false);\n var peg$e13 = peg$literalExpectation(\"in\", false);\n var peg$e14 = peg$literalExpectation(\"slide\", false);\n var peg$e15 = peg$literalExpectation(\"dynamic\", false);\n var peg$e16 = peg$literalExpectation(\"text\", false);\n var peg$e17 = peg$literalExpectation(\"name\", false);\n var peg$e18 = peg$literalExpectation(\":\", false);\n var peg$e19 = peg$literalExpectation(\"attrs\", false);\n var peg$e20 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"_\"], false, false);\n var peg$e21 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\"], false, false);\n var peg$e22 = peg$literalExpectation(\"behavior\", false);\n var peg$e23 = peg$literalExpectation(\"transition\", false);\n var peg$e24 = peg$literalExpectation(\"+\", false);\n var peg$e25 = peg$literalExpectation(\".\", false);\n var peg$e26 = peg$literalExpectation(\"\\\"\", false);\n var peg$e27 = peg$literalExpectation(\"'\", false);\n var peg$e28 = peg$literalExpectation(\"\\\\\", false);\n var peg$e29 = peg$anyExpectation();\n var peg$e30 = peg$classExpectation([\"\\\"\", \"'\", \"\\\\\"], false, false);\n var peg$e31 = peg$literalExpectation(\"n\", false);\n var peg$e32 = peg$literalExpectation(\"r\", false);\n var peg$e33 = peg$literalExpectation(\"t\", false);\n var peg$e34 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e35 = peg$literalExpectation(\"true\", false);\n var peg$e36 = peg$literalExpectation(\"false\", false);\n var peg$e37 = peg$otherExpectation(\"whitespace\");\n var peg$e38 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", [\"\\u2028\", \"\\u2029\"]], false, false);\n var peg$e39 = peg$classExpectation([\" \", \"\\t\", \"\\v\", \"\\f\"], false, false);\n var peg$e40 = peg$classExpectation([\"\\n\", \"\\r\", \"\\u2028\", \"\\u2029\"], false, false);\n var peg$e41 = peg$literalExpectation(\"//\", false);\n var peg$e42 = peg$literalExpectation(\"/*\", false);\n var peg$e43 = peg$literalExpectation(\"*/\", false);\n\n var peg$f0 = function(presentation) {\n return presentation;\n };\n var peg$f1 = function(type, name, body) {\n return {\n version: \"1.0.0\",\n sourceType: type,\n sourceId: name,\n ...body\n };\n };\n var peg$f2 = function(rules) {\n return { rules };\n };\n var peg$f3 = function(rules) {\n return rules;\n };\n var peg$f4 = function(name, slides) {\n return buildNode(\"rule\", {\n ruleType: \"start\",\n name,\n slides\n });\n };\n var peg$f5 = function(name, body) {\n return buildNode(\"rule\", {\n ruleType: \"content\",\n name,\n body\n });\n };\n var peg$f6 = function(name, slides) {\n return buildNode(\"rule\", {\n ruleType: \"end\",\n name,\n slides\n });\n };\n var peg$f7 = function(variable, collection, body) {\n return buildNode(\"for\", {\n variable,\n collection,\n body\n });\n };\n var peg$f8 = function(variable, collection, body) {\n return buildNode(\"for\", {\n variable,\n collection,\n body\n });\n };\n var peg$f9 = function(slides) {\n return slides;\n };\n var peg$f10 = function(content, behavior) {\n return buildNode(\"slide\", {\n content,\n behavior: behavior || undefined\n });\n };\n var peg$f11 = function(name, attrs) {\n return buildNode(\"dynamic\", {\n component: name,\n props: attrs\n });\n };\n var peg$f12 = function(lines) {\n return buildNode(\"text\", {\n lines\n });\n };\n var peg$f13 = function(name) {\n return name;\n };\n var peg$f14 = function(attrs) {\n return buildAttrs(attrs);\n };\n var peg$f15 = function(attrs) {\n return attrs;\n };\n var peg$f16 = function(key, value) {\n return [key, value];\n };\n var peg$f17 = function(first, rest) {\n return first + rest.join('');\n };\n var peg$f18 = function(lines) {\n return lines;\n };\n var peg$f19 = function(expr) {\n return expr;\n };\n var peg$f20 = function(transition) {\n return buildNode(\"behavior\", {\n transition\n });\n };\n var peg$f21 = function(transType, options) {\n return buildNode(\"transition\", {\n transType,\n options: options || {}\n });\n };\n var peg$f22 = function(first, rest) {\n return first + rest.join('');\n };\n var peg$f23 = function(opts) {\n return buildOptions(opts);\n };\n var peg$f24 = function(key, value) {\n return [key, value];\n };\n var peg$f25 = function(left, right) {\n return buildNode(\"binary\", {\n operator: \"+\",\n left,\n right\n });\n };\n var peg$f26 = function(head, tail) {\n return buildNode(\"member\", {\n object: head,\n properties: tail.map(t => t[1])\n });\n };\n var peg$f27 = function(id) {\n return buildNode(\"member\", {\n object: id,\n properties: []\n });\n };\n var peg$f28 = function(first, rest) {\n return first + rest.join('');\n };\n var peg$f29 = function(first, rest) {\n return first + rest.join('');\n };\n var peg$f30 = function(chars) {\n return chars.join('');\n };\n var peg$f31 = function(chars) {\n return chars.join('');\n };\n var peg$f32 = function(char) { return char; };\n var peg$f33 = function(sequence) { return sequence; };\n var peg$f34 = function(char) { return char; };\n var peg$f35 = function(sequence) { return sequence; };\n var peg$f36 = function() { return \"\\n\"; };\n var peg$f37 = function() { return \"\\r\"; };\n var peg$f38 = function() { return \"\\t\"; };\n var peg$f39 = function(digits) {\n return buildNode(\"number\", {\n value: parseInt(digits.join(''), 10)\n });\n };\n var peg$f40 = function() {\n return buildNode(\"boolean\", {\n value: true\n });\n };\n var peg$f41 = function() {\n return buildNode(\"boolean\", {\n value: false\n });\n };\n var peg$currPos = options.peg$currPos | 0;\n var peg$savedPos = peg$currPos;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = peg$currPos;\n var peg$maxFailExpected = options.peg$maxFailExpected || [];\n var peg$silentFails = options.peg$silentFails | 0;\n\n var peg$result;\n\n if (options.startRule) {\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 offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : 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 !== undefined\n ? location\n : 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];\n var p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--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\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\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 if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\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$parseStart() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parsePresentation();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsePresentation() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c0) {\n s1 = peg$c0;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n s3 = peg$parseSourceType();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseStringLiteral();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s7 = peg$c1;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n s9 = peg$parsePresentationBody();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c2;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f1(s3, s5, s9);\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$parseSourceType() {\n var s0;\n\n if (input.substr(peg$currPos, 4) === peg$c3) {\n s0 = peg$c3;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c4) {\n s0 = peg$c4;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c5) {\n s0 = peg$c5;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c6) {\n s0 = peg$c6;\n peg$currPos += 10;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsePresentationBody() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c7) {\n s1 = peg$c7;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseRuleList();\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s5);\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$parseRuleList() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseRule();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseRule();\n }\n peg$savedPos = s0;\n s1 = peg$f3(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseRule() {\n var s0;\n\n s0 = peg$parseStartRule();\n if (s0 === peg$FAILED) {\n s0 = peg$parseContentRule();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEndRule();\n }\n }\n\n return s0;\n }\n\n function peg$parseStartRule() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c8) {\n s1 = peg$c8;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.substr(peg$currPos, 5) === peg$c9) {\n s3 = peg$c9;\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseStringLiteral();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s7 = peg$c1;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n s9 = peg$parseSlideList();\n s10 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c2;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f4(s5, s9);\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$parseContentRule() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c8) {\n s1 = peg$c8;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.substr(peg$currPos, 7) === peg$c10) {\n s3 = peg$c10;\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseStringLiteral();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s7 = peg$c1;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n s9 = peg$parseContentBody();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c2;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f5(s5, s9);\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$parseEndRule() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c8) {\n s1 = peg$c8;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.substr(peg$currPos, 3) === peg$c11) {\n s3 = peg$c11;\n peg$currPos += 3;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseStringLiteral();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s7 = peg$c1;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n s9 = peg$parseSlideList();\n s10 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c2;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f6(s5, s9);\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$parseContentBody() {\n var s0;\n\n s0 = peg$parseForLoop();\n if (s0 === peg$FAILED) {\n s0 = peg$parseSlideList();\n }\n\n return s0;\n }\n\n function peg$parseForLoop() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n s3 = peg$parseIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (input.substr(peg$currPos, 2) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parsePathExpression();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s9 = peg$c1;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n s11 = peg$parseForLoopBody();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s13 = peg$c2;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f7(s3, s7, s11);\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$parseForLoopBody() {\n var s0;\n\n s0 = peg$parseNestedForLoop();\n if (s0 === peg$FAILED) {\n s0 = peg$parseSlideList();\n }\n\n return s0;\n }\n\n function peg$parseNestedForLoop() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n s3 = peg$parseIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (input.substr(peg$currPos, 2) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parsePathExpression();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s9 = peg$c1;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n s11 = peg$parseSlideList();\n s12 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s13 = peg$c2;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f8(s3, s7, s11);\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$parseSlideList() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSlide();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSlide();\n }\n peg$savedPos = s0;\n s1 = peg$f9(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseSlide() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseContent();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseBehavior();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n s8 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s9 = peg$c2;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f10(s5, s7);\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$parseContent() {\n var s0;\n\n s0 = peg$parseDynamicContent();\n if (s0 === peg$FAILED) {\n s0 = peg$parseTextContent();\n }\n\n return s0;\n }\n\n function peg$parseDynamicContent() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c10) {\n s1 = peg$c10;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.substr(peg$currPos, 7) === peg$c15) {\n s3 = peg$c15;\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseComponentName();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n s9 = peg$parseAttrs();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c2;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f11(s7, s9);\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$parseTextContent() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c10) {\n s1 = peg$c10;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.substr(peg$currPos, 4) === peg$c16) {\n s3 = peg$c16;\n peg$currPos += 4;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseTextLineList();\n s8 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s9 = peg$c2;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f12(s7);\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$parseComponentName() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseStringLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f13(s5);\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$parseAttrs() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseAttrList();\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f14(s5);\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$parseAttrList() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseAttr();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseAttr();\n }\n peg$savedPos = s0;\n s1 = peg$f15(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseAttr() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseAttrKey();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseAttrValue();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f16(s1, s5);\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$parseAttrValue() {\n var s0;\n\n s0 = peg$parseStringLiteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNumberLiteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parseBooleanLiteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parsePathExpression();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseAttrKey() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r0.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n }\n peg$savedPos = s0;\n s0 = peg$f17(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTextLineList() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseTextLine();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseTextLine();\n }\n peg$savedPos = s0;\n s1 = peg$f18(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseTextLine() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseExpression();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f19(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseBehavior() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c20) {\n s1 = peg$c20;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseTransition();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f20(s5);\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$parseTransition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 10) === peg$c21) {\n s1 = peg$c21;\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n s3 = peg$parseTransitionType();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseTransitionOptions();\n s8 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s9 = peg$c2;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f21(s3, s7);\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$parseTransitionType() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r0.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n }\n peg$savedPos = s0;\n s0 = peg$f22(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTransitionOptions() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseTransitionOption();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseTransitionOption();\n }\n peg$savedPos = s0;\n s1 = peg$f23(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseTransitionOption() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseIdentifier();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseExpression();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f24(s1, s5);\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$parseExpression() {\n var s0;\n\n s0 = peg$parseBinaryExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parsePrimaryExpression();\n }\n\n return s0;\n }\n\n function peg$parseBinaryExpression() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsePrimaryExpression();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 43) {\n s3 = peg$c22;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseExpression();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f25(s1, s5);\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$parsePrimaryExpression() {\n var s0;\n\n s0 = peg$parseStringLiteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNumberLiteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parseBooleanLiteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parsePathExpression();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsePathExpression() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseIdentifier();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c23;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsePropertyName();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c23;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsePropertyName();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f26(s1, s2);\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$parseIdentifier();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f27(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsePropertyName() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r0.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n }\n peg$savedPos = s0;\n s0 = peg$f28(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseIdentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseReservedWord();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r1.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r1.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n }\n peg$savedPos = s0;\n s0 = peg$f29(s2, s3);\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$parseStringLiteral() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c24;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseDoubleStringCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseDoubleStringCharacter();\n }\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c24;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f30(s2);\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 if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c25;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSingleStringCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSingleStringCharacter();\n }\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c25;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f31(s2);\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 return s0;\n }\n\n function peg$parseDoubleStringCharacter() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s2 = peg$c24;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c26;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > 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$e29); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f32(s3);\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 if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c26;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseEscapeSequence();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f33(s2);\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 return s0;\n }\n\n function peg$parseSingleStringCharacter() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 39) {\n s2 = peg$c25;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c26;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > 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$e29); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f34(s3);\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 if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c26;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseEscapeSequence();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f35(s2);\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 return s0;\n }\n\n function peg$parseEscapeSequence() {\n var s0, s1;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r2.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 110) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f36();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 114) {\n s1 = peg$c28;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f37();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 116) {\n s1 = peg$c29;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f38();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseNumberLiteral() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r3.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r3.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f39(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseBooleanLiteral() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c30) {\n s1 = peg$c30;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e35); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f40();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e36); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f41();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseReservedWord() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c0) {\n s1 = peg$c0;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c8) {\n s1 = peg$c8;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c9) {\n s1 = peg$c9;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c10) {\n s1 = peg$c10;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c11) {\n s1 = peg$c11;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c13) {\n s1 = peg$c13;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c16) {\n s1 = peg$c16;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c20) {\n s1 = peg$c20;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 10) === peg$c21) {\n s1 = peg$c21;\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseIdentifierPart();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [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$parseIdentifierPart() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r1.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n s1 = input.charAt(peg$currPos);\n if (peg$r4.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e38); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$parseComment();\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = input.charAt(peg$currPos);\n if (peg$r4.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e38); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$parseComment();\n }\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e37); }\n\n return s0;\n }\n\n function peg$parseWhiteSpace() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r5.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e39); }\n }\n\n return s0;\n }\n\n function peg$parseLineTerminator() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r6.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e40); }\n }\n\n return s0;\n }\n\n function peg$parseComment() {\n var s0;\n\n s0 = peg$parseSingleLineComment();\n if (s0 === peg$FAILED) {\n s0 = peg$parseMultiLineComment();\n }\n\n return s0;\n }\n\n function peg$parseSingleLineComment() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c32) {\n s1 = peg$c32;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e41); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseLineTerminator();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseLineTerminator();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMultiLineComment() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c33) {\n s1 = peg$c33;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e42); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c34) {\n s5 = peg$c34;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e43); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c34) {\n s5 = peg$c34;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e43); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = undefined;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (input.substr(peg$currPos, 2) === peg$c34) {\n s3 = peg$c34;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e43); }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, 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\n return s0;\n }\n\n\n /**\n * 构建 AST 节点\n */\n function buildNode(type, data) {\n return { type, ...data };\n }\n\n /**\n * 构建属性对象\n */\n function buildAttrs(attrs) {\n return Object.fromEntries(attrs);\n }\n\n /**\n * 构建选项对象\n */\n function buildOptions(opts) {\n return Object.fromEntries(opts);\n }\n\n peg$result = peg$startRuleFunction();\n\n if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos\n });\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\nconst peg$allowedStartRules = [\n \"Start\"\n];\n\nexport {\n peg$allowedStartRules as StartRules,\n peg$SyntaxError as SyntaxError,\n peg$parse as parse\n};\n"],"names":["peg$subclass","child","parent","C","peg$SyntaxError","message","expected","found","location","self","peg$padEnd","str","targetLength","padString","sources","src","k","s","offset_s","loc","e","filler","line","last","hatLen","DESCRIBE_EXPECTATION_FNS","expectation","literalEscape","escapedParts","part","classEscape","hex","ch","describeExpectation","describeExpected","descriptions","i","j","describeFound","peg$parse","input","options","peg$FAILED","peg$source","peg$startRuleFunctions","peg$parseStart","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","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","peg$r0","peg$r1","peg$r2","peg$r3","peg$r4","peg$r6","peg$e0","peg$literalExpectation","peg$e1","peg$e2","peg$e3","peg$e4","peg$e5","peg$e6","peg$e7","peg$e8","peg$e9","peg$e10","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$e16","peg$e17","peg$e18","peg$e19","peg$e20","peg$classExpectation","peg$e21","peg$e22","peg$e23","peg$e24","peg$e25","peg$e26","peg$e27","peg$e28","peg$e29","peg$anyExpectation","peg$e30","peg$e31","peg$e32","peg$e33","peg$e34","peg$e35","peg$e36","peg$e37","peg$otherExpectation","peg$e38","peg$e40","peg$e41","peg$e42","peg$e43","peg$f0","presentation","peg$f1","type","name","body","peg$f2","rules","peg$f3","peg$f4","slides","buildNode","peg$f5","peg$f6","peg$f7","variable","collection","peg$f8","peg$f9","peg$f10","content","behavior","peg$f11","attrs","peg$f12","lines","peg$f13","peg$f14","buildAttrs","peg$f15","peg$f16","key","value","peg$f17","first","rest","peg$f18","peg$f19","expr","peg$f20","transition","peg$f21","transType","peg$f22","peg$f23","opts","buildOptions","peg$f24","peg$f25","left","right","peg$f26","head","tail","t","peg$f27","id","peg$f28","peg$f29","peg$f30","chars","peg$f31","peg$f32","char","peg$f33","sequence","peg$f34","peg$f35","peg$f36","peg$f37","peg$f38","peg$f39","digits","peg$f40","peg$f41","peg$currPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","text","ignoreCase","parts","inverted","peg$endExpectation","description","peg$computePosDetails","pos","details","p","peg$computeLocation","startPos","endPos","offset","startPosDetails","endPosDetails","res","peg$fail","peg$buildStructuredError","s0","s2","peg$parse_","peg$parsePresentation","s1","s3","s5","s7","s9","s11","peg$parseSourceType","peg$parseStringLiteral","peg$parsePresentationBody","peg$parseRuleList","peg$parseRule","peg$parseStartRule","peg$parseContentRule","peg$parseEndRule","peg$parseSlideList","peg$parseContentBody","peg$parseForLoop","s13","peg$parseIdentifier","peg$parsePathExpression","peg$parseForLoopBody","peg$parseNestedForLoop","peg$parseSlide","peg$parseContent","peg$parseBehavior","peg$parseDynamicContent","peg$parseTextContent","peg$parseComponentName","peg$parseAttrs","peg$parseTextLineList","peg$parseAttrList","peg$parseAttr","peg$parseAttrKey","peg$parseAttrValue","peg$parseNumberLiteral","peg$parseBooleanLiteral","peg$parseTextLine","peg$parseExpression","peg$parseTransition","peg$parseTransitionType","peg$parseTransitionOptions","peg$parseTransitionOption","peg$parseBinaryExpression","peg$parsePrimaryExpression","s4","peg$parsePropertyName","peg$parseReservedWord","peg$parseDoubleStringCharacter","peg$parseSingleStringCharacter","peg$parseEscapeSequence","peg$parseIdentifierPart","peg$parseComment","peg$parseLineTerminator","peg$parseSingleLineComment","peg$parseMultiLineComment","data"],"mappings":"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"}
|
package/dist/parser.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { PresentationNode } from './ast';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Parser 错误
|
|
5
|
+
*/
|
|
6
|
+
export declare class ParseError extends Error {
|
|
7
|
+
location?: {
|
|
8
|
+
start: {
|
|
9
|
+
line: number;
|
|
10
|
+
column: number;
|
|
11
|
+
offset: number;
|
|
12
|
+
};
|
|
13
|
+
end: {
|
|
14
|
+
line: number;
|
|
15
|
+
column: number;
|
|
16
|
+
offset: number;
|
|
17
|
+
};
|
|
18
|
+
} | undefined;
|
|
19
|
+
constructor(message: string, location?: {
|
|
20
|
+
start: {
|
|
21
|
+
line: number;
|
|
22
|
+
column: number;
|
|
23
|
+
offset: number;
|
|
24
|
+
};
|
|
25
|
+
end: {
|
|
26
|
+
line: number;
|
|
27
|
+
column: number;
|
|
28
|
+
offset: number;
|
|
29
|
+
};
|
|
30
|
+
} | undefined);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parser 接口
|
|
34
|
+
*/
|
|
35
|
+
export interface Parser {
|
|
36
|
+
/**
|
|
37
|
+
* 解析 Slide DSL 源代码
|
|
38
|
+
*/
|
|
39
|
+
parse(source: string): PresentationNode;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 创建 Parser 实例
|
|
43
|
+
*/
|
|
44
|
+
export declare function createParser(): Promise<Parser>;
|
|
45
|
+
/**
|
|
46
|
+
* 便捷函数:直接解析 DSL 源代码
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseSlideDSL(source: string): Promise<PresentationNode>;
|
|
49
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAG1B,QAAQ,CAAC,EAAE;QAChB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxD,GAAG,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD;gBAJD,OAAO,EAAE,MAAM,EACR,QAAQ,CAAC,EAAE;QAChB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxD,GAAG,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD,YAAA;CAKJ;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACzC;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBpD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgB7E"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@slidejs/dsl",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Slide DSL 语法解析器和编译器",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"src/generated/parser.js"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"generate:parser": "peggy --format es -o src/generated/parser.js src/grammar.peggy",
|
|
21
|
+
"build": "pnpm generate:parser && vite build",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"clean": "rm -rf dist src/generated"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@slidejs/core": "workspace:*",
|
|
29
|
+
"@slidejs/context": "workspace:*"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"peggy": "^4.0.0",
|
|
33
|
+
"typescript": "^5.3.3",
|
|
34
|
+
"vite": "^5.0.0",
|
|
35
|
+
"vite-plugin-dts": "^3.0.0",
|
|
36
|
+
"vitest": "^1.0.0"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"slide",
|
|
40
|
+
"dsl",
|
|
41
|
+
"parser",
|
|
42
|
+
"compiler",
|
|
43
|
+
"presentation"
|
|
44
|
+
],
|
|
45
|
+
"author": "",
|
|
46
|
+
"license": "MIT"
|
|
47
|
+
}
|