@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
JavaScript
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) {