UNPKG

@andrivet/z80-assembler

Version:

A Z80 assembler entirely written in Typescript and derived from a PEG grammar.

1,229 lines (1,223 loc) 264 kB
function _(i, t = 0) { switch (i.toLowerCase()) { case "b": return 0 << t; case "c": return 1 << t; case "d": return 2 << t; case "e": return 3 << t; case "h": return 4 << t; case "l": return 5 << t; case "a": return 7 << t; default: return console.log(`Invalid register name: ${i}`), 0; } } function C(i, t = 0) { switch (i.toLowerCase()) { case "bc": return 0 << t; case "de": return 1 << t; case "hl": return 2 << t; case "sp": return 3 << t; default: return console.log(`Invalid register name: ${i}`), 0; } } function P(i, t = 0) { switch (i.toLowerCase()) { case "bc": return 0 << t; case "de": return 1 << t; case "hl": return 2 << t; case "af": return 3 << t; default: return console.log(`Invalid register name: ${i}`), 0; } } function k(i, t = 0) { switch (i.toLowerCase()) { case "bc": return 0 << t; case "de": return 1 << t; case "hl": return 2 << t; case "sp": return 3 << t; default: return console.log(`Invalid register name: ${i}`), 0; } } function W(i, t = 0) { switch (i.toLowerCase()) { case "bc": return 0 << t; case "de": return 1 << t; case "ix": return 2 << t; case "sp": return 3 << t; default: return console.log(`Invalid register name: ${i}`), 0; } } function H(i, t = 0) { switch (i.toLowerCase()) { case "bc": return 0 << t; case "de": return 1 << t; case "iy": return 2 << t; case "sp": return 3 << t; default: return console.log(`Invalid register name: ${i}`), 0; } } function b(i, t = 0) { switch (i.toLowerCase()) { case "nz": return 0 << t; case "z": return 1 << t; case "nc": return 2 << t; case "c": return 3 << t; case "po": return 4 << t; case "pe": return 5 << t; case "p": return 6 << t; case "s": case "m": return 7 << t; default: return console.log(`Invalid jump condition: ${i}`), 0; } } function v(i = "") { switch (i.toLowerCase()) { case "": return 24; case "nz": return 32; case "z": return 40; case "nc": return 48; case "c": return 56; default: return console.log(`Invalid relative jump condition: ${i}`), 0; } } function Z(i, t = 0) { return (i < 0 || i > 56 || i % 8 !== 0) && console.log(`Invalid argument for RST: ${i}`), i / 8 << t; } function T(i) { switch (i) { case "0": return 70; case "1": return 86; case "2": return 94; default: return console.log(`Invalid interrupt mode: ${i}`), 0; } } const L = /* @__PURE__ */ new Map(); let E = 0; function K() { L.clear(); } function d() { E = 0; } function $(i, t, n) { const e = L.get(t); if (!e) { L.set(t, { expression: null, value: n ?? 0, known: n != null, used: !1 }); return; } if (e.known && e.value != n) throw new o( i, `The value of the label '${t}' is redefined (old value: ${e.value}, new value: ${n})` ); e.value = n ?? 0, e.known = n != null; } function tt(i, t, n) { const e = L.get(t); if (!e) { L.set(t, { expression: n, value: 0, known: !1, used: !1 }); return; } e.known || (e.expression = n); } function D(i, t, n, e, s) { if (E > 20) throw new o(n, `Label '${t}' is undetermined (too many recursions)`); if (t === "$") return i; const r = L.get(t); if (!r) { if (s) throw new o(n, `Label '${t}' is undefined`); return L.set(t, { expression: null, value: 0, known: !1, used: !0 }), null; } if (e && (r.used = !0), r.known) return r.value; if (r.expression == null) { if (s) throw new o(n, `Label '${t}' is undefined`); return null; } E += 1; const u = r.expression.eval(i, s); if (E -= 1, u == null) { if (s) throw new o(n, `Label '${t}' is undefined`); return null; } return r.value = u, r.known = !0, u; } function nt(i) { return L.get(i)?.used; } class et { /** * Constructor. * @param pos0 Position of the length of the block. * @param length Length of the block. * @param pos1 Position of the value. * @param value Value to use to fill the block. */ constructor(t, n, e, s) { this.length = n, this.value = s, this.position0 = { filename: h.fileName, pos: t }, e && (this.position1 = { filename: h.fileName, pos: e }); } /** * The number of bytes that will be generated by this element. */ get size() { const t = this.length.eval(0, !0); if (t == null) throw new o(this.position0, "Unknown size for the data block"); if (t < 0) throw new o(this.position0, `Invalid size size for the data block: ${t}`); return t; } /** * Evaluate the expression for the value used to fill the block. * @private */ getValue(t) { if (this.value == null || this.position1 == null) return 0; let n = this.value.eval(t, !0); if (n == null) throw new o(this.position1, "Not able to determine a value"); if (n < -256 || n > 255) throw new o(this.position1, `Invalid 8-bits value: ${n}`); return n < 0 && (n = 256 + n), n; } /** * Generate actual bytes. */ generate(t) { const n = new Array(this.size); return n.fill(this.getValue(t)), n; } } class it { /** * Constructor. * @param pos Position of the expression for the value. * @param expression Expression for the value. */ constructor(t, n) { this.expression = n, this.position = { filename: h.fileName, pos: t }; } /** * The number of bytes that will be generated by this element. */ get size() { return 2; } /** * Generate actual bytes. */ generate(t) { let n = this.expression.eval(t, !0); if (n == null) throw new o(this.position, "Not able to determine the 16-bits value"); if (n < -65536 || n > 65535) throw new o(this.position, `Invalid 16-bits value: ${n}`); return n < 0 && (n = 65536 + n), [n & 255, (n & 65280) >> 8]; } } class V { constructor(t, n) { this.expression = n, this.position = { filename: h.fileName, pos: t }; } /** * The number of bytes that will be generated by this element. */ get size() { return 1; } /** * Generate actual bytes. */ generate(t) { let n = this.expression.eval(t, !0); if (n == null) throw new o(this.position, "Not able to determine the 8-bits value"); if (n < -256 || n > 255) throw new o(this.position, `Invalid 8-bits value: ${n}`); return n < 0 && (n = 256 + n), [n]; } } class st { constructor(t, n) { this.expression = n, this.position = { filename: h.fileName, pos: t }; } /** * The number of bytes that will be generated by this element. */ get size() { return 1; } /** * Generate actual bytes. */ generate(t) { let n = this.expression.eval(t, !0); if (n == null) throw new o(this.position, "Not able to determine the 8-bits value"); if (n = -n, n < -256 || n > 255) throw new o(this.position, `Invalid 8-bits value: ${n}`); return n < 0 && (n = 256 + n), [n]; } } class rt { constructor(t, n) { this.expression = n, this.position = { filename: h.fileName, pos: t }; } /** * The number of bytes that will be generated by this element. */ get size() { return 1; } /** * Generate actual bytes. */ generate(t) { let n = this.expression.eval(t, !0); if (n == null) throw new o(this.position, "Not able to determine the offset value"); if (n < -126 || n > 129) throw new o(this.position, `Invalid offset for JR instruction: ${n}`); return n -= 2, n < 0 && (n = 256 + n), [n]; } } class ut { constructor(t, n) { this.label = n, this.position = { filename: h.fileName, pos: t }; } /** * The number of bytes that will be generated by this element. */ get size() { return 1; } /** * Generate actual bytes. * @param pc Address of the next byte to generate, */ generate(t) { if (t == null) throw new o(this.position, "Not able to determine PC value"); const n = D(t, this.label, this.position, !0, !0); if (n == null) throw new o(this.position, `Not able to determine the value of label '${this.label}'`); let e = n - t; if (e < -126 || e > 129) throw new o(this.position, `Label ${this.label} is to far from JR instruction: ${e} bytes`); return e -= 2, e < 0 && (e = 256 + e), [e]; } } function F(i) { return i.generate !== void 0; } function O(i) { return F(i) ? i.size : 1; } function R(i, t, n) { return (e, s) => { const r = t.eval(e, s); if (!i) return r; const u = i.e.eval(e, s); return u == null || r == null ? null : n(u, r); }; } function q(i, t, n) { return (e, s) => { const r = t.eval(e, s); if (!i) return r; const u = i.e.eval(e, s); return u == null || r == null ? null : n[i.op](u, r); }; } function p(i, t) { return (n, e) => { const s = i.eval(n, e); return s == null ? null : t(s); }; } function ct(i, t, n) { return (e, s) => { const r = i.eval(e, s); return r == null ? null : n[t](r); }; } const lt = (i, t) => i | t, ot = (i, t) => i ^ t, at = (i, t) => i & t, ht = (i, t) => i << t, mt = (i, t) => i >> t, _t = (i, t) => i + t, gt = (i, t) => i - t, It = (i, t) => i * t, wt = (i, t) => Math.trunc(i / t), xt = (i, t) => i % t, ft = (i) => +i, At = (i) => -i, Lt = (i) => ~i, G = (i) => i; function I(i, t) { return new it(i, t); } function f(i, t) { return new V(i, t); } function c(i) { return i ? i.s === "-" ? new st(i.pos, i.d) : new V(i.pos, i.d) : 0; } function B(i, t) { return new rt(i, t); } function y(i, t) { return new ut(i, t); } function St(i, t, n) { return n.reduce((e, s) => e.concat(s.inner.elements), t.elements); } function kt(i, t, n) { return n.reduce((e, s) => e.concat(s.inner.elements), t.elements); } function Et(i, t, n, e) { return new et(i, t, n, e); } function J(i, t) { return (n, e) => D(n, t, { filename: h.fileName, pos: i }, !0, e); } function vt(i) { return (t, n) => i; } function X(i, t) { return t.reduce((n, e) => e.lines.length <= 0 ? n : (j(e.lines), Ct(n, e.lines)), i); } function j(i) { for (const t of i) d(), t.kind === x.LineEqual ? tt(t.label.pos, t.label.name, t.equal.e) : t.kind === x.LineStatement && t.statement?.kind === x.Statement_1 && j(t.statement.inc.info.lines); } function Ct(i, t) { for (const n of t) n.kind === x.LineStatement && (n.label && $({ filename: h.fileName, pos: n.label.pos }, n.label.name, i), n.statement && (i = Q(i, n.statement))); return i; } function Q(i, t) { switch (t.kind) { case x.Statement_1: return X(i, [t.info]); case x.Statement_2: return i + t.elements.reduce((n, e) => n + O(e), 0); case x.Statement_3: return t.address ? t.address : i + t.elements.reduce((n, e) => n + O(e), 0); } } function bt(i, t, n) { const e = `|SLD.data.version|1 ${i}|1||0|-1|-1|Z|pages.size:65536,pages.count:32,slots.count:1,slots.adr:0 `, s = U(t, n); return { bytes: s.bytes, sld: e + s.sld, address: t }; } function U(i, t) { let n = [], e = "", s = !1; for (const r of t) { let u = 1; for (const a of r.lines) { if (a.kind !== x.LineStatement || !a.statement) { e += N(r.filename, u, i, a), u += 1; continue; } switch (a.statement?.kind) { case x.Statement_1: { const m = U(i, [a.statement.info]); n = n.concat(m.bytes), e += m.sld, i = m.address; } break; case x.Statement_2: case x.Statement_3: n = n.concat(Dt(i, a.statement.elements)), e += N(r.filename, u, i, a), i = Q(i, a.statement); break; } if (a.statement.kind === x.Statement_3 && a.statement.dir.kind === x.Directive_5) { s = !0; break; } if (s) break; u += 1; } } return { bytes: n, sld: e, address: i }; } function Dt(i, t) { return t.reduce((n, e) => n.concat(F(e) ? e.generate(i) : [e]), []); } function N(i, t, n, e) { return Rt(i, t, e, n) + qt(i, t, e, n); } function Rt(i, t, n, e) { if (!n.label) return ""; const s = D(e, n.label.name, { filename: i, pos: { line: t, offset: 0, overallPos: 0 } }, !1, !0), r = nt(n.label.name); return n.kind === x.LineEqual ? `${i}|${t}||0|-1|${s}|L|,${n.label.name},,+equ${r ? ",+used" : ""} ` : `${i}|${t}||0|0|${s}|L|,${n.label.name},${r ? ",+used" : ""} `; } function qt(i, t, n, e) { return n.kind !== x.LineStatement ? "" : n.statement?.kind === x.Statement_2 ? `${i}|${t}||0|0|${e}|T| ` : ""; } const Bt = `__ equ $00 _SPC equ $00 _DQT equ $0b _PND equ $0c _DLR equ $0d _CLN equ $0e _QMK equ $0f _OBR equ $10 _CBR equ $11 _GTH equ $12 _LTH equ $13 _EQU equ $14 _PLS equ $15 _MNS equ $16 _ASK equ $17 _SLS equ $18 _SMC equ $19 _CMA equ $1a _FST equ $1b _0 equ $1c _1 equ $1d _2 equ $1e _3 equ $1f _4 equ $20 _5 equ $21 _6 equ $22 _7 equ $23 _8 equ $24 _9 equ $25 _A equ $26 _B equ $27 _C equ $28 _D equ $29 _E equ $2a _F equ $2b _G equ $2c _H equ $2d _I equ $2e _J equ $2f _K equ $30 _L equ $31 _M equ $32 _N equ $33 _O equ $34 _P equ $35 _Q equ $36 _R equ $37 _S equ $38 _T equ $39 _U equ $3a _V equ $3b _W equ $3c _X equ $3d _Y equ $3e _Z equ $3f _SPCV equ _SPC+$80 _DQTV equ _DQT+$80 _PNDV equ _PND+$80 _DLRV equ _DLR+$80 _CLNV equ _CLN+$80 _QMKV equ _QMK+$80 _OBRV equ _OBR+$80 _CBRV equ _CBR+$80 _GTHV equ _GTH+$80 _LTHV equ _LTH+$80 _EQUV equ _EQU+$80 _PLSV equ _PLS+$80 _MNSV equ _MNS+$80 _ASKV equ _ASK+$80 _SLSV equ _SLS+$80 _SMCV equ _SMC+$80 _CMAV equ _CMA+$80 _FSTV equ _FST+$80 _0V equ _0+$80 _1V equ _1+$80 _2V equ _2+$80 _3V equ _3+$80 _4V equ _4+$80 _5V equ _5+$80 _6V equ _6+$80 _7V equ _7+$80 _8V equ _8+$80 _9V equ _9+$80 _AV equ _A+$80 _BV equ _B+$80 _CV equ _C+$80 _DV equ _D+$80 _EV equ _E+$80 _FV equ _F+$80 _GV equ _G+$80 _HV equ _H+$80 _IV equ _I+$80 _JV equ _J+$80 _KV equ _K+$80 _LV equ _L+$80 _MV equ _M+$80 _NV equ _N+$80 _OV equ _O+$80 _PV equ _P+$80 _QV equ _Q+$80 _RV equ _R+$80 _SV equ _S+$80 _TV equ _T+$80 _UV equ _U+$80 _VV equ _V+$80 _WV equ _W+$80 _XV equ _X+$80 _YV equ _Y+$80 _ZV equ _Z+$80 _RND equ $40 _INKEY$ equ $41 _PI equ $42 _UP equ $70 _DOWN equ $71 _LEFT equ $72 _RIGHT equ $73 _GRAPHICS equ $74 _EDIT equ $75 _NEWLINE equ $76 _NL equ $76 _RUBOUT equ $77 _KL_MODE equ $78 _FUNCTION equ $79 _NUMBER equ $7E _CURSOR equ $7F _DQUOTES equ $C0 _AT equ $C1 _TAB equ $C2 _CODE equ $C4 _VAL equ $C5 _LEN equ $C6 _SIN equ $C7 _COS equ $C8 _TAN equ $C9 _ASN equ $CA _ACS equ $CB _ATN equ $CC _LN equ $CD _EXP equ $CE _INT equ $CF _SQR equ $D0 _SGN equ $D1 _ABS equ $D2 _PEEK equ $D3 _USR equ $D4 _STR$ equ $D5 _CHR$ equ $D6 _NOT equ $D7 _PWR equ $D8 _OR equ $D9 _AND equ $DA _LESS equ $DB _GREATER equ $DC _NOT_EQUAL equ $DD _THEN equ $DE _TO equ $DF _STEP equ $E0 _LPRINT equ $E1 _LLIST equ $E2 _STOP equ $E3 _SLOW equ $E4 _FAST equ $E5 _NEW equ $E6 _SCROLL equ $E7 _CONT equ $E8 _DIM equ $E9 _REM equ $EA _FOR equ $EB _GOTO equ $EC _GOSUB equ $ED _INPUT equ $EE _LOAD equ $EF _LIST equ $F0 _LET equ $F1 _PAUSE equ $F2 _NEXT equ $F3 _POKE equ $F4 _PRINT equ $F5 _PLOT equ $F6 _RUN equ $F7 _SAVE equ $F8 _RAND equ $F9 _IF equ $FA _CLS equ $FB _UNPLOT equ $FC _CLEAR equ $FD _RETURN equ $FE _COPY equ $FF `, yt = ` ERR_NR equ $4000 FLAGS equ $4001 ERR_SP equ $4002 RAMTOP equ $4004 MODE equ $4006 PPC equ $4007 org $4009 VERSN: byte 0 E_PPC: word 2 D_FILE: word display DF_CC: word display+1 VARS: word variables DEST: word 0 E_LINE: word edit_line CH_ADD: word edit_line+4 X_PTR: word 0 STKBOT: word edit_line+5 STKEND: word edit_line+5 BERG: byte 0 MEM: word MEMBOT SPARE1: byte 0 DF_SZ: byte 2 S_TOP: word 10 LAST_K: word $ffff DB_ST: byte 0 MARGIN: byte 55 NXTLIN: word basic_line2 OLDPPC: word 0 FLAGX: byte 0 STRLEN: word 0 T_ADDR: word 0x0c8d SEED: word 0 FRAMES: word 0 COORDS: byte 0 byte 0 PR_CC: byte $bc S_POSN: byte $21 byte $18 CDFLAG: byte $40 PRBUF: block $20 byte _NL MEMBOT: block $1e SPARE2: word 0 `, Ot = `basic_line1: byte 0,1 word basic_line1_end-basic_line1-4 byte _REM `, Nt = ` byte _NL basic_line1_end: basic_line2: byte 0,2 word basic_line2_end-basic_line2-4 byte _RAND,_USR,_VAL,_DQT,_1,_6,_5,_1,_4,_DQT byte _NL basic_line2_end: `, Mt = `display: byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL block 32 byte _NL `, Pt = `variables: variables_end: byte $80 edit_line: `, h = { outputName: "", sldName: "", deviceName: "", basePath: "", fileName: "", getFileCode: () => "" }; function Vt(i, t) { h.outputName = i, h.sldName = t || i.replace(/\.P$/, ".sld"); } function Ft(i) { h.deviceName = i.toLowerCase(); } function pt(i, t) { const n = h.basePath + t, e = h.getFileCode(n); return A(n, e); } function A(i, t) { const n = h.fileName; h.fileName = i, t.endsWith(` `) || (t += ` `); const s = new Er(t).parse(); if (h.fileName = n, s.errs.length > 0) throw o.fromSyntaxErr(i, s.errs[0]); return { lines: s.ast?.lines ?? [], filename: i }; } function Gt(i) { let t = i.lastIndexOf("/"); return t === -1 && (t = i.lastIndexOf("\\")), t === -1 ? "" : i.substring(0, t + 1); } function Cr(i, t, n) { h.outputName = i.replace(/\..*$/, "") + ".P", h.sldName = h.outputName.replace(/\.P$/, ".sld"), h.basePath = Gt(i), h.getFileCode = n; try { K(); const e = Jt(A(i, t)); X(0, e); const s = bt(i, 0, e); return { outputName: h.outputName, bytes: s.bytes, sld: s.sld, errs: [] }; } catch (e) { return { outputName: h.outputName, bytes: [], sld: "", errs: [o.fromAny(h.fileName, e)] }; } } function Jt(i) { return h.deviceName !== "zx81" ? [i] : [ A("@internal/characters.zx81", Bt), A("@internal/system-variables.zx81", yt), A("@internal/basic-line1.zx81", Ot), i, A("@internal/basic-line2.zx81", Nt), A("@internal/display.zx81", Mt), A("@internal/basic-end.zx81", Pt) ]; } function S(i, t, n, e) { let s = parseInt(t, n); if (isNaN(s)) throw new o( { filename: h.fileName, pos: i }, `Number '${t}' is invalid in base ${n}.` ); switch (e) { case 1: if (s > 255 || s < -256) throw new o( { filename: h.fileName, pos: i }, `Number '${t}' does not fit into a byte.` ); s < 0 && (s = 256 + s); break; case 2: if (s > 65535 || s < -65536) throw new o( { filename: h.fileName, pos: i }, `Number '${t}' does not fit into a word.` ); s < 0 && (s = 65536 + s); break; default: throw new o( { filename: h.fileName, pos: i }, `Invalid number of bytes (${e})` ); } return s; } function Xt(i, t) { switch (t) { case "n": return [11]; case '"': return [11]; default: throw new o( { filename: h.fileName, pos: i }, `Invalid escape: \\${t}` ); } } function jt(i, t) { const n = parseInt(t, 8); if (n > 255) throw new o( { filename: h.fileName, pos: i }, `Number '${t}' in octal escape sequence does not fit into a byte.` ); return [n]; } function Qt(i, t) { const n = parseInt(t, 16); if (n > 255) throw new o( { filename: h.fileName, pos: i }, `Number '${t}' in hexadecimal escape sequence does not fit into a byte.` ); return [n]; } const M = /* @__PURE__ */ new Map([ [" ", 0], ['"', 11], ["£", 12], ["$", 13], [":", 14], ["?", 15], ["(", 16], [")", 17], [">", 18], ["<", 19], ["=", 20], ["+", 21], ["-", 22], ["*", 23], ["/", 24], [";", 25], [",", 26], [".", 27], ["_", 128] ]); function Y(i, t) { if (t >= "A" && t < "Z") return [t.charCodeAt(0) - 65 + 38]; if (t >= "a" && t < "z") return [t.charCodeAt(0) - 97 + 166]; if (t >= "0" && t < "9") return [t.charCodeAt(0) - 48 + 28]; if (!M.has(t)) throw new o( { filename: h.fileName, pos: i }, `Invalid ZX81 character: ${t}` ); return [M.get(t)]; } var x = /* @__PURE__ */ ((i) => (i.start = "start", i.r_1 = "r_1", i.r_2 = "r_2", i.r_3 = "r_3", i.r_4 = "r_4", i.r_5 = "r_5", i.r_6 = "r_6", i.r_7 = "r_7", i.dd_1 = "dd_1", i.dd_2 = "dd_2", i.dd_3 = "dd_3", i.dd_4 = "dd_4", i.ss = "ss", i.qq_1 = "qq_1", i.qq_2 = "qq_2", i.qq_3 = "qq_3", i.qq_4 = "qq_4", i.pp_1 = "pp_1", i.pp_2 = "pp_2", i.pp_3 = "pp_3", i.pp_4 = "pp_4", i.rr_1 = "rr_1", i.rr_2 = "rr_2", i.rr_3 = "rr_3", i.rr_4 = "rr_4", i.n_1 = "n_1", i.n_2 = "n_2", i.n_3 = "n_3", i.n_4 = "n_4", i.nn_1 = "nn_1", i.nn_2 = "nn_2", i.nn_3 = "nn_3", i.nn_4 = "nn_4", i.decimal = "decimal", i.binary_1 = "binary_1", i.binary_2 = "binary_2", i.binary_$0_1 = "binary_$0_1", i.binary_$0_2 = "binary_$0_2", i.octal_1 = "octal_1", i.octal_2 = "octal_2", i.octal_$0_1 = "octal_$0_1", i.octal_$0_2 = "octal_$0_2", i.octal_$0_3 = "octal_$0_3", i.octal_$1_1 = "octal_$1_1", i.octal_$1_2 = "octal_$1_2", i.hexadecimal_1 = "hexadecimal_1", i.hexadecimal_2 = "hexadecimal_2", i.hexadecimal_$0_1 = "hexadecimal_$0_1", i.hexadecimal_$0_2 = "hexadecimal_$0_2", i.hexadecimal_$0_3 = "hexadecimal_$0_3", i.d = "d", i.e = "e", i.p = "p", i.b = "b", i.cc_1 = "cc_1", i.cc_2 = "cc_2", i.cc_3 = "cc_3", i.cc_4 = "cc_4", i.cc_5 = "cc_5", i.cc_6 = "cc_6", i.cc_7 = "cc_7", i.cc_8 = "cc_8", i.cc_9 = "cc_9", i.jj_1 = "jj_1", i.jj_2 = "jj_2", i.jj_3 = "jj_3", i.jj_4 = "jj_4", i.__ = "__", i._ = "_", i.eos = "eos", i.eol = "eol", i.Lines = "Lines", i.Line_1 = "Line_1", i.Line_2 = "Line_2", i.LineEqual = "LineEqual", i.LineStatement = "LineStatement", i.Statement_1 = "Statement_1", i.Statement_2 = "Statement_2", i.Statement_3 = "Statement_3", i.EqualDirective = "EqualDirective", i.Directive_1 = "Directive_1", i.Directive_2 = "Directive_2", i.Directive_3 = "Directive_3", i.Directive_4 = "Directive_4", i.Directive_5 = "Directive_5", i.ForbiddenNames_1 = "ForbiddenNames_1", i.ForbiddenNames_2 = "ForbiddenNames_2", i.ForbiddenNames_3 = "ForbiddenNames_3", i.ForbiddenNames_4 = "ForbiddenNames_4", i.ForbiddenNames_5 = "ForbiddenNames_5", i.ForbiddenLabel = "ForbiddenLabel", i.Label = "Label", i.LabelDeclaration = "LabelDeclaration", i.Expression = "Expression", i.BitwiseOrExpression = "BitwiseOrExpression", i.BitwiseOrExpression_$0 = "BitwiseOrExpression_$0", i.BitwiseXOrExpression = "BitwiseXOrExpression", i.BitwiseXOrExpression_$0 = "BitwiseXOrExpression_$0", i.BitwiseAndExpression = "BitwiseAndExpression", i.BitwiseAndExpression_$0 = "BitwiseAndExpression_$0", i.ShiftExpression = "ShiftExpression", i.ShiftExpression_$0 = "ShiftExpression_$0", i.ShiftExpression_$0_$0_1 = "ShiftExpression_$0_$0_1", i.ShiftExpression_$0_$0_2 = "ShiftExpression_$0_$0_2", i.AdditiveExpression = "AdditiveExpression", i.AdditiveExpression_$0 = "AdditiveExpression_$0", i.AdditiveExpression_$0_$0_1 = "AdditiveExpression_$0_$0_1", i.AdditiveExpression_$0_$0_2 = "AdditiveExpression_$0_$0_2", i.MultiplicativeExpression = "MultiplicativeExpression", i.MultiplicativeExpression_$0 = "MultiplicativeExpression_$0", i.MultiplicativeExpression_$0_$0_1 = "MultiplicativeExpression_$0_$0_1", i.MultiplicativeExpression_$0_$0_2 = "MultiplicativeExpression_$0_$0_2", i.MultiplicativeExpression_$0_$0_3 = "MultiplicativeExpression_$0_$0_3", i.UnaryExpression_1 = "UnaryExpression_1", i.UnaryExpression_2 = "UnaryExpression_2", i.UnaryExpression_$0_1 = "UnaryExpression_$0_1", i.UnaryExpression_$0_2 = "UnaryExpression_$0_2", i.UnaryExpression_$0_3 = "UnaryExpression_$0_3", i.PrimaryExpression_1 = "PrimaryExpression_1", i.PrimaryExpression_2 = "PrimaryExpression_2", i.PrimaryExpression_3 = "PrimaryExpression_3", i.Reg8 = "Reg8", i.IX = "IX", i.IX_$0 = "IX_$0", i.IX_$0_$0_1 = "IX_$0_$0_1", i.IX_$0_$0_2 = "IX_$0_$0_2", i.IY = "IY", i.IY_$0 = "IY_$0", i.IY_$0_$0_1 = "IY_$0_$0_1", i.IY_$0_$0_2 = "IY_$0_$0_2", i.Instruction_1 = "Instruction_1", i.Instruction_2 = "Instruction_2", i.Instruction_3 = "Instruction_3", i.Instruction_4 = "Instruction_4", i.Instruction_5 = "Instruction_5", i.Instruction_6 = "Instruction_6", i.Instruction_7 = "Instruction_7", i.Instruction_8 = "Instruction_8", i.Instruction_9 = "Instruction_9", i.Instruction_10 = "Instruction_10", i.Instruction_11 = "Instruction_11", i.Instruction_12 = "Instruction_12", i.Instruction_13 = "Instruction_13", i.Instruction_14 = "Instruction_14", i.Instruction_15 = "Instruction_15", i.Instruction_16 = "Instruction_16", i.Load8Instruction_1 = "Load8Instruction_1", i.Load8Instruction_2 = "Load8Instruction_2", i.Load8Instruction_3 = "Load8Instruction_3", i.Load8Instruction_4 = "Load8Instruction_4", i.Load8Instruction_5 = "Load8Instruction_5", i.Load8Instruction_6 = "Load8Instruction_6", i.Load8Instruction_7 = "Load8Instruction_7", i.Load8Instruction_8 = "Load8Instruction_8", i.Load8Instruction_9 = "Load8Instruction_9", i.Load8Instruction_10 = "Load8Instruction_10", i.Load8Instruction_11 = "Load8Instruction_11", i.Load8Instruction_12 = "Load8Instruction_12", i.Load8Instruction_13 = "Load8Instruction_13", i.Load8Instruction_14 = "Load8Instruction_14", i.Load8Instruction_15 = "Load8Instruction_15", i.Load8Instruction_16 = "Load8Instruction_16", i.Load8Instruction_17 = "Load8Instruction_17", i.Load8Instruction_18 = "Load8Instruction_18", i.Load8Instruction_19 = "Load8Instruction_19", i.Load8Instruction_20 = "Load8Instruction_20", i.Load8Instruction_21 = "Load8Instruction_21", i.Load16Instruction_1 = "Load16Instruction_1", i.Load16Instruction_2 = "Load16Instruction_2", i.Load16Instruction_3 = "Load16Instruction_3", i.Load16Instruction_4 = "Load16Instruction_4", i.Load16Instruction_5 = "Load16Instruction_5", i.Load16Instruction_6 = "Load16Instruction_6", i.Load16Instruction_7 = "Load16Instruction_7", i.Load16Instruction_8 = "Load16Instruction_8", i.Load16Instruction_9 = "Load16Instruction_9", i.Load16Instruction_10 = "Load16Instruction_10", i.Load16Instruction_11 = "Load16Instruction_11", i.Load16Instruction_12 = "Load16Instruction_12", i.Load16Instruction_13 = "Load16Instruction_13", i.Load16Instruction_14 = "Load16Instruction_14", i.Load16Instruction_15 = "Load16Instruction_15", i.Load16Instruction_16 = "Load16Instruction_16", i.Load16Instruction_17 = "Load16Instruction_17", i.Load16Instruction_18 = "Load16Instruction_18", i.Load16Instruction_19 = "Load16Instruction_19", i.Load16Instruction_20 = "Load16Instruction_20", i.ExchangeInstruction_1 = "ExchangeInstruction_1", i.ExchangeInstruction_2 = "ExchangeInstruction_2", i.ExchangeInstruction_3 = "ExchangeInstruction_3", i.ExchangeInstruction_4 = "ExchangeInstruction_4", i.ExchangeInstruction_5 = "ExchangeInstruction_5", i.ExchangeInstruction_6 = "ExchangeInstruction_6", i.BlockInstruction_1 = "BlockInstruction_1", i.BlockInstruction_2 = "BlockInstruction_2", i.BlockInstruction_3 = "BlockInstruction_3", i.BlockInstruction_4 = "BlockInstruction_4", i.BlockInstruction_5 = "BlockInstruction_5", i.BlockInstruction_6 = "BlockInstruction_6", i.BlockInstruction_7 = "BlockInstruction_7", i.BlockInstruction_8 = "BlockInstruction_8", i.ArithmeticLogic8Instruction_1 = "ArithmeticLogic8Instruction_1", i.ArithmeticLogic8Instruction_2 = "ArithmeticLogic8Instruction_2", i.ArithmeticLogic8Instruction_3 = "ArithmeticLogic8Instruction_3", i.ArithmeticLogic8Instruction_4 = "ArithmeticLogic8Instruction_4", i.ArithmeticLogic8Instruction_5 = "ArithmeticLogic8Instruction_5", i.ArithmeticLogic8Instruction_6 = "ArithmeticLogic8Instruction_6", i.ArithmeticLogic8Instruction_7 = "ArithmeticLogic8Instruction_7", i.ArithmeticLogic8Instruction_8 = "ArithmeticLogic8Instruction_8", i.ArithmeticLogic8Instruction_9 = "ArithmeticLogic8Instruction_9", i.ArithmeticLogic8Instruction_10 = "ArithmeticLogic8Instruction_10", i.ArithmeticLogic8Instruction_11 = "ArithmeticLogic8Instruction_11", i.ArithmeticLogic8Instruction_12 = "ArithmeticLogic8Instruction_12", i.ArithmeticLogic8Instruction_13 = "ArithmeticLogic8Instruction_13", i.ArithmeticLogic8Instruction_14 = "ArithmeticLogic8Instruction_14", i.ArithmeticLogic8Instruction_15 = "ArithmeticLogic8Instruction_15", i.ArithmeticLogic8Instruction_16 = "ArithmeticLogic8Instruction_16", i.ArithmeticLogic8Instruction_17 = "ArithmeticLogic8Instruction_17", i.ArithmeticLogic8Instruction_18 = "ArithmeticLogic8Instruction_18", i.ArithmeticLogic8Instruction_19 = "ArithmeticLogic8Instruction_19", i.ArithmeticLogic8Instruction_20 = "ArithmeticLogic8Instruction_20", i.ArithmeticLogic8Instruction_21 = "ArithmeticLogic8Instruction_21", i.ArithmeticLogic8Instruction_22 = "ArithmeticLogic8Instruction_22", i.ArithmeticLogic8Instruction_23 = "ArithmeticLogic8Instruction_23", i.ArithmeticLogic8Instruction_24 = "ArithmeticLogic8Instruction_24", i.ArithmeticLogic8Instruction_25 = "ArithmeticLogic8Instruction_25", i.ArithmeticLogic8Instruction_26 = "ArithmeticLogic8Instruction_26", i.ArithmeticLogic8Instruction_27 = "ArithmeticLogic8Instruction_27", i.ArithmeticLogic8Instruction_28 = "ArithmeticLogic8Instruction_28", i.ArithmeticLogic8Instruction_29 = "ArithmeticLogic8Instruction_29", i.ArithmeticLogic8Instruction_30 = "ArithmeticLogic8Instruction_30", i.ArithmeticLogic8Instruction_31 = "ArithmeticLogic8Instruction_31", i.ArithmeticLogic8Instruction_32 = "ArithmeticLogic8Instruction_32", i.ArithmeticLogic8Instruction_33 = "ArithmeticLogic8Instruction_33", i.ArithmeticLogic8Instruction_34 = "ArithmeticLogic8Instruction_34", i.ArithmeticLogic8Instruction_35 = "ArithmeticLogic8Instruction_35", i.ArithmeticLogic8Instruction_36 = "ArithmeticLogic8Instruction_36", i.ArithmeticLogic8Instruction_37 = "ArithmeticLogic8Instruction_37", i.ArithmeticLogic8Instruction_38 = "ArithmeticLogic8Instruction_38", i.ArithmeticLogic8Instruction_39 = "ArithmeticLogic8Instruction_39", i.ArithmeticLogic8Instruction_40 = "ArithmeticLogic8Instruction_40", i.ArithmeticLogic8Instruction_$0 = "ArithmeticLogic8Instruction_$0", i.ArithmeticLogic8Instruction_$1 = "ArithmeticLogic8Instruction_$1", i.ArithmeticLogic8Instruction_$2 = "ArithmeticLogic8Instruction_$2", i.ArithmeticLogic8Instruction_$3 = "ArithmeticLogic8Instruction_$3", i.ArithmeticLogic8Instruction_$4 = "ArithmeticLogic8Instruction_$4", i.ArithmeticLogic8Instruction_$5 = "ArithmeticLogic8Instruction_$5", i.ArithmeticLogic8Instruction_$6 = "ArithmeticLogic8Instruction_$6", i.ArithmeticLogic8Instruction_$7 = "ArithmeticLogic8Instruction_$7", i.ArithmeticLogic8Instruction_$8 = "ArithmeticLogic8Instruction_$8", i.ArithmeticLogic8Instruction_$9 = "ArithmeticLogic8Instruction_$9", i.ArithmeticLogic8Instruction_$10 = "ArithmeticLogic8Instruction_$10", i.ArithmeticLogic8Instruction_$11 = "ArithmeticLogic8Instruction_$11", i.ArithmeticLogic8Instruction_$12 = "ArithmeticLogic8Instruction_$12", i.ArithmeticLogic8Instruction_$13 = "ArithmeticLogic8Instruction_$13", i.ArithmeticLogic8Instruction_$14 = "ArithmeticLogic8Instruction_$14", i.ArithmeticLogic8Instruction_$15 = "ArithmeticLogic8Instruction_$15", i.ArithmeticLogic8Instruction_$16 = "ArithmeticLogic8Instruction_$16", i.ArithmeticLogic8Instruction_$17 = "ArithmeticLogic8Instruction_$17", i.ArithmeticLogic8Instruction_$18 = "ArithmeticLogic8Instruction_$18", i.ArithmeticLogic8Instruction_$19 = "ArithmeticLogic8Instruction_$19", i.ArithmeticLogic8Instruction_$20 = "ArithmeticLogic8Instruction_$20", i.ArithmeticLogic8Instruction_$21 = "ArithmeticLogic8Instruction_$21", i.ArithmeticLogic8Instruction_$22 = "ArithmeticLogic8Instruction_$22", i.ArithmeticLogic8Instruction_$23 = "ArithmeticLogic8Instruction_$23", i.ArithmeticLogic8Instruction_$24 = "ArithmeticLogic8Instruction_$24", i.ArithmeticLogic8Instruction_$25 = "ArithmeticLogic8Instruction_$25", i.ArithmeticLogic8Instruction_$26 = "ArithmeticLogic8Instruction_$26", i.ArithmeticLogic8Instruction_$27 = "ArithmeticLogic8Instruction_$27", i.ArithmeticLogic8Instruction_$28 = "ArithmeticLogic8Instruction_$28", i.ArithmeticLogic8Instruction_$29 = "ArithmeticLogic8Instruction_$29", i.ArithmeticLogic8Instruction_$30 = "ArithmeticLogic8Instruction_$30", i.ArithmeticLogic8Instruction_$31 = "ArithmeticLogic8Instruction_$31", i.ArithmeticLogic8Instruction_$32 = "ArithmeticLogic8Instruction_$32", i.ArithmeticLogic8Instruction_$33 = "ArithmeticLogic8Instruction_$33", i.ArithmeticLogic8Instruction_$34 = "ArithmeticLogic8Instruction_$34", i.ArithmeticLogic8Instruction_$35 = "ArithmeticLogic8Instruction_$35", i.ArithmeticLogic8Instruction_$36 = "ArithmeticLogic8Instruction_$36", i.ArithmeticLogic8Instruction_$37 = "ArithmeticLogic8Instruction_$37", i.ArithmeticLogic8Instruction_$38 = "ArithmeticLogic8Instruction_$38", i.ArithmeticLogic8Instruction_$39 = "ArithmeticLogic8Instruction_$39", i.IncrementDecrement8Instruction_1 = "IncrementDecrement8Instruction_1", i.IncrementDecrement8Instruction_2 = "IncrementDecrement8Instruction_2", i.IncrementDecrement8Instruction_3 = "IncrementDecrement8Instruction_3", i.IncrementDecrement8Instruction_4 = "IncrementDecrement8Instruction_4", i.IncrementDecrement8Instruction_5 = "IncrementDecrement8Instruction_5", i.IncrementDecrement8Instruction_6 = "IncrementDecrement8Instruction_6", i.IncrementDecrement8Instruction_7 = "IncrementDecrement8Instruction_7", i.IncrementDecrement8Instruction_8 = "IncrementDecrement8Instruction_8", i.GeneralPurposeArithmeticInstruction_1 = "GeneralPurposeArithmeticInstruction_1", i.GeneralPurposeArithmeticInstruction_2 = "GeneralPurposeArithmeticInstruction_2", i.GeneralPurposeArithmeticInstruction_3 = "GeneralPurposeArithmeticInstruction_3", i.GeneralPurposeArithmeticInstruction_4 = "GeneralPurposeArithmeticInstruction_4", i.GeneralPurposeArithmeticInstruction_5 = "GeneralPurposeArithmeticInstruction_5", i.CpuControlGroupInstruction_1 = "CpuControlGroupInstruction_1", i.CpuControlGroupInstruction_2 = "CpuControlGroupInstruction_2", i.CpuControlGroupInstruction_3 = "CpuControlGroupInstruction_3", i.CpuControlGroupInstruction_4 = "CpuControlGroupInstruction_4", i.CpuControlGroupInstruction_5 = "CpuControlGroupInstruction_5", i.ArithmeticLogic16Instruction_1 = "ArithmeticLogic16Instruction_1", i.ArithmeticLogic16Instruction_2 = "ArithmeticLogic16Instruction_2", i.ArithmeticLogic16Instruction_3 = "ArithmeticLogic16Instruction_3", i.ArithmeticLogic16Instruction_4 = "ArithmeticLogic16Instruction_4", i.ArithmeticLogic16Instruction_5 = "ArithmeticLogic16Instruction_5", i.ArithmeticLogic16Instruction_6 = "ArithmeticLogic16Instruction_6", i.ArithmeticLogic16Instruction_7 = "ArithmeticLogic16Instruction_7", i.ArithmeticLogic16Instruction_8 = "ArithmeticLogic16Instruction_8", i.ArithmeticLogic16Instruction_9 = "ArithmeticLogic16Instruction_9", i.ArithmeticLogic16Instruction_10 = "ArithmeticLogic16Instruction_10", i.ArithmeticLogic16Instruction_11 = "ArithmeticLogic16Instruction_11", i.RotateShiftInstruction_1 = "RotateShiftInstruction_1", i.RotateShiftInstruction_2 = "RotateShiftInstruction_2", i.RotateShiftInstruction_3 = "RotateShiftInstruction_3", i.RotateShiftInstruction_4 = "RotateShiftInstruction_4", i.RotateShiftInstruction_5 = "RotateShiftInstruction_5", i.RotateShiftInstruction_6 = "RotateShiftInstruction_6", i.RotateShiftInstruction_7 = "RotateShiftInstruction_7", i.RotateShiftInstruction_8 = "RotateShiftInstruction_8", i.RotateShiftInstruction_9 = "RotateShiftInstruction_9", i.RotateShiftInstruction_10 = "RotateShiftInstruction_10", i.RotateShiftInstruction_11 = "RotateShiftInstruction_11", i.RotateShiftInstruction_12 = "RotateShiftInstruction_12", i.RotateShiftInstruction_13 = "RotateShiftInstruction_13", i.RotateShiftInstruction_14 = "RotateShiftInstruction_14", i.RotateShiftInstruction_15 = "RotateShiftInstruction_15", i.RotateShiftInstruction_16 = "RotateShiftInstruction_16", i.RotateShiftInstruction_17 = "RotateShiftInstruction_17", i.RotateShiftInstruction_18 = "RotateShiftInstruction_18", i.RotateShiftInstruction_19 = "RotateShiftInstruction_19", i.RotateShiftInstruction_20 = "RotateShiftInstruction_20", i.RotateShiftInstruction_21 = "RotateShiftInstruction_21", i.RotateShiftInstruction_22 = "RotateShiftInstruction_22", i.RotateShiftInstruction_23 = "RotateShiftInstruction_23", i.RotateShiftInstruction_24 = "RotateShiftInstruction_24", i.RotateShiftInstruction_25 = "RotateShiftInstruction_25", i.RotateShiftInstruction_26 = "RotateShiftInstruction_26", i.RotateShiftInstruction_27 = "RotateShiftInstruction_27", i.RotateShiftInstruction_28 = "RotateShiftInstruction_28", i.RotateShiftInstruction_29 = "RotateShiftInstruction_29", i.RotateShiftInstruction_30 = "RotateShiftInstruction_30", i.RotateShiftInstruction_31 = "RotateShiftInstruction_31", i.RotateShiftInstruction_32 = "RotateShiftInstruction_32", i.RotateShiftInstruction_33 = "RotateShiftInstruction_33", i.RotateShiftInstruction_34 = "RotateShiftInstruction_34", i.BitManipulationInstruction_1 = "BitManipulationInstruction_1", i.BitManipulationInstruction_2 = "BitManipulationInstruction_2", i.BitManipulationInstruction_3 = "BitManipulationInstruction_3", i.BitManipulationInstruction_4 = "BitManipulationInstruction_4", i.BitManipulationInstruction_5 = "BitManipulationInstruction_5", i.BitManipulationInstruction_6 = "BitManipulationInstruction_6", i.BitManipulationInstruction_7 = "BitManipulationInstruction_7", i.BitManipulationInstruction_8 = "BitManipulationInstruction_8", i.BitManipulationInstruction_9 = "BitManipulationInstruction_9", i.BitManipulationInstruction_10 = "BitManipulationInstruction_10", i.BitManipulationInstruction_11 = "BitManipulationInstruction_11", i.BitManipulationInstruction_12 = "BitManipulationInstruction_12", i.Offset_1 = "Offset_1", i.Offset_2 = "Offset_2", i.JumpInstruction_1 = "JumpInstruction_1", i.JumpInstruction_2 = "JumpInstruction_2", i.JumpInstruction_3 = "JumpInstruction_3", i.JumpInstruction_4 = "JumpInstruction_4", i.JumpInstruction_5 = "JumpInstruction_5", i.JumpInstruction_6 = "JumpInstruction_6", i.JumpInstruction_7 = "JumpInstruction_7", i.JumpInstruction_8 = "JumpInstruction_8", i.JumpInstruction_9 = "JumpInstruction_9", i.JumpInstruction_10 = "JumpInstruction_10", i.JumpInstruction_11 = "JumpInstruction_11", i.CallInstruction_1 = "CallInstruction_1", i.CallInstruction_2 = "CallInstruction_2", i.ReturnInstruction_1 = "ReturnInstruction_1", i.ReturnInstruction_2 = "ReturnInstruction_2", i.ReturnInstruction_3 = "ReturnInstruction_3", i.ReturnInstruction_4 = "ReturnInstruction_4", i.ReturnInstruction_5 = "ReturnInstruction_5", i.InputInstruction_1 = "InputInstruction_1", i.InputInstruction_2 = "InputInstruction_2", i.InputInstruction_3 = "InputInstruction_3", i.InputInstruction_4 = "InputInstruction_4", i.InputInstruction_5 = "InputInstruction_5", i.InputInstruction_6 = "InputInstruction_6", i.OutputInstruction_1 = "OutputInstruction_1", i.OutputInstruction_2 = "OutputInstruction_2", i.OutputInstruction_3 = "OutputInstruction_3", i.OutputInstruction_4 = "OutputInstruction_4", i.OutputInstruction_5 = "OutputInstruction_5", i.OutputInstruction_6 = "OutputInstruction_6", i.ByteDirective_1 = "ByteDirective_1", i.ByteDirective_2 = "ByteDirective_2", i.ByteDirective_3 = "ByteDirective_3", i.ByteDirective_4 = "ByteDirective_4", i.ByteDirective_5 = "ByteDirective_5", i.WordDirective_1 = "WordDirective_1", i.WordDirective_2 = "WordDirective_2", i.WordDirective_3 = "WordDirective_3", i.BlockDirective_1 = "BlockDirective_1", i.BlockDirective_2 = "BlockDirective_2", i.BlockDirective_3 = "BlockDirective_3", i.ByteValue_1 = "ByteValue_1", i.ByteValue_2 = "ByteValue_2", i.ByteValue_3 = "ByteValue_3", i.WordValue = "WordValue", i.DataDirective_1 = "DataDirective_1", i.DataDirective_2 = "DataDirective_2", i.DataDirective_3 = "DataDirective_3", i.DataDirective_$0 = "DataDirective_$0", i.DataDirective_$1 = "DataDirective_$1", i.DataDirective_$2 = "DataDirective_$2", i.EscapeSequence_1 = "EscapeSequence_1", i.EscapeSequence_2 = "EscapeSequence_2", i.EscapeSequence_3 = "EscapeSequence_3", i.SimpleEscapeSequence = "SimpleEscapeSequence", i.SimpleEscapeSequence_$0_1 = "SimpleEscapeSequence_$0_1", i.SimpleEscapeSequence_$0_2 = "SimpleEscapeSequence_$0_2", i.OctalEscapeSequence = "OctalEscapeSequence", i.HexadecimalEscapeSequence = "HexadecimalEscapeSequence", i.NoQuoteChar = "NoQuoteChar", i.NoDoubleQuoteChar = "NoDoubleQuoteChar", i.QuottedStr = "QuottedStr", i.QuottedStr_$0_1 = "QuottedStr_$0_1", i.QuottedStr_$0_2 = "QuottedStr_$0_2", i.DoubleQuottedStr = "DoubleQuottedStr", i.DoubleQuottedStr_$0_1 = "DoubleQuottedStr_$0_1", i.DoubleQuottedStr_$0_2 = "DoubleQuottedStr_$0_2", i.Comment = "Comment", i.OriginDirective = "OriginDirective", i.Filename_1 = "Filename_1", i.Filename_2 = "Filename_2", i.IncludeDirective = "IncludeDirective", i.OutputDirective = "OutputDirective", i.OutputDirective_$0 = "OutputDirective_$0", i.DeviceDirective = "DeviceDirective", i.EndDirective = "EndDirective", i.$EOF = "$EOF", i))(x || {}); class Ut { constructor(t, n) { this.kind = "n_1", this.pos = t, this.binary = n, this.value = (() => S(t, n.raw, 2, 1))(); } } class Yt { constructor(t, n) { this.kind = "n_2", this.pos = t, this.hexadecimal = n, this.value = (() => S(t, n.raw, 16, 1))(); } } class zt { constructor(t, n) { this.kind = "n_3", this.pos = t, this.octal = n, this.value = (() => S(t, n.raw, 8, 1))(); } } class Wt { constructor(t, n) { this.kind = "n_4", this.pos = t, this.decimal = n, this.value = (() => S(t, n.raw, 10, 1))(); } } class Ht { constructor(t, n) { this.kind = "nn_1", this.pos = t, this.binary = n, this.value = (() => S(t, n.raw, 2, 2))(); } } class Zt { constructor(t, n) { this.kind = "nn_2", this.pos = t, this.hexadecimal = n, this.value = (() => S(t, n.raw, 16, 2))(); } } class Tt { constructor(t, n) { this.kind = "nn_3", this.pos = t, this.octal = n, this.value = (() => S(t, n.raw, 8, 2))(); } } class Kt { constructor(t, n) { this.kind = "nn_4", this.pos = t, this.decimal = n, this.value = (() => S(t, n.raw, 10, 2))(); } } class dt { constructor(t) { this.kind = "b", this.raw = t, this.value = (() => parseInt(t))(); } } class $t { constructor(t) { this.kind = "Statement_1", this.inc = t, this.info = (() => t.info)(); } } class tn { constructor(t) { this.kind = "Statement_2", this.ins = t, this.elements = (() => t.elements)(); } } class nn { constructor(t) { this.kind = "Statement_3", this.dir = t, this.elements = (() => t.elements)(), this.address = (() => t.address)(); } } class en { constructor(t) { this.kind = "Directive_1", this.data = t, this.elements = (() => t.elements)(), this.address = (() => null)(); } } class sn { constructor(t) { this.kind = "Directive_2", this.origin = t, this.elements = (() => [])(), this.address = (() => t.address.value)(); } } class rn { constructor(t) { this.kind = "Directive_3", this.directive = t, this.elements = (() => [])(), this.address = (() => null)(); } } class un { constructor(t) { this.kind = "Directive_4", this.directive = t, this.elements = (() => [])(), this.address = (() => null)(); } } class cn { constructor(t) { this.kind = "Directive_5", this.directive = t, this.elements = (() => [])(), this.address = (() => null)(); } } class ln { constructor(t) { this.kind = "Expression", this.e1 = t, this.eval = (() => t.eval)(); } } class on { constructor(t, n) { this.kind = "BitwiseOrExpression", this.left = t, this.right = n, this.eval = (() => R(t, n, lt))(); } } class an { constructor(t, n) { this.kind = "BitwiseXOrExpression", this.left = t, this.right = n, this.eval = (() => R(t, n, ot))(); } } class hn { constructor(t, n) { this.kind = "BitwiseAndExpression", this.left = t, this.right = n, this.eval = (() => R(t, n, at))(); } } class mn { constructor(t, n) { this.kind = "ShiftExpression", this.left = t, this.right = n, this.eval = (() => q(t, n, { "<<": ht, ">>": mt }))(); } } class _n { constructor(t, n) { this.kind = "AdditiveExpression", this.left = t, this.right = n, this.eval = (() => q(t, n, { "+": _t, "-": gt }))(); } } class gn { constructor(t, n) { this.kind = "MultiplicativeExpression", this.left = t, this.right = n, this.eval = (() => q(t, n, { "*": It, "/": wt, "%": xt }))(); } } class In { constructor(t, n) { this.kind = "UnaryExpression_1", this.op = t, this.e = n, this.eval = (() => ct(n, t, { "~": Lt, "+": ft, "-": At }))(); } } class wn { constructor(t) { this.kind = "UnaryExpression_2", this.e = t, this.eval = (() => p(t, G))(); } } class xn { constructor(t) { this.kind = "PrimaryExpression_1", this.nn = t, this.eval = (() => vt(t.value))(); } } class fn { constructor(t, n) { this.kind = "PrimaryExpression_2", this.pos = t, this.label = n, this.eval = (() => J(t, n.name))(); } } class An { constructor(t) { this.kind = "PrimaryExpression_3", this.e = t, this.eval = (() => p(t, G))(); } } class Ln { constructor(t, n) { this.kind = "Load8Instruction_1", this.r0 = t, this.r1 = n, this.elements = (() => [64 | _(t.reg, 3) | _(n.reg)])(); } } class Sn { constructor(t) { this.kind = "Load8Instruction_2", this.r = t, this.elements = (() => [70 | _(t, 3)])(); } } class kn { constructor(t, n) { this.kind = "Load8Instruction_3", this.r = t, this.i = n, this.elements = (() => [221, 70 | _(t, 3), c(n.offset)])(); } } class En { constructor(t, n) { this.kind = "Load8Instruction_4", this.r = t, this.i = n, this.elements = (() => [253, 70 | _(t, 3), c(n.offset)])(); } } class vn { constructor(t) { this.kind = "Load8Instruction_5", this.r = t, this.elements = (() => [112 | _(t)])(); } } class Cn { constructor(t, n) { this.kind = "Load8Instruction_6", this.i = t, this.r = n, this.elements = (() => [221, 112 | _(n), c(t.offset)])(); } } class bn { constructor(t, n) { this.kind = "Load8Instruction_7", this.i = t, this.r = n, this.elements = (() => [253, 112 | _(n), c(t.offset)])(); } } class Dn { constructor(t, n) { this.kind = "Load8Instruction_8", this.pos = t, this.n = n, this.elements = (() => [54, f(t, n)])(); } } class Rn { constructor(t, n, e) { this.kind = "Load8Instruction_9", this.i = t, this.pos = n, this.n = e, this.elements = (() => [221, 54, c(t.offset), f(n, e)])(); } } class qn { constructor(t, n, e) { this.kind = "Load8Instruction_10", this.i = t, this.pos = n, this.n = e, this.elements = (() => [253, 54, c(t.offset), f(n, e)])(); } } class Bn { constructor() { this.kind = "Load8Instruction_11", this.elements = (() => [10])(); } } class yn { constructor() { this.kind = "Load8Instruction_12", this.elements = (() => [26])(); } } class On { constructor(t, n) { this.kind = "Load8Instruction_13", this.pos = t, this.ee = n, this.elements = (() => [58, I(t, n)])(); } } class Nn { constructor() { this.kind = "Load8Instruction_14", this.elements = (() => [2])(); } } class Mn { constructor() { this.kind = "Load8Instruction_15", this.elements = (() => [18])(); } } class Pn { constructor(t, n) { this.kind = "Load8Instruction_16", this.pos = t, this.ee = n, this.elements = (() => [50, I(t, n)])(); } } class Vn { constructor() { this.kind = "Load8Instruction_17", this.elements = (() => [237, 87])(); } } class Fn { constructor() { this.kind = "Load8Instruction_18", this.elements = (() => [237, 95])(); } } class pn { constructor() { this.kind = "Load8Instruction_19", this.elements = (() => [237, 71])(); } } class Gn { constructor() { this.kind = "Load8Instruction_20", this.elements = (() => [237, 79])(); } } class Jn { constructor(t, n, e) {