puzzlescript
Version:
Play PuzzleScript games in your terminal!
517 lines • 107 kB
JavaScript
"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 },
{