UNPKG

puzzlescript

Version:

Play PuzzleScript games in your terminal!

517 lines 107 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); // Generated automatically by nearley, version 2.20.1 // http://github.com/Hardmath123/nearley // Bypasses TS6133. Allow declared but unused functions. // @ts-ignore function id(d) { return d[0]; } // tslint:disable // Disable all linting because the file is autogenerated (& out of our control) const ast = __importStar(require("./astTypes")); const debugBlackList = new Set([]); const debugWhiteList = new Set([]); const toDebug = (name, fn) => { if (process.env.NODE_ENV == 'debug-parser' || debugWhiteList.has(name)) { // Skip debug mode for any items on the blacklist if (debugBlackList.has(name)) { return null; } // return either the custom function provided, or the default one for debugging return fn || function (args) { return { type: name, args: args }; }; } else { return null; // use the non-debug function } }; const nuller = (a) => null; // const debugRule = (msg) => (a) => { debugger; console.log(msg, a); return a } const concatChars = ([a]) => a.join(''); const extractFirst = (ary) => ary.map(subArray => { if (subArray.length !== 1) { throw new Error(`BUG: Expected items to only have one element (usually used in listOf[...])`); } else { return subArray[0]; } }); const extractSecond = (ary) => ary.map(subArray => { if (subArray.length < 2) { throw new Error(`BUG: Expected items to have at least 2 elements (usually used in listOf[...])`); } else { return subArray[1]; } }); const extractThird = (ary) => ary.map(subArray => { if (subArray.length < 3) { throw new Error(`BUG: Expected items to have at least 3 elements (usually used in listOf[...])`); } else { return subArray[2]; } }); function nonemptyListOf([first, rest] /*[T, T[][]]*/) { const f = first; const r = rest; return [f].concat(r.map(([_1, child]) => child)); } const upperId = ([id]) => id.toUpperCase(); const TILE_MODIFIERS = new Set([ '...', 'AGAIN', 'DEBUGGER', 'NO', 'LEFT', 'RIGHT', 'UP', 'DOWN', 'RANDOMDIR', 'RANDOM', 'STATIONARY', 'MOVING', 'ACTION', 'VERTICAL', 'HORIZONTAL', 'PERPENDICULAR', 'PARALLEL', 'ORTHOGONAL', '^', '<', '>', 'V', ]); ; ; ; ; const grammar = { Lexer: undefined, ParserRules: [ { "name": "main$ebnf$1", "symbols": [] }, { "name": "main$ebnf$1", "symbols": ["main$ebnf$1", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$2", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$2", "symbols": ["main$ebnf$2", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$3$macrocall$2", "symbols": ["t_OBJECTS"] }, { "name": "main$ebnf$3$macrocall$3", "symbols": ["Sprite"] }, { "name": "main$ebnf$3$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$3$macrocall$1$ebnf$1", "symbols": ["main$ebnf$3$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$3$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$3$macrocall$1$ebnf$2", "symbols": ["main$ebnf$3$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$3$macrocall$1$ebnf$3", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$3$macrocall$1$ebnf$3", "symbols": ["main$ebnf$3$macrocall$1$ebnf$3", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$3$macrocall$1$ebnf$4", "symbols": [] }, { "name": "main$ebnf$3$macrocall$1$ebnf$4$subexpression$1", "symbols": ["main$ebnf$3$macrocall$3"] }, { "name": "main$ebnf$3$macrocall$1$ebnf$4", "symbols": ["main$ebnf$3$macrocall$1$ebnf$4", "main$ebnf$3$macrocall$1$ebnf$4$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$3$macrocall$1", "symbols": ["_", "main$ebnf$3$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$3$macrocall$2", "lineTerminator", "_", "main$ebnf$3$macrocall$1$ebnf$2", "main$ebnf$3$macrocall$1$ebnf$3", "main$ebnf$3$macrocall$1$ebnf$4"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$3", "symbols": ["main$ebnf$3$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$3", "symbols": [], "postprocess": () => null }, { "name": "main$ebnf$4$macrocall$2", "symbols": ["t_LEGEND"] }, { "name": "main$ebnf$4$macrocall$3", "symbols": ["LegendTile"] }, { "name": "main$ebnf$4$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$4$macrocall$1$ebnf$1", "symbols": ["main$ebnf$4$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$4$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$4$macrocall$1$ebnf$2", "symbols": ["main$ebnf$4$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$4$macrocall$1$ebnf$3", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$4$macrocall$1$ebnf$3", "symbols": ["main$ebnf$4$macrocall$1$ebnf$3", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$4$macrocall$1$ebnf$4", "symbols": [] }, { "name": "main$ebnf$4$macrocall$1$ebnf$4$subexpression$1", "symbols": ["main$ebnf$4$macrocall$3"] }, { "name": "main$ebnf$4$macrocall$1$ebnf$4", "symbols": ["main$ebnf$4$macrocall$1$ebnf$4", "main$ebnf$4$macrocall$1$ebnf$4$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$4$macrocall$1", "symbols": ["_", "main$ebnf$4$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$4$macrocall$2", "lineTerminator", "_", "main$ebnf$4$macrocall$1$ebnf$2", "main$ebnf$4$macrocall$1$ebnf$3", "main$ebnf$4$macrocall$1$ebnf$4"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$4", "symbols": ["main$ebnf$4$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$4", "symbols": [], "postprocess": () => null }, { "name": "main$ebnf$5$macrocall$2", "symbols": ["t_SOUNDS"] }, { "name": "main$ebnf$5$macrocall$3", "symbols": ["SoundItem"] }, { "name": "main$ebnf$5$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$5$macrocall$1$ebnf$1", "symbols": ["main$ebnf$5$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$5$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$5$macrocall$1$ebnf$2", "symbols": ["main$ebnf$5$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$5$macrocall$1$ebnf$3", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$5$macrocall$1$ebnf$3", "symbols": ["main$ebnf$5$macrocall$1$ebnf$3", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$5$macrocall$1$ebnf$4", "symbols": [] }, { "name": "main$ebnf$5$macrocall$1$ebnf$4$subexpression$1", "symbols": ["main$ebnf$5$macrocall$3"] }, { "name": "main$ebnf$5$macrocall$1$ebnf$4", "symbols": ["main$ebnf$5$macrocall$1$ebnf$4", "main$ebnf$5$macrocall$1$ebnf$4$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$5$macrocall$1", "symbols": ["_", "main$ebnf$5$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$5$macrocall$2", "lineTerminator", "_", "main$ebnf$5$macrocall$1$ebnf$2", "main$ebnf$5$macrocall$1$ebnf$3", "main$ebnf$5$macrocall$1$ebnf$4"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$5", "symbols": ["main$ebnf$5$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$5", "symbols": [], "postprocess": () => null }, { "name": "main$ebnf$6$macrocall$2", "symbols": ["t_COLLISIONLAYERS"] }, { "name": "main$ebnf$6$macrocall$3", "symbols": ["CollisionLayerItem"] }, { "name": "main$ebnf$6$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$6$macrocall$1$ebnf$1", "symbols": ["main$ebnf$6$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$6$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$6$macrocall$1$ebnf$2", "symbols": ["main$ebnf$6$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$6$macrocall$1$ebnf$3", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$6$macrocall$1$ebnf$3", "symbols": ["main$ebnf$6$macrocall$1$ebnf$3", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$6$macrocall$1$ebnf$4", "symbols": [] }, { "name": "main$ebnf$6$macrocall$1$ebnf$4$subexpression$1", "symbols": ["main$ebnf$6$macrocall$3"] }, { "name": "main$ebnf$6$macrocall$1$ebnf$4", "symbols": ["main$ebnf$6$macrocall$1$ebnf$4", "main$ebnf$6$macrocall$1$ebnf$4$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$6$macrocall$1", "symbols": ["_", "main$ebnf$6$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$6$macrocall$2", "lineTerminator", "_", "main$ebnf$6$macrocall$1$ebnf$2", "main$ebnf$6$macrocall$1$ebnf$3", "main$ebnf$6$macrocall$1$ebnf$4"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$6", "symbols": ["main$ebnf$6$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$6", "symbols": [], "postprocess": () => null }, { "name": "main$ebnf$7$macrocall$2", "symbols": ["t_RULES"] }, { "name": "main$ebnf$7$macrocall$3", "symbols": ["RuleItem"] }, { "name": "main$ebnf$7$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$7$macrocall$1$ebnf$1", "symbols": ["main$ebnf$7$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$7$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$7$macrocall$1$ebnf$2", "symbols": ["main$ebnf$7$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$7$macrocall$1$ebnf$3", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$7$macrocall$1$ebnf$3", "symbols": ["main$ebnf$7$macrocall$1$ebnf$3", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$7$macrocall$1$ebnf$4", "symbols": [] }, { "name": "main$ebnf$7$macrocall$1$ebnf$4$subexpression$1", "symbols": ["main$ebnf$7$macrocall$3"] }, { "name": "main$ebnf$7$macrocall$1$ebnf$4", "symbols": ["main$ebnf$7$macrocall$1$ebnf$4", "main$ebnf$7$macrocall$1$ebnf$4$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$7$macrocall$1", "symbols": ["_", "main$ebnf$7$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$7$macrocall$2", "lineTerminator", "_", "main$ebnf$7$macrocall$1$ebnf$2", "main$ebnf$7$macrocall$1$ebnf$3", "main$ebnf$7$macrocall$1$ebnf$4"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$7", "symbols": ["main$ebnf$7$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$7", "symbols": [], "postprocess": () => null }, { "name": "main$ebnf$8$macrocall$2", "symbols": ["t_WINCONDITIONS"] }, { "name": "main$ebnf$8$macrocall$3", "symbols": ["WinConditionItem"] }, { "name": "main$ebnf$8$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$8$macrocall$1$ebnf$1", "symbols": ["main$ebnf$8$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$8$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$8$macrocall$1$ebnf$2", "symbols": ["main$ebnf$8$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$8$macrocall$1$ebnf$3", "symbols": ["lineTerminator"] }, { "name": "main$ebnf$8$macrocall$1$ebnf$3", "symbols": ["main$ebnf$8$macrocall$1$ebnf$3", "lineTerminator"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$8$macrocall$1$ebnf$4", "symbols": [] }, { "name": "main$ebnf$8$macrocall$1$ebnf$4$subexpression$1", "symbols": ["main$ebnf$8$macrocall$3"] }, { "name": "main$ebnf$8$macrocall$1$ebnf$4", "symbols": ["main$ebnf$8$macrocall$1$ebnf$4", "main$ebnf$8$macrocall$1$ebnf$4$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$8$macrocall$1", "symbols": ["_", "main$ebnf$8$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$8$macrocall$2", "lineTerminator", "_", "main$ebnf$8$macrocall$1$ebnf$2", "main$ebnf$8$macrocall$1$ebnf$3", "main$ebnf$8$macrocall$1$ebnf$4"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$8", "symbols": ["main$ebnf$8$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$8", "symbols": [], "postprocess": () => null }, { "name": "main$ebnf$9$macrocall$2", "symbols": ["t_LEVELS"] }, { "name": "main$ebnf$9$macrocall$3", "symbols": ["LevelItem"] }, { "name": "main$ebnf$9$macrocall$1$ebnf$1", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$9$macrocall$1$ebnf$1", "symbols": ["main$ebnf$9$macrocall$1$ebnf$1", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$9$macrocall$1$ebnf$2", "symbols": [{ "literal": "=" }] }, { "name": "main$ebnf$9$macrocall$1$ebnf$2", "symbols": ["main$ebnf$9$macrocall$1$ebnf$2", { "literal": "=" }], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$9$macrocall$1$ebnf$3", "symbols": [] }, { "name": "main$ebnf$9$macrocall$1$ebnf$3$subexpression$1", "symbols": ["main$ebnf$9$macrocall$3"] }, { "name": "main$ebnf$9$macrocall$1$ebnf$3", "symbols": ["main$ebnf$9$macrocall$1$ebnf$3", "main$ebnf$9$macrocall$1$ebnf$3$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "main$ebnf$9$macrocall$1", "symbols": ["_", "main$ebnf$9$macrocall$1$ebnf$1", "lineTerminator", "_", "main$ebnf$9$macrocall$2", "lineTerminator", "_", "main$ebnf$9$macrocall$1$ebnf$2", "lineTerminator", "main$ebnf$9$macrocall$1$ebnf$3"], "postprocess": toDebug('Section', function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return { type: 'SECTION', name: name, items: extractFirst(extractFirst(items)) }; }) || function ([_0, _1, _2, _3, name, _5, _6, _7, _8, items]) { return extractFirst(extractFirst(items)); } }, { "name": "main$ebnf$9", "symbols": ["main$ebnf$9$macrocall$1"], "postprocess": id }, { "name": "main$ebnf$9", "symbols": [], "postprocess": () => null }, { "name": "main", "symbols": ["main$ebnf$1", "_", "Title", "main$ebnf$2", "OptionalMetaData", "main$ebnf$3", "main$ebnf$4", "main$ebnf$5", "main$ebnf$6", "main$ebnf$7", "main$ebnf$8", "main$ebnf$9"], "postprocess": toDebug('Section') || function ([_0, _1, title, _2, metadata, sprites, legendItems, sounds, collisionLayers, rules, winConditions, levelsAsSingleArray]) { const levels = []; let currentMapLevel = null; for (const levelRowItem of levelsAsSingleArray || []) { switch (levelRowItem.type) { case 'LEVEL_ROW': if (currentMapLevel) { currentMapLevel.push(levelRowItem); } else { currentMapLevel = [levelRowItem]; } break; case 'LEVEL_MESSAGE': if (currentMapLevel) { levels.push({ type: 'LEVEL_MAP', cells: currentMapLevel.map(row => row.cells), _sourceOffset: currentMapLevel[0]._sourceOffset }); currentMapLevel = null; } levels.push(levelRowItem); break; case 'LEVEL_SEPARATOR': if (currentMapLevel) { levels.push({ type: 'LEVEL_MAP', cells: currentMapLevel.map(row => row.cells), _sourceOffset: currentMapLevel[0]._sourceOffset }); currentMapLevel = null; } break; default: throw new Error(`BUG: Unsupported level row type "${levelRowItem.type}"`); } } // add the last level if (currentMapLevel) { levels.push({ type: 'LEVEL_MAP', cells: currentMapLevel.map(row => row.cells), _sourceOffset: currentMapLevel[0]._sourceOffset }); currentMapLevel = null; } return { title: title.value, metadata: metadata.value, sprites: sprites || [], legendItems: legendItems || [], sounds: sounds || [], collisionLayers: collisionLayers || [], rules: rules || [], winConditions: winConditions || [], levels: levels }; } }, { "name": "_$ebnf$1", "symbols": [] }, { "name": "_$ebnf$1$subexpression$1", "symbols": ["whitespaceChar"] }, { "name": "_$ebnf$1$subexpression$1", "symbols": ["multiLineComment"] }, { "name": "_$ebnf$1", "symbols": ["_$ebnf$1", "_$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "_", "symbols": ["_$ebnf$1"], "postprocess": toDebug('whitespace') || nuller }, { "name": "__$ebnf$1$subexpression$1", "symbols": ["whitespaceChar"] }, { "name": "__$ebnf$1$subexpression$1", "symbols": ["multiLineComment"] }, { "name": "__$ebnf$1", "symbols": ["__$ebnf$1$subexpression$1"] }, { "name": "__$ebnf$1$subexpression$2", "symbols": ["whitespaceChar"] }, { "name": "__$ebnf$1$subexpression$2", "symbols": ["multiLineComment"] }, { "name": "__$ebnf$1", "symbols": ["__$ebnf$1", "__$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "__", "symbols": ["__$ebnf$1"], "postprocess": toDebug('whitespace') || nuller }, { "name": "multiLineComment$ebnf$1", "symbols": [] }, { "name": "multiLineComment$ebnf$1", "symbols": ["multiLineComment$ebnf$1", "textOrComment"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "multiLineComment", "symbols": [{ "literal": "(" }, "multiLineComment$ebnf$1", { "literal": ")" }], "postprocess": toDebug('multiLineComment') || nuller }, { "name": "textOrComment", "symbols": ["multiLineComment"], "postprocess": nuller }, { "name": "textOrComment", "symbols": [/[^\(\)]/], "postprocess": nuller }, { "name": "whitespaceChar", "symbols": [{ "literal": " " }] }, { "name": "whitespaceChar", "symbols": [{ "literal": "\t" }] }, { "name": "newline", "symbols": [{ "literal": "\n" }] }, { "name": "digit", "symbols": [/[0-9]/], "postprocess": id }, { "name": "hexDigit", "symbols": [/[0-9a-fA-F]/], "postprocess": id }, { "name": "letter", "symbols": [/[^\n \(\)]/], "postprocess": id }, { "name": "integer$ebnf$1", "symbols": ["digit"] }, { "name": "integer$ebnf$1", "symbols": ["integer$ebnf$1", "digit"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "integer", "symbols": ["integer$ebnf$1"], "postprocess": ([chars]) => parseInt(chars.join(''), 10) }, { "name": "word$ebnf$1", "symbols": [/[^\n \(]/] }, { "name": "word$ebnf$1", "symbols": ["word$ebnf$1", /[^\n \(]/], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "word", "symbols": ["word$ebnf$1"], "postprocess": toDebug('WORD') || concatChars }, { "name": "words$macrocall$2", "symbols": ["word"] }, { "name": "words$macrocall$3$ebnf$1", "symbols": ["whitespaceChar"] }, { "name": "words$macrocall$3$ebnf$1", "symbols": ["words$macrocall$3$ebnf$1", "whitespaceChar"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "words$macrocall$3", "symbols": ["words$macrocall$3$ebnf$1"] }, { "name": "words$macrocall$1$ebnf$1", "symbols": [] }, { "name": "words$macrocall$1$ebnf$1$subexpression$1", "symbols": ["words$macrocall$3", "words$macrocall$2"] }, { "name": "words$macrocall$1$ebnf$1", "symbols": ["words$macrocall$1$ebnf$1", "words$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "words$macrocall$1", "symbols": ["words$macrocall$2", "words$macrocall$1$ebnf$1"], "postprocess": toDebug('nonemptyListOf') || nonemptyListOf }, { "name": "words", "symbols": ["words$macrocall$1"], "postprocess": toDebug('WORDS') || function ([a]) { return extractFirst(a).join(' '); } }, { "name": "lineTerminator", "symbols": ["_", "newline"], "postprocess": toDebug('lineTerminator') || nuller }, { "name": "sourceCharacter", "symbols": [/[^\n ]/] }, { "name": "nonVarChar", "symbols": ["whitespaceChar"] }, { "name": "nonVarChar", "symbols": ["newline"] }, { "name": "nonVarChar", "symbols": [{ "literal": "[" }] }, { "name": "nonVarChar", "symbols": [{ "literal": "]" }] }, { "name": "nonVarChar", "symbols": [{ "literal": "(" }] }, { "name": "nonVarChar", "symbols": [{ "literal": ")" }] }, { "name": "nonVarChar", "symbols": [{ "literal": "|" }] }, { "name": "nonVarChar", "symbols": [{ "literal": "." }] }, { "name": "decimal", "symbols": ["decimalWithLeadingNumber"] }, { "name": "decimal", "symbols": ["decimalWithLeadingPeriod"] }, { "name": "decimalWithLeadingNumber$ebnf$1", "symbols": ["digit"] }, { "name": "decimalWithLeadingNumber$ebnf$1", "symbols": ["decimalWithLeadingNumber$ebnf$1", "digit"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "decimalWithLeadingNumber$ebnf$2$subexpression$1$ebnf$1", "symbols": ["digit"] }, { "name": "decimalWithLeadingNumber$ebnf$2$subexpression$1$ebnf$1", "symbols": ["decimalWithLeadingNumber$ebnf$2$subexpression$1$ebnf$1", "digit"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "decimalWithLeadingNumber$ebnf$2$subexpression$1", "symbols": [{ "literal": "." }, "decimalWithLeadingNumber$ebnf$2$subexpression$1$ebnf$1"] }, { "name": "decimalWithLeadingNumber$ebnf$2", "symbols": ["decimalWithLeadingNumber$ebnf$2$subexpression$1"], "postprocess": id }, { "name": "decimalWithLeadingNumber$ebnf$2", "symbols": [], "postprocess": () => null }, { "name": "decimalWithLeadingNumber", "symbols": ["decimalWithLeadingNumber$ebnf$1", "decimalWithLeadingNumber$ebnf$2"], "postprocess": ([firstDigit, rest]) => { if (rest) { return Number.parseFloat(`${firstDigit[0]}.${rest[1].join('')}`); } else { return Number.parseInt(firstDigit[0], 10); } } }, { "name": "decimalWithLeadingPeriod$ebnf$1", "symbols": ["digit"] }, { "name": "decimalWithLeadingPeriod$ebnf$1", "symbols": ["decimalWithLeadingPeriod$ebnf$1", "digit"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "decimalWithLeadingPeriod", "symbols": [{ "literal": "." }, "decimalWithLeadingPeriod$ebnf$1"], "postprocess": ([_1, digits]) => { return Number.parseInt(digits.join(''), 10); } }, { "name": "colorHex8", "symbols": [{ "literal": "#" }, "hexDigit", "hexDigit", "hexDigit", "hexDigit", "hexDigit", "hexDigit", "hexDigit", "hexDigit"], "postprocess": (a, _sourceOffset) => { return { type: ast.COLOR_TYPE.HEX8, value: a.join(''), _sourceOffset }; } }, { "name": "colorHex6", "symbols": [{ "literal": "#" }, "hexDigit", "hexDigit", "hexDigit", "hexDigit", "hexDigit", "hexDigit"], "postprocess": (a, _sourceOffset) => { return { type: ast.COLOR_TYPE.HEX6, value: a.join(''), _sourceOffset }; } }, { "name": "colorHex4", "symbols": [{ "literal": "#" }, "hexDigit", "hexDigit", "hexDigit", "hexDigit"], "postprocess": ([hash, c1, c2, c3, c4], _sourceOffset) => { return { type: ast.COLOR_TYPE.HEX8, value: `#${c1}${c1}${c2}${c2}${c3}${c3}${c4}${c4}`, _sourceOffset }; } }, { "name": "colorHex3", "symbols": [{ "literal": "#" }, "hexDigit", "hexDigit", "hexDigit"], "postprocess": ([hash, c1, c2, c3], _sourceOffset) => { return { type: ast.COLOR_TYPE.HEX6, value: `#${c1}${c1}${c2}${c2}${c3}${c3}`, _sourceOffset }; } }, { "name": "colorNameOrHex", "symbols": ["colorHex8"], "postprocess": id }, { "name": "colorNameOrHex", "symbols": ["colorHex6"], "postprocess": id }, { "name": "colorNameOrHex", "symbols": ["colorHex4"], "postprocess": id }, { "name": "colorNameOrHex", "symbols": ["colorHex3"], "postprocess": id }, { "name": "colorNameOrHex", "symbols": ["colorName"], "postprocess": id }, { "name": "colorName", "symbols": [/[^\n #\(0-9\.]/, "word"], "postprocess": toDebug('COLOR_NAME') || function ([first, rest], _sourceOffset) { return { type: ast.COLOR_TYPE.NAME, value: [first].concat(rest).join(''), _sourceOffset }; } }, { "name": "legendVariableChar", "symbols": [/[^\n\ \=]/] }, { "name": "ruleVariableChar", "symbols": [/[^(?=\.\.\.)\n \=\[\]\|]/] }, { "name": "ruleVariableName$ebnf$1", "symbols": ["ruleVariableChar"] }, { "name": "ruleVariableName$ebnf$1", "symbols": ["ruleVariableName$ebnf$1", "ruleVariableChar"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "ruleVariableName", "symbols": ["ruleVariableName$ebnf$1"], "postprocess": concatChars }, { "name": "lookupRuleVariableName$ebnf$1", "symbols": [/[^\n \=\[\]\|]/] }, { "name": "lookupRuleVariableName$ebnf$1", "symbols": ["lookupRuleVariableName$ebnf$1", /[^\n \=\[\]\|]/], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "lookupRuleVariableName", "symbols": ["lookupRuleVariableName$ebnf$1"], "postprocess": ([a], offset, reject) => { const str = a.join(''); if (TILE_MODIFIERS.has(str.toUpperCase())) { return reject; } else { return str; } } }, { "name": "collisionVariableChar", "symbols": [/[^(?=\.\.\.)\ \n\=\[\]\|\,]/] }, { "name": "collisionVariableName$ebnf$1", "symbols": ["collisionVariableChar"] }, { "name": "collisionVariableName$ebnf$1", "symbols": ["collisionVariableName$ebnf$1", "collisionVariableChar"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "collisionVariableName", "symbols": ["collisionVariableName$ebnf$1"], "postprocess": concatChars }, { "name": "lookupCollisionVariableName", "symbols": ["collisionVariableName"], "postprocess": id }, { "name": "t_DEBUGGER", "symbols": ["t_DEBUGGER_ADD"], "postprocess": id }, { "name": "t_DEBUGGER", "symbols": ["t_DEBUGGER_REMOVE"], "postprocess": id }, { "name": "t_DEBUGGER", "symbols": ["t_DEBUGGER_DEFAULT"], "postprocess": id }, { "name": "t_DEBUGGER_DEFAULT$subexpression$1", "symbols": [/[dD]/, /[eE]/, /[bB]/, /[uU]/, /[gG]/, /[gG]/, /[eE]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_DEBUGGER_DEFAULT", "symbols": ["t_DEBUGGER_DEFAULT$subexpression$1"], "postprocess": upperId }, { "name": "t_DEBUGGER_ADD$subexpression$1", "symbols": [/[dD]/, /[eE]/, /[bB]/, /[uU]/, /[gG]/, /[gG]/, /[eE]/, /[rR]/, { "literal": "_" }, /[aA]/, /[dD]/, /[dD]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_DEBUGGER_ADD", "symbols": ["t_DEBUGGER_ADD$subexpression$1"], "postprocess": upperId }, { "name": "t_DEBUGGER_REMOVE$subexpression$1", "symbols": [/[dD]/, /[eE]/, /[bB]/, /[uU]/, /[gG]/, /[gG]/, /[eE]/, /[rR]/, { "literal": "_" }, /[rR]/, /[eE]/, /[mM]/, /[oO]/, /[vV]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_DEBUGGER_REMOVE", "symbols": ["t_DEBUGGER_REMOVE$subexpression$1"], "postprocess": upperId }, { "name": "t_OBJECTS$subexpression$1", "symbols": [/[oO]/, /[bB]/, /[jJ]/, /[eE]/, /[cC]/, /[tT]/, /[sS]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_OBJECTS", "symbols": ["t_OBJECTS$subexpression$1"], "postprocess": upperId }, { "name": "t_LEGEND$subexpression$1", "symbols": [/[lL]/, /[eE]/, /[gG]/, /[eE]/, /[nN]/, /[dD]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_LEGEND", "symbols": ["t_LEGEND$subexpression$1"], "postprocess": upperId }, { "name": "t_SOUNDS$subexpression$1", "symbols": [/[sS]/, /[oO]/, /[uU]/, /[nN]/, /[dD]/, /[sS]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SOUNDS", "symbols": ["t_SOUNDS$subexpression$1"], "postprocess": upperId }, { "name": "t_COLLISIONLAYERS$subexpression$1", "symbols": [/[cC]/, /[oO]/, /[lL]/, /[lL]/, /[iI]/, /[sS]/, /[iI]/, /[oO]/, /[nN]/, /[lL]/, /[aA]/, /[yY]/, /[eE]/, /[rR]/, /[sS]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_COLLISIONLAYERS", "symbols": ["t_COLLISIONLAYERS$subexpression$1"], "postprocess": upperId }, { "name": "t_RULES$subexpression$1", "symbols": [/[rR]/, /[uU]/, /[lL]/, /[eE]/, /[sS]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RULES", "symbols": ["t_RULES$subexpression$1"], "postprocess": upperId }, { "name": "t_WINCONDITIONS$subexpression$1", "symbols": [/[wW]/, /[iI]/, /[nN]/, /[cC]/, /[oO]/, /[nN]/, /[dD]/, /[iI]/, /[tT]/, /[iI]/, /[oO]/, /[nN]/, /[sS]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_WINCONDITIONS", "symbols": ["t_WINCONDITIONS$subexpression$1"], "postprocess": upperId }, { "name": "t_LEVELS$subexpression$1", "symbols": [/[lL]/, /[eE]/, /[vV]/, /[eE]/, /[lL]/, /[sS]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_LEVELS", "symbols": ["t_LEVELS$subexpression$1"], "postprocess": upperId }, { "name": "t_RIGID$subexpression$1", "symbols": [/[rR]/, /[iI]/, /[gG]/, /[iI]/, /[dD]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RIGID", "symbols": ["t_RIGID$subexpression$1"], "postprocess": upperId }, { "name": "t_LATE$subexpression$1", "symbols": [/[lL]/, /[aA]/, /[tT]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_LATE", "symbols": ["t_LATE$subexpression$1"], "postprocess": upperId }, { "name": "t_RANDOM$subexpression$1", "symbols": [/[rR]/, /[aA]/, /[nN]/, /[dD]/, /[oO]/, /[mM]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RANDOM", "symbols": ["t_RANDOM$subexpression$1"], "postprocess": upperId }, { "name": "t_RANDOMDIR$subexpression$1", "symbols": [/[rR]/, /[aA]/, /[nN]/, /[dD]/, /[oO]/, /[mM]/, /[dD]/, /[iI]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RANDOMDIR", "symbols": ["t_RANDOMDIR$subexpression$1"], "postprocess": upperId }, { "name": "t_ACTION$subexpression$1", "symbols": [/[aA]/, /[cC]/, /[tT]/, /[iI]/, /[oO]/, /[nN]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ACTION", "symbols": ["t_ACTION$subexpression$1"], "postprocess": upperId }, { "name": "t_STARTLOOP$subexpression$1", "symbols": [/[sS]/, /[tT]/, /[aA]/, /[rR]/, /[tT]/, /[lL]/, /[oO]/, /[oO]/, /[pP]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_STARTLOOP", "symbols": ["t_STARTLOOP$subexpression$1"], "postprocess": upperId }, { "name": "t_ENDLOOP$subexpression$1", "symbols": [/[eE]/, /[nN]/, /[dD]/, /[lL]/, /[oO]/, /[oO]/, /[pP]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ENDLOOP", "symbols": ["t_ENDLOOP$subexpression$1"], "postprocess": upperId }, { "name": "t_UP$subexpression$1", "symbols": [/[uU]/, /[pP]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_UP", "symbols": ["t_UP$subexpression$1"], "postprocess": upperId }, { "name": "t_DOWN$subexpression$1", "symbols": [/[dD]/, /[oO]/, /[wW]/, /[nN]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_DOWN", "symbols": ["t_DOWN$subexpression$1"], "postprocess": upperId }, { "name": "t_LEFT$subexpression$1", "symbols": [/[lL]/, /[eE]/, /[fF]/, /[tT]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_LEFT", "symbols": ["t_LEFT$subexpression$1"], "postprocess": upperId }, { "name": "t_RIGHT$subexpression$1", "symbols": [/[rR]/, /[iI]/, /[gG]/, /[hH]/, /[tT]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RIGHT", "symbols": ["t_RIGHT$subexpression$1"], "postprocess": upperId }, { "name": "t_ARROW_UP$subexpression$1", "symbols": [{ "literal": "^" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ARROW_UP", "symbols": ["t_ARROW_UP$subexpression$1"], "postprocess": upperId }, { "name": "t_ARROW_DOWN$subexpression$1", "symbols": [/[vV]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ARROW_DOWN", "symbols": ["t_ARROW_DOWN$subexpression$1"], "postprocess": upperId }, { "name": "t_ARROW_LEFT$subexpression$1", "symbols": [{ "literal": "<" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ARROW_LEFT", "symbols": ["t_ARROW_LEFT$subexpression$1"], "postprocess": upperId }, { "name": "t_ARROW_RIGHT$subexpression$1", "symbols": [{ "literal": ">" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ARROW_RIGHT", "symbols": ["t_ARROW_RIGHT$subexpression$1"], "postprocess": upperId }, { "name": "t_MOVING$subexpression$1", "symbols": [/[mM]/, /[oO]/, /[vV]/, /[iI]/, /[nN]/, /[gG]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_MOVING", "symbols": ["t_MOVING$subexpression$1"], "postprocess": upperId }, { "name": "t_ORTHOGONAL$subexpression$1", "symbols": [/[oO]/, /[rR]/, /[tT]/, /[hH]/, /[oO]/, /[gG]/, /[oO]/, /[nN]/, /[aA]/, /[lL]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ORTHOGONAL", "symbols": ["t_ORTHOGONAL$subexpression$1"], "postprocess": upperId }, { "name": "t_PERPENDICULAR$subexpression$1", "symbols": [/[pP]/, /[eE]/, /[rR]/, /[pP]/, /[eE]/, /[nN]/, /[dD]/, /[iI]/, /[cC]/, /[uU]/, /[lL]/, /[aA]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_PERPENDICULAR", "symbols": ["t_PERPENDICULAR$subexpression$1"], "postprocess": upperId }, { "name": "t_PARALLEL$subexpression$1", "symbols": [/[pP]/, /[aA]/, /[rR]/, /[aA]/, /[lL]/, /[lL]/, /[eE]/, /[lL]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_PARALLEL", "symbols": ["t_PARALLEL$subexpression$1"], "postprocess": upperId }, { "name": "t_STATIONARY$subexpression$1", "symbols": [/[sS]/, /[tT]/, /[aA]/, /[tT]/, /[iI]/, /[oO]/, /[nN]/, /[aA]/, /[rR]/, /[yY]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_STATIONARY", "symbols": ["t_STATIONARY$subexpression$1"], "postprocess": upperId }, { "name": "t_HORIZONTAL$subexpression$1", "symbols": [/[hH]/, /[oO]/, /[rR]/, /[iI]/, /[zZ]/, /[oO]/, /[nN]/, /[tT]/, /[aA]/, /[lL]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_HORIZONTAL", "symbols": ["t_HORIZONTAL$subexpression$1"], "postprocess": upperId }, { "name": "t_VERTICAL$subexpression$1", "symbols": [/[vV]/, /[eE]/, /[rR]/, /[tT]/, /[iI]/, /[cC]/, /[aA]/, /[lL]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_VERTICAL", "symbols": ["t_VERTICAL$subexpression$1"], "postprocess": upperId }, { "name": "t_ARROW_ANY", "symbols": ["t_ARROW_UP"], "postprocess": upperId }, { "name": "t_ARROW_ANY", "symbols": ["t_ARROW_DOWN"], "postprocess": upperId }, { "name": "t_ARROW_ANY", "symbols": ["t_ARROW_LEFT"], "postprocess": upperId }, { "name": "t_ARROW_ANY", "symbols": ["t_ARROW_RIGHT"], "postprocess": upperId }, { "name": "t_AGAIN$subexpression$1", "symbols": [/[aA]/, /[gG]/, /[aA]/, /[iI]/, /[nN]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_AGAIN", "symbols": ["t_AGAIN$subexpression$1"], "postprocess": upperId }, { "name": "t_CANCEL$subexpression$1", "symbols": [/[cC]/, /[aA]/, /[nN]/, /[cC]/, /[eE]/, /[lL]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_CANCEL", "symbols": ["t_CANCEL$subexpression$1"], "postprocess": upperId }, { "name": "t_CHECKPOINT$subexpression$1", "symbols": [/[cC]/, /[hH]/, /[eE]/, /[cC]/, /[kK]/, /[pP]/, /[oO]/, /[iI]/, /[nN]/, /[tT]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_CHECKPOINT", "symbols": ["t_CHECKPOINT$subexpression$1"], "postprocess": upperId }, { "name": "t_RESTART$subexpression$1", "symbols": [/[rR]/, /[eE]/, /[sS]/, /[tT]/, /[aA]/, /[rR]/, /[tT]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RESTART", "symbols": ["t_RESTART$subexpression$1"], "postprocess": upperId }, { "name": "t_UNDO$subexpression$1", "symbols": [/[uU]/, /[nN]/, /[dD]/, /[oO]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_UNDO", "symbols": ["t_UNDO$subexpression$1"], "postprocess": upperId }, { "name": "t_WIN$subexpression$1", "symbols": [/[wW]/, /[iI]/, /[nN]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_WIN", "symbols": ["t_WIN$subexpression$1"], "postprocess": upperId }, { "name": "t_MESSAGE$subexpression$1", "symbols": [/[mM]/, /[eE]/, /[sS]/, /[sS]/, /[aA]/, /[gG]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_MESSAGE", "symbols": ["t_MESSAGE$subexpression$1"], "postprocess": upperId }, { "name": "t_ELLIPSIS$subexpression$1", "symbols": [{ "literal": "." }, { "literal": "." }, { "literal": "." }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ELLIPSIS", "symbols": ["t_ELLIPSIS$subexpression$1"], "postprocess": upperId }, { "name": "t_AND$subexpression$1", "symbols": [/[aA]/, /[nN]/, /[dD]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_AND", "symbols": ["t_AND$subexpression$1"], "postprocess": upperId }, { "name": "t_OR$subexpression$1", "symbols": [/[oO]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_OR", "symbols": ["t_OR$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX0$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "0" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX0", "symbols": ["t_SFX0$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX1$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "1" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX1", "symbols": ["t_SFX1$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX2$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "2" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX2", "symbols": ["t_SFX2$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX3$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "3" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX3", "symbols": ["t_SFX3$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX4$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "4" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX4", "symbols": ["t_SFX4$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX5$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "5" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX5", "symbols": ["t_SFX5$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX6$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "6" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX6", "symbols": ["t_SFX6$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX7$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "7" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX7", "symbols": ["t_SFX7$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX8$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "8" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX8", "symbols": ["t_SFX8$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX9$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "9" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX9", "symbols": ["t_SFX9$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX10$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "1" }, { "literal": "0" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX10", "symbols": ["t_SFX10$subexpression$1"], "postprocess": upperId }, { "name": "t_SFX_LETTERS$subexpression$1", "symbols": [/[sS]/, /[fF]/, /[xX]/, { "literal": "_" }], "postprocess": function (d) { return d.join(""); } }, { "name": "t_SFX_LETTERS$ebnf$1", "symbols": ["letter"] }, { "name": "t_SFX_LETTERS$ebnf$1", "symbols": ["t_SFX_LETTERS$ebnf$1", "letter"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "t_SFX_LETTERS", "symbols": ["t_SFX_LETTERS$subexpression$1", "t_SFX_LETTERS$ebnf$1"], "postprocess": (a, _sourceOffset) => { return a.join(''); } }, { "name": "t_SFX", "symbols": ["t_SFX_LETTERS"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX10"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX0"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX1"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX2"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX3"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX4"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX5"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX6"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX7"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX8"], "postprocess": upperId }, { "name": "t_SFX", "symbols": ["t_SFX9"], "postprocess": upperId }, { "name": "t_TITLE$subexpression$1", "symbols": [/[tT]/, /[iI]/, /[tT]/, /[lL]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_TITLE", "symbols": ["t_TITLE$subexpression$1"], "postprocess": upperId }, { "name": "t_AUTHOR$subexpression$1", "symbols": [/[aA]/, /[uU]/, /[tT]/, /[hH]/, /[oO]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_AUTHOR", "symbols": ["t_AUTHOR$subexpression$1"], "postprocess": upperId }, { "name": "t_HOMEPAGE$subexpression$1", "symbols": [/[hH]/, /[oO]/, /[mM]/, /[eE]/, /[pP]/, /[aA]/, /[gG]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_HOMEPAGE", "symbols": ["t_HOMEPAGE$subexpression$1"], "postprocess": upperId }, { "name": "t_YOUTUBE$subexpression$1", "symbols": [/[yY]/, /[oO]/, /[uU]/, /[tT]/, /[uU]/, /[bB]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_YOUTUBE", "symbols": ["t_YOUTUBE$subexpression$1"], "postprocess": upperId }, { "name": "t_ZOOMSCREEN$subexpression$1", "symbols": [/[zZ]/, /[oO]/, /[oO]/, /[mM]/, /[sS]/, /[cC]/, /[rR]/, /[eE]/, /[eE]/, /[nN]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_ZOOMSCREEN", "symbols": ["t_ZOOMSCREEN$subexpression$1"], "postprocess": upperId }, { "name": "t_FLICKSCREEN$subexpression$1", "symbols": [/[fF]/, /[lL]/, /[iI]/, /[cC]/, /[kK]/, /[sS]/, /[cC]/, /[rR]/, /[eE]/, /[eE]/, /[nN]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_FLICKSCREEN", "symbols": ["t_FLICKSCREEN$subexpression$1"], "postprocess": upperId }, { "name": "t_REQUIRE_PLAYER_MOVEMENT$subexpression$1", "symbols": [/[rR]/, /[eE]/, /[qQ]/, /[uU]/, /[iI]/, /[rR]/, /[eE]/, { "literal": "_" }, /[pP]/, /[lL]/, /[aA]/, /[yY]/, /[eE]/, /[rR]/, { "literal": "_" }, /[mM]/, /[oO]/, /[vV]/, /[eE]/, /[mM]/, /[eE]/, /[nN]/, /[tT]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_REQUIRE_PLAYER_MOVEMENT", "symbols": ["t_REQUIRE_PLAYER_MOVEMENT$subexpression$1"], "postprocess": upperId }, { "name": "t_RUN_RULES_ON_LEVEL_START$subexpression$1", "symbols": [/[rR]/, /[uU]/, /[nN]/, { "literal": "_" }, /[rR]/, /[uU]/, /[lL]/, /[eE]/, /[sS]/, { "literal": "_" }, /[oO]/, /[nN]/, { "literal": "_" }, /[lL]/, /[eE]/, /[vV]/, /[eE]/, /[lL]/, { "literal": "_" }, /[sS]/, /[tT]/, /[aA]/, /[rR]/, /[tT]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_RUN_RULES_ON_LEVEL_START", "symbols": ["t_RUN_RULES_ON_LEVEL_START$subexpression$1"], "postprocess": upperId }, { "name": "t_COLOR_PALETTE$subexpression$1", "symbols": [/[cC]/, /[oO]/, /[lL]/, /[oO]/, /[rR]/, { "literal": "_" }, /[pP]/, /[aA]/, /[lL]/, /[eE]/, /[tT]/, /[tT]/, /[eE]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_COLOR_PALETTE", "symbols": ["t_COLOR_PALETTE$subexpression$1"], "postprocess": upperId }, { "name": "t_BACKGROUND_COLOR$subexpression$1", "symbols": [/[bB]/, /[aA]/, /[cC]/, /[kK]/, /[gG]/, /[rR]/, /[oO]/, /[uU]/, /[nN]/, /[dD]/, { "literal": "_" }, /[cC]/, /[oO]/, /[lL]/, /[oO]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_BACKGROUND_COLOR", "symbols": ["t_BACKGROUND_COLOR$subexpression$1"], "postprocess": upperId }, { "name": "t_TEXT_COLOR$subexpression$1", "symbols": [/[tT]/, /[eE]/, /[xX]/, /[tT]/, { "literal": "_" }, /[cC]/, /[oO]/, /[lL]/, /[oO]/, /[rR]/], "postprocess": function (d) { return d.join(""); } }, { "name": "t_TEXT_COLOR", "symbols": ["t_TEXT_COLOR$subexpression$1"], "postprocess": upperId }, {