diff options
author | CircleShift <kgunger12@gmail.com> | 2025-03-05 07:26:58 -0500 |
---|---|---|
committer | CircleShift <kgunger12@gmail.com> | 2025-03-05 07:26:58 -0500 |
commit | d4fe9e6e27f2013a6e1f6be94daba91ec53fa5c3 (patch) | |
tree | bc30806a177f62c15e991d9ebcd5d2034a786183 /tnslc | |
parent | 61e1e5ce377719c8e9e437e5ba79ba06fc1de4ba (diff) |
[tnslc] Rework compile layout
Diffstat (limited to 'tnslc')
-rw-r--r-- | tnslc/breakdown.png | bin | 0 -> 168313 bytes | |||
-rw-r--r-- | tnslc/compile/codegen.tnsl | 4 | ||||
-rw-r--r-- | tnslc/compile/compbuf.tnsl | 45 | ||||
-rw-r--r-- | tnslc/compile/compile.tnsl | 10 | ||||
-rw-r--r-- | tnslc/compile/function.tnsl | 36 | ||||
-rw-r--r-- | tnslc/compile/generate.tnsl | 22 | ||||
-rw-r--r-- | tnslc/compile/module.tnsl | 68 | ||||
-rw-r--r-- | tnslc/compile/outbuf.tnsl | 31 | ||||
-rw-r--r-- | tnslc/compile/scope.tnsl | 14 | ||||
-rw-r--r-- | tnslc/compile/struct.tnsl | 46 | ||||
-rw-r--r-- | tnslc/compile/type.tnsl | 588 | ||||
-rw-r--r-- | tnslc/compile/var.tnsl | 33 | ||||
-rw-r--r-- | tnslc/layout_generator.png | bin | 0 -> 338881 bytes | |||
-rw-r--r-- | tnslc/out.log | 42244 | ||||
-rw-r--r-- | tnslc/vec_test.tnsl | 47 |
15 files changed, 42544 insertions, 644 deletions
diff --git a/tnslc/breakdown.png b/tnslc/breakdown.png Binary files differnew file mode 100644 index 0000000..dc5ce77 --- /dev/null +++ b/tnslc/breakdown.png diff --git a/tnslc/compile/codegen.tnsl b/tnslc/compile/codegen.tnsl new file mode 100644 index 0000000..165fe12 --- /dev/null +++ b/tnslc/compile/codegen.tnsl @@ -0,0 +1,4 @@ + +/; generate (~utils.File fin, fout) +;/ + diff --git a/tnslc/compile/compbuf.tnsl b/tnslc/compile/compbuf.tnsl new file mode 100644 index 0000000..b4ce261 --- /dev/null +++ b/tnslc/compile/compbuf.tnsl @@ -0,0 +1,45 @@ + +struct CompBuf { + utils.Vector + sec_head, + sec_data, + sec_code +} + +/; method CompBuf + /; init + self.sec_head.init(1) + self.sec_data.init(1) + self.sec_code.init(1) + ;/ + + /; add_h(~uint8 text) + self.sec_head.push_cstr(text) + ;/ + + /; add_d(~uint8 text) + self.sec_data.push_cstr(text) + ;/ + + /; add_c(~uint8 text) + self.sec_code.push_cstr(text) + ;/ + + /; write_to(~utils.File fout) + fout`.write_cstr("BITS 64\0\n") + fout`.write_cstr(self.sec_head.as_cstr()) + + fout`.write_cstr("\nsection .data\0\n\n") + fout`.write_cstr(self.sec_data.as_cstr()) + + fout`.write_cstr("\nsection .text\0\n\n") + fout`.write_cstr(self.sec_code.as_cstr()) + ;/ + + /; end + self.sec_head.end() + self.sec_data.end() + self.sec_code.end() + ;/ +;/ + diff --git a/tnslc/compile/compile.tnsl b/tnslc/compile/compile.tnsl index b980b62..338e28d 100644 --- a/tnslc/compile/compile.tnsl +++ b/tnslc/compile/compile.tnsl @@ -1,5 +1,9 @@ /; module compile - :import "type.tnsl" - :import "outbuf.tnsl" - :import "generate.tnsl" + :import "compbuf.tnsl" + :import "struct.tnsl" + :import "var.tnsl" + :import "function.tnsl" + :import "module.tnsl" + :import "codegen.tnsl" ;/ + diff --git a/tnslc/compile/function.tnsl b/tnslc/compile/function.tnsl new file mode 100644 index 0000000..cf42db1 --- /dev/null +++ b/tnslc/compile/function.tnsl @@ -0,0 +1,36 @@ + +struct Function { + ~uint8 name, + utils.Vector + inputs, + outputs, + ~parse.Node body +} + +/; method Function + /; init (~uint8 name) + self.name = name + Var v + self.inputs.init(len v) + self.outputs.init(len v) + ;/ + + /; end + _delete(self.name) + self.body`.end() + + ~Var v + /; loop (int i = 0; i < self.inputs.count) [i++] + v = self.inputs.get(i) + v`.end() + ;/ + self.inputs.end() + + /; loop (int i = 0; i < self.outputs.count) [i++] + v = self.outputs.get(i) + v`.end() + ;/ + self.outputs.end() + ;/ +;/ + diff --git a/tnslc/compile/generate.tnsl b/tnslc/compile/generate.tnsl deleted file mode 100644 index c05a304..0000000 --- a/tnslc/compile/generate.tnsl +++ /dev/null @@ -1,22 +0,0 @@ -/; generate_module (~OutBuf buf, ~Module mod) -;/ - -/; generate (~utils.File fin, fout) - parse.Node n = parse.generate_ast(fin) - n.update_children() - parse.print_ast(~n) - - OutBuf buf - buf.init() - - Module mod = transform_tree(~n, ~buf) - mod.print(0) - - - generate_module(~buf, ~mod) - buf.write_to_file(fout) - - mod.end() - buf.end() - n.end() -;/ diff --git a/tnslc/compile/module.tnsl b/tnslc/compile/module.tnsl new file mode 100644 index 0000000..6dbef6c --- /dev/null +++ b/tnslc/compile/module.tnsl @@ -0,0 +1,68 @@ + +struct Module { + # Text name of module + ~uint8 name, + + # Various contained elements + utils.Vector + vars, + structs, + funcs, + subs, + + # Whether we export or not + bool e +} + +/; method Module + + /; init (~uint8 name, bool exp) + Var v + Struct s + Function f + Module m + + self.vars.init(len v) + self.structs.init(len s) + self.funcs.init(len f) + self.subs.init(len m) + + self.name = name + self.e = exp + ;/ + + /; end + _delete(self.name) + + ~Var v + /; loop (int i = 0; i < self.vars.count) [i++] + v = self.vars.get(i) + v`.end() + ;/ + self.vars.end() + + ~Struct s + /; loop (int i = 0; i < self.structs.count) [i++] + s = self.structs.get(i) + s`.end() + ;/ + self.structs.end() + + ~Function f + /; loop (int i = 0; i < self.funcs.count) [i++] + f = self.funcs.get(i) + f`.end() + ;/ + self.funcs.end() + + ~Module m + /; loop (int i = 0; i < self.subs.count) [i++] + m = self.subs.get(i) + m`.end() + ;/ + self.subs.end() + + ;/ + +;/ + diff --git a/tnslc/compile/outbuf.tnsl b/tnslc/compile/outbuf.tnsl deleted file mode 100644 index 7394feb..0000000 --- a/tnslc/compile/outbuf.tnsl +++ /dev/null @@ -1,31 +0,0 @@ -struct OutBuf { - utils.Vector - hsec, - dsec, - csec -} - -/; method OutBuf - /; init - self.hsec.init(1) - self.dsec.init(1) - self.csec.init(1) - ;/ - - /; write_to_file (~utils.File fout) - fout`.open() - fout`.write_cstr("bits 64\n\0") - fout`.write_cstr(self.hsec.as_cstr()) - fout`.write_cstr("\nsection .data\n\0") - fout`.write_cstr(self.dsec.as_cstr()) - fout`.write_cstr("\nsection .text\n\0") - fout`.write_cstr(self.csec.as_cstr()) - fout`.close() - ;/ - - /; end - self.hsec.end() - self.dsec.end() - self.csec.end() - ;/ -;/ diff --git a/tnslc/compile/scope.tnsl b/tnslc/compile/scope.tnsl new file mode 100644 index 0000000..f95d0fd --- /dev/null +++ b/tnslc/compile/scope.tnsl @@ -0,0 +1,14 @@ + +struct Scope { + ~uint8 name, + utils.Vector + reg_vars, + stack_vars, + int + c_const, + c_sub +} + +/; method Scope +;/ + diff --git a/tnslc/compile/struct.tnsl b/tnslc/compile/struct.tnsl new file mode 100644 index 0000000..d175aef --- /dev/null +++ b/tnslc/compile/struct.tnsl @@ -0,0 +1,46 @@ + +struct Struct { + ~uint8 name, + ~Module methods, + utils.Vector members, + int size +} + +/; method Struct + + /; init (~uint8 name) + self.name = name + Var v + self.members.init(len v) + ;/ + + /; add_member(~Var v) + self.members.push(v) + ;/ + + /; get_member(~uint8 name) [~Var] + ~Var out = NULL + + ~Var v + /; loop (int i = 0; i < self.members.count) [i++] + v = self.members.get(i) + /; if (utils.strcmp(v`.name, name) == true) + return v + ;/ + ;/ + + return out + ;/ + + /; end + _delete(self.name) + ~Var v + /; loop (int i = 0; i < self.members.count) [i++] + v = self.members.get(i) + v`.end() + ;/ + self.members.end() + ;/ + +;/ + diff --git a/tnslc/compile/type.tnsl b/tnslc/compile/type.tnsl deleted file mode 100644 index 28813ce..0000000 --- a/tnslc/compile/type.tnsl +++ /dev/null @@ -1,588 +0,0 @@ -/; _indent (int indent) - /; loop (int i = 0; i < indent) [i++] - _printf(" \0") - ;/ -;/ - -struct Variable { - ~uint8 name, - ~Type _type, - utils.Vector ptr -} - -/; method Variable - /; init (~uint8 name) - self.name = name - self.ptr.init(8) - ;/ - - /; add_ptr(uint ptp) - self.ptr.push(~ptp) - ;/ - - /; get_ptr [uint] - /; if (self.ptr.count == 0) - return 0 - ;/ - ~uint p = self.ptr.get(self.ptr.count - 1) - return p` - ;/ - - /; pop_ptr [uint] - /; if (self.ptr.count == 0) - return 0 - ;/ - ~uint p = self.ptr.get(self.ptr.count - 1) - uint out = p` - self.ptr.pop() - return out - ;/ - - /; end - _delete(self.name) - self.ptr.end() - ;/ - - /; _prnt(int indent) - _printf(self.name) - - # todo: types and such - - _indent(indent) - _printf("}\n\0") - ;/ - - /; print (int indent) - _indent(indent) - _printf("{ Variable: \0") - _prnt(indent) - ;/ - - /; print_mem (int indent) - _indent(indent) - _printf("{ Member: \0") - _prnt(indent) - ;/ -;/ - -struct Type { - ~uint8 name, - uint size, - utils.Vector vars, - ~Module methods, -} - -/; method Type - /; init(~uint8 name) - self.name = name - Variable tmp - self.vars.init(len tmp) - ;/ - - /; add_var (~Variable v) - self.vars.push(v) - ;/ - - /; end - _delete(self.name) - /; loop (int i = 0; i < self.vars.count) [i++] - ~Variable v = self.vars.get(i) - v`.end() - ;/ - self.vars.end() - ;/ - - /; print (int indent) - _indent(indent) - _printf("{ Type: \0") - _printf(self.name) - _print_num(" { size: %d }\n\0", self.size) - - /; loop (int i = 0; i < self.vars.count) [i++] - ~Variable v = self.vars.get(i) - v`.print_mem(indent + 1) - ;/ - - _indent(indent) - _printf("}\n\0") - ;/ -;/ - -struct Function { - ~uint8 - name, - ~parse.Node - body, - utils.Vector - inputs, - outputs -} - -/; method Function - /; init (~uint8 name) - self.name = name - Variable vtmp - ~uint i - self.inputs.init(len vtmp) - self.outputs.init(len i) - ;/ - - /; add_input (~Variable v) - self.inputs.push(v) - ;/ - - /; add_output (~Type t) - self.outputs.push(~t) - ;/ - - /; end - _delete(self.name) - - /; loop (int i = 0; i < self.inputs.count) [i++] - ~Variable v = self.inputs.get(i) - v`.end() - ;/ - self.inputs.end() - - self.outputs.end() - ;/ -;/ - -struct Enum { - ~uint8 name, - ~Type _type, - utils.Vector vals -} - -/; method Enum - /; init (~uint8 name) - self.name = name - Variable vtmp - self.vals.init(len vtmp) - ;/ - - /; end - _delete(self.name) - /; loop (int i = 0; i < self.vals.count) [i++] - ~Variable v = self.vals.get(i) - v`.end() - ;/ - self.vals.end() - ;/ - - /; print (int indent) - _indent(indent) - _printf("{ Enum: \0") - _printf(self.name) - _printf("\n\0") - - /; loop (int i = 0; i < self.vals.count) [i++] - ~Variable v = self.vals.get(i) - v`.print(indent + 1) - ;/ - - _indent(indent) - _printf("}\n\0") - ;/ -;/ - -struct Module { - ~uint8 name, - ~Module parent, - bool exp, mth, - utils.Vector - sub, - vars, - types, - funcs, - enums - -} - -uint8 MOD_FIND_SUB = 0 -uint8 MOD_FIND_VAR = 1 -uint8 MOD_FIND_TYP = 2 -uint8 MOD_FIND_FUN = 3 -uint8 MOD_FIND_ENM = 4 - -/; method Module - /; init (~uint8 name) - self.name = name - Module mtmp - Variable vtmp - Type ttmp - Function ftmp - Enum etmp - self.sub.init(len mtmp) - self.vars.init(len vtmp) - self.types.init(len ttmp) - self.funcs.init(len ftmp) - self.enums.init(len etmp) - ;/ - - /; update_children - /; loop (int i = 0; i < self.sub.count) [i++] - ~Module s = self.sub.get(i) - s`.parent = ~self - ;/ - ;/ - - /; add_sub(~Module m) [~Module] - self.sub.push(m) - /; loop (int i = 0; i < self.sub.count) [i++] - ~Module s = self.sub.get(i) - s`.update_children() - ;/ - ~Module out = self.sub.get(self.sub.count - 1) - out`.parent = ~self - return out - ;/ - - /; add_var (~Variable v) - self.vars.push(v) - ;/ - - /; add_type (~Type t) - self.types.push(t) - ;/ - - /; add_funcs (~Function f) - self.funcs.push(f) - ;/ - - /; add_enum (~Enum e) - self.enums.push(e) - ;/ - - /; _find_rec (utils.Artifact pth, uint8 typ, int sub) [~void] - /; if (sub !< pth.count) - return NULL - ;; else if ((sub + 1) < pth.count) - /; loop (int i = 0; i < self.sub.count) [i++] - ~Module m = self.sub.get(i) - /; if (utils.strcmp(pth.get(sub), m`.name) == true && m`.mth == false) - return _find_rec(pth, typ, sub + 1) - ;/ - ;/ - ;; else - /; if (typ == MOD_FIND_SUB) - /; loop (int i = 0; i < self.sub.count) [i++] - ~Module m = self.sub.get(i) - /; if (utils.strcmp(pth.get(sub), m`.name) == true && m`.mth == false) - return self.sub.get(i) - ;/ - ;/ - ;; else if (typ == MOD_FIND_VAR) - /; loop (int i = 0; i < self.vars.count) [i++] - ~Variable v = self.vars.get(i) - /; if (utils.strcmp(pth.get(sub), v`.name) == true) - return self.vars.get(i) - ;/ - ;/ - ;; else if (typ == MOD_FIND_TYP) - /; loop (int i = 0; i < self.types.count) [i++] - ~Type t = self.types.get(i) - /; if (utils.strcmp(pth.get(sub), t`.name) == true) - return self.types.get(i) - ;/ - ;/ - ;; else if (typ == MOD_FIND_FUN) - /; loop (int i = 0; i < self.funcs.count) [i++] - ~Function f = self.funcs.get(i) - /; if (utils.strcmp(pth.get(sub), f`.name) == true) - return self.funcs.get(i) - ;/ - ;/ - ;; else if (typ == MOD_FIND_ENM) - /; loop (int i = 0; i < self.enums.count) [i++] - ~Enum e = self.enums.get(i) - /; if (utils.strcmp(pth.get(sub), e`.name) == true) - return self.enums.get(i) - ;/ - ;/ - ;/ - ;/ - - /; if (self.parent == NULL || sub !== 0) - return NULL - ;/ - - return self.parent._find_rec(pth, typ, 0) - ;/ - - /; find (utils.Artifact pth, uint8 typ) [~void] - return _find_rec(pth, typ, 0) - ;/ - - /; end - _delete(self.name) - - /; loop (int i = 0; i < self.sub.count) [i++] - ~Module m = self.sub.get(i) - m`.end() - ;/ - self.sub.end() - - /; loop (int i = 0; i < self.vars.count) [i++] - ~Variable v = self.vars.get(i) - v`.end() - ;/ - self.vars.end() - - /; loop (int i = 0; i < self.types.count) [i++] - ~Type t = self.types.get(i) - t`.end() - ;/ - self.types.end() - - /; loop (int i = 0; i < self.funcs.count) [i++] - ~Function f = self.funcs.get(i) - f`.end() - ;/ - self.funcs.end() - - /; loop (int i = 0; i < self.enums.count) [i++] - ~Enum e = self.enums.get(i) - e`.end() - ;/ - self.enums.end() - ;/ - - /; print (int indent) - _indent(indent) - /; if (self.mth == true) - _printf("{ Method: \0") - ;; else - _printf("{ Module: \0") - ;/ - _printf(self.name) - _printf("\n\0") - - - /; loop (int i = 0; i < self.sub.count) [i++] - ~Module s = self.sub.get(i) - s`.print(indent + 1) - ;/ - - /; loop (int i = 0; i < self.types.count) [i++] - ~Type s = self.types.get(i) - s`.print(indent + 1) - ;/ - - /; loop (int i = 0; i < self.enums.count) [i++] - ~Enum s = self.enums.get(i) - s`.print(indent + 1) - ;/ - - _indent(indent) - _printf("}\n\0") - ;/ -;/ - -{}~uint8 GEN_VAR_NAMES = { "int\0", "int8\0", "int16\0", "int32\0", "int64\0", "uint\0", "uint8\0", "uint16\0", "uint32\0", "uint64\0", "float\0", "float32\0", "float64\0", "vect\0", "bool\0", "void\0" } - -{}uint GEN_VAR_SIZES = { 8, 1, 2, 4, 8, 8, 1, 2, 4, 8, 8, 4, 8, 0, 1, 8} - -/; find_type(utils.Artifact a, ~parse.Node n) [~parse.Node] - return NULL -;/ - -/; transform_struct(~parse.Node n, ~Module m) -;/ - -/; transform_enum(~parse.Node n, ~OutBuf b, ~Module m) -;/ - -/; _tfn_mod_loop (~parse.Node n, ~OutBuf b, ~Module m) - /; loop (int i = 0; i < n`.sub.count) [i++] - ~parse.Node s = n`.sub.get(i) - /; if (s`._type == parse.NTYPE_MODULE || s`._type == parse.NTYPE_EXPORT) - transform_module(s, b, m) - ;; else if (s`._type == parse.NTYPE_STRUCT) - transform_struct(s, m) - ;; else if (s`._type == parse.NTYPE_ENUM) - transform_enum(s, b, m) - ;/ - ;/ -;/ - -/; transform_module (~parse.Node n, ~OutBuf b, ~Module parent) - ~Module s = NULL - - /; loop (int i = 0; i < parent`.sub.count) [i++] - ~Module tmp = parent`.sub.get(i) - /; if (utils.strcmp(n`.data, tmp`.name) == true) - s = tmp - ;/ - ;/ - - ~int cmp = s - /; if (cmp == NULL) - Module out - out.init(utils.strcpy(n`.data)) - - /; if (n`._type == parse.NTYPE_EXPORT) - out.exp = true - ;; else - out.exp = false - ;/ - - s = parent`.add_sub(~out) - ;/ - - _tfn_mod_loop(n, b, s) -;/ - -# -# GEN DEFAULT TYPES -# - -/; _tfn_gen_default_types (~Module m) - Module d - d.init(utils.strcpy("#\0")) - ~Module dp = m`.add_sub(~d) - /; loop (int i = 0; i < len GEN_VAR_NAMES) [i++] - Type t - t.init(utils.strcpy(GEN_VAR_NAMES{i})) - t.size = GEN_VAR_SIZES{i} - t.methods = dp - m`.add_type(~t) - ;/ -;/ - -# -# GEN TYPES & ENUMS FIRST PASS -# - -/; _tfn_gen_types_mod(~parse.Node n, ~Module m) - ~Module s = NULL - - /; loop (int i = 0; i < m`.sub.count) [i++] - ~Module tmp = m`.sub.get(i) - /; if (utils.strcmp(n`.data, tmp`.name) == true) - s = tmp - ;/ - ;/ - - ~int cmp = s - /; if (cmp == NULL) - Module out - out.init(utils.strcpy(n`.data)) - - /; if (n`._type == parse.NTYPE_EXPORT) - out.exp = true - ;; else - out.exp = false - ;/ - - s = m`.add_sub(~out) - ;/ - - _tfn_gen_types(n, s) -;/ - -/; _tfn_gen_types (~parse.Node n, ~Module m) - /; loop (int i = 0; i < n`.sub.count) [i++] - ~parse.Node s = n`.sub.get(i) - /; if (s`._type == parse.NTYPE_MODULE || s`._type == parse.NTYPE_EXPORT) - _tfn_gen_types_mod(s, m) - ;; else if (s`._type == parse.NTYPE_STRUCT) - Module mth - mth.init(utils.stradd("_#\0", s`.data)) - ~Module mp = m`.add_sub(~mth) - - Type t - t.size = 0 - t.init(utils.strcpy(s`.data)) - t.methods = mp - m`.add_type(~t) - ;; else if (s`._type == parse.NTYPE_ENUM) - Enum e - e.init(utils.strcpy(s`.data)) - m`.add_enum(~e) - ;/ - ;/ -;/ - -# Main transform functions - -/; _td_rec(~parse.Node n, ~utils.Artifact a) - /; if (n`.eq(".\0") == true && n`.sub.count > 1) - ~parse.Node tmp = n`.sub.get(0) - _td_rec(tmp, a) - tmp = n`.sub.get(1) - _td_rec(tmp, a) - ;; else if (n`._type == parse.NTYPE_ID) - a`.push(utils.strcpy(n`.data)) - ;/ -;/ - -/; transform_dot(~parse.Node n) [utils.Artifact] - utils.Artifact out - out.init() - - _td_rec(n, ~out) - - return out -;/ - -/; art_from_type(~parse.Node n) [utils.Artifact] - utils.Artifact out - out.init() - - /; if (n`._type !== parse.NTYPE_TYPE) - return out - ;/ - - /; loop (int i = 0; i < n`.sub.count) [i++] - ~parse.Node s = n`.sub.get(i) - /; if (s`._type == parse.NTYPE_ID) - out.push(utils.strcpy(s`.data)) - ;/ - ;/ - - return out -;/ - -/; vec_from_type(~parse.Node n) [utils.Vector] - utils.Vector out - out.init(8) - - /; if (n`._type !== parse.NTYPE_TYPE) - return out - ;/ - - int nm - /; loop (int i = 0; i < n`.sub.count) [i++] - ~parse.Node s = n`.sub.get(i) - /; if (s`._type == parse.NTYPE_PRE_OP) - /; if (s`.eq("~\0") == true) - nm = 0 - 1 - ;; else if (s`.eq("{\0") == true) - # TODO: WHATEVER - nm = 0 - 2 - ;/ - out.push(~nm) - ;; else if (s`._type == parse.NTYPE_POST_OP) - /; if (s`.eq("`\0") == true) - nm = 0 - out.push(~nm) - ;/ - ;/ - ;/ - - return out -;/ - -/; transform_tree (~parse.Node n, ~OutBuf buf) [Module] - Module out - out.init(utils.strcpy(n`.data)) - out.exp = true - - _tfn_gen_default_types(~out) - _tfn_gen_types(n, ~out) - out.update_children() - _tfn_mod_loop(n, buf, ~out) - - return out -;/ diff --git a/tnslc/compile/var.tnsl b/tnslc/compile/var.tnsl new file mode 100644 index 0000000..9526fc6 --- /dev/null +++ b/tnslc/compile/var.tnsl @@ -0,0 +1,33 @@ + +struct Var { + ~uint8 name, + ~Struct _type, + utils.Vector ptrc, + int loc +} + +/; method Var + /; init (~uint8 name) + self.name = name + self.ptrc.init(4) + ;/ + + /; ptr [int32] + ~int32 i + i = self.ptrc.get(self.ptrc.count - 1) + return i` + ;/ + + /; ptr_push (int32 p) + self.ptrc.push(~p) + ;/ + + /; ptr_pop + self.ptrc.pop() + ;/ + + /; end + _delete(self.name) + self.ptrc.end() + ;/ +;/ diff --git a/tnslc/layout_generator.png b/tnslc/layout_generator.png Binary files differnew file mode 100644 index 0000000..4e1c05c --- /dev/null +++ b/tnslc/layout_generator.png diff --git a/tnslc/out.log b/tnslc/out.log new file mode 100644 index 0000000..046dd0c --- /dev/null +++ b/tnslc/out.log @@ -0,0 +1,42244 @@ +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: tnslc.tnsl + At: Token { ":", line: 1, col: 1, type: UNKNOWN } + +Importing utils/utils.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: utils/utils.tnsl + At: Token { ":", line: 1, col: 1, type: UNKNOWN } + +Importing utils/c_wrap_linux.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: utils/utils.tnsl + At: Token { ":", line: 5, col: 2, type: UNKNOWN } + +Importing utils/vector.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: utils/utils.tnsl + At: Token { ":", line: 6, col: 2, type: UNKNOWN } + +Importing utils/file.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: utils/utils.tnsl + At: Token { ":", line: 7, col: 2, type: UNKNOWN } + +Importing utils/algo.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: utils/utils.tnsl + At: Token { ":", line: 8, col: 2, type: UNKNOWN } + +Importing utils/iterator.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: tnslc.tnsl + At: Token { ":", line: 2, col: 1, type: UNKNOWN } + +Importing parse/parse.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: parse/parse.tnsl + At: Token { ":", line: 2, col: 2, type: UNKNOWN } + +Importing parse/tokenizer.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: parse/parse.tnsl + At: Token { ":", line: 3, col: 2, type: UNKNOWN } + +Importing parse/ast.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: tnslc.tnsl + At: Token { ":", line: 3, col: 1, type: UNKNOWN } + +Importing compile/compile.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: compile/compile.tnsl + At: Token { ":", line: 2, col: 2, type: UNKNOWN } + +Importing compile/type.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: compile/compile.tnsl + At: Token { ":", line: 3, col: 2, type: UNKNOWN } + +Importing compile/outbuf.tnsl +Expected 'import', 'struct', 'asm', block, or declaration in top level: + File: compile/compile.tnsl + At: Token { ":", line: 4, col: 2, type: UNKNOWN } + +Importing compile/generate.tnsl +{ NODE_TYPE: MODULE, DATA: + { NODE_TYPE: ASM, DATA: extern malloc, realloc, free, printf, putchar, open, close, read, write, lseek, perror + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: { + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: _alert + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Alert!\n\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: { + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: _dec + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "%d\n\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: { + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: _ptr + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "%p\n\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: NULL + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _alloc + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, 0 + } + { NODE_TYPE: ASM, DATA: xor rax, rax + } + { NODE_TYPE: ASM, DATA: call malloc wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r11, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _realloc + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: new_size + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, r11 + } + { NODE_TYPE: ASM, DATA: xor rax, rax + } + { NODE_TYPE: ASM, DATA: call realloc wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r12, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _delete + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, 0 + } + { NODE_TYPE: ASM, DATA: xor rax, rax + } + { NODE_TYPE: ASM, DATA: call free wrt ..plt + } + } + { NODE_TYPE: FUNCTION, DATA: _putchar + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: char + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: xor rsi, rsi + } + { NODE_TYPE: ASM, DATA: xor rax, rax + } + { NODE_TYPE: ASM, DATA: call putchar wrt ..plt + } + } + { NODE_TYPE: FUNCTION, DATA: _printf + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _putchar + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _print_num + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: str + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: num + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, r11 + } + { NODE_TYPE: ASM, DATA: xor rax, rax + } + { NODE_TYPE: ASM, DATA: call printf wrt ..plt + } + } + { NODE_TYPE: FUNCTION, DATA: _create_file + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, 0q1102 + } + { NODE_TYPE: ASM, DATA: mov rdx, 0q700 + } + { NODE_TYPE: ASM, DATA: call open wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r11, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _open_file + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, 2 + } + { NODE_TYPE: ASM, DATA: mov rdx, 0q700 + } + { NODE_TYPE: ASM, DATA: call open wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r11, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _close_file + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: call close wrt ..plt + } + } + { NODE_TYPE: FUNCTION, DATA: _read_byte + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: handle + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: byte + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, r11 + } + { NODE_TYPE: ASM, DATA: mov rdx, 1 + } + { NODE_TYPE: ASM, DATA: call read wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r12, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _fseek + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: handle + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, r11 + } + { NODE_TYPE: ASM, DATA: mov rdx, 0 + } + { NODE_TYPE: ASM, DATA: call lseek wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r12, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _write_byte + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: handle + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: byte + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: mov rsi, r11 + } + { NODE_TYPE: ASM, DATA: mov rdx, 1 + } + { NODE_TYPE: ASM, DATA: call write wrt ..plt + } + { NODE_TYPE: ASM, DATA: mov r12, rax + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _perror + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: ASM, DATA: mov rax, rsp + } + { NODE_TYPE: ASM, DATA: xor rdx, rdx + } + { NODE_TYPE: ASM, DATA: mov rcx, 16 + } + { NODE_TYPE: ASM, DATA: div rcx + } + { NODE_TYPE: ASM, DATA: sub rsp, rdx + } + { NODE_TYPE: ASM, DATA: sub rsp, 128 + } + { NODE_TYPE: ASM, DATA: mov rdi, r10 + } + { NODE_TYPE: ASM, DATA: xor rsi, rsi + } + { NODE_TYPE: ASM, DATA: xor rax, rax + } + { NODE_TYPE: ASM, DATA: call perror wrt ..plt + } + } + { NODE_TYPE: FUNCTION, DATA: print_alert + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _alert + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: MODULE, DATA: utils + { NODE_TYPE: STRUCT, DATA: Vector + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: data + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: count + } + { NODE_TYPE: ID, DATA: size + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: VECTOR_MIN_ELEMENTS + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 256 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: NUM_STR + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Num %d\n\0" + } + } + } + } + { NODE_TYPE: METHOD, DATA: Vector + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: elsz + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + { NODE_TYPE: ID, DATA: elsz + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: VECTOR_MIN_ELEMENTS + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: ID, DATA: _alloc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: from_cstr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: cstr + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: push_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cstr + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _grow + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: ID, DATA: _realloc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: get + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: index + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: index + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: ID, DATA: index + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: push + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: el + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _grow + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _grow + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + { NODE_TYPE: ID, DATA: start + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: to + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: from + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: el + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: to + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: from + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _shrink + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: ID, DATA: _realloc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: pop + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: remove + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: remove + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: index + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: index + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: index + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: ID, DATA: index + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: to + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: from + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: to + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: from + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _shrink + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: push_char + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: push_cstr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: as_cstr + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: z + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: z + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _elsz + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Artifact + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: strings + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: size + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: METHOD, DATA: Artifact + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: VECTOR_MIN_ELEMENTS + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + { NODE_TYPE: ID, DATA: _alloc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: split_cstr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: split + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: track + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: track + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: split + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: track + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: track + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: track + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: track + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _grow + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + { NODE_TYPE: ID, DATA: _realloc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: push + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _grow + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _grow + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: ID, DATA: str + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _shrink + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + { NODE_TYPE: ID, DATA: _realloc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: pop + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _shrink + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: get + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: index + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: index + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: index + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: to_cstr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: join + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: join + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: strings + } + } + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: File + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Artifact + } + } + { NODE_TYPE: ID, DATA: path + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int32 + } + } + { NODE_TYPE: ID, DATA: handle + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: pos + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: at_end + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: PT_HANDLE + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Handle: %p\n\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: PARENT_DIR + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".." + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: CURRENT_DIR + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "." + } + } + } + } + { NODE_TYPE: METHOD, DATA: File + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: ID, DATA: split_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: relative + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: File + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: current + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: path + } + { NODE_TYPE: ID, DATA: to_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: current + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: current + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Artifact + } + } + { NODE_TYPE: ID, DATA: add + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: add + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: add + } + { NODE_TYPE: ID, DATA: split_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: add + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: add + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: CURRENT_DIR + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: ID, DATA: split_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: add + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _close_file + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: path + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: open + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: path + } + { NODE_TYPE: ID, DATA: to_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: ID, DATA: _open_file + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: create + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: path + } + { NODE_TYPE: ID, DATA: to_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: ID, DATA: _create_file + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: close + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _close_file + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: read + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: bytes + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _read_byte + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: bytes + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: bytes + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _perror + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Error reading from file\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "FD: %ld\n\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: unread + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _fseek + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: write + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: byte + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: written + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _write_byte + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: handle + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: byte + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: written + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: write_cstr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: write + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: strcmp + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: a + } + { NODE_TYPE: ID, DATA: b + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: a + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: b + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: a + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: b + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: a + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: b + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: b + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: a + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: strlen + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: base_for_char + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: c + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: c + } + { NODE_TYPE: LITERAL, DATA: 'b' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: c + } + { NODE_TYPE: LITERAL, DATA: 'B' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: c + } + { NODE_TYPE: LITERAL, DATA: 'o' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: c + } + { NODE_TYPE: LITERAL, DATA: 'O' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: c + } + { NODE_TYPE: LITERAL, DATA: 'x' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: c + } + { NODE_TYPE: LITERAL, DATA: 'X' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 16 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: decode_bin + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '1' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: decode_oct + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + { NODE_TYPE: BIN_OP, DATA: !> + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '7' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: decode_hex + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + { NODE_TYPE: BIN_OP, DATA: !> + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '9' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 'a' + } + } + { NODE_TYPE: BIN_OP, DATA: !> + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 'f' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 'a' + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 'A' + } + } + { NODE_TYPE: BIN_OP, DATA: !> + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 'F' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 'A' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: decode_dec + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NUM_STR + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + { NODE_TYPE: BIN_OP, DATA: !> + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '9' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: cstr_to_int + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: base + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: start + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: l + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: strlen + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '9' + } + } + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: ID, DATA: base_for_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: ID, DATA: l + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: base + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: decoded + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NUM_STR + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NUM_STR + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_bin + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_oct + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_dec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 16 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_hex + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: decoded + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: cstr_to_uint + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: base + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: start + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: l + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: strlen + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '9' + } + } + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: ID, DATA: base_for_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: start + } + { NODE_TYPE: ID, DATA: l + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: BIN_OP, DATA: * + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: base + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: decoded + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_bin + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_oct + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_dec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: 16 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decoded + } + { NODE_TYPE: ID, DATA: decode_hex + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: start + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: decoded + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: reverse_str + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: l + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: strlen + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: uint_to_hex_str + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 'x' + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 16 + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: % + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 16 + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: LITERAL, DATA: 9 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: LITERAL, DATA: 'a' + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: LITERAL, DATA: '0' + } + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: reverse_str + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: str + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: int_to_str + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '-' + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: LITERAL, DATA: 0 + } + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: / + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: % + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: LITERAL, DATA: '0' + } + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push_char + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '-' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: reverse_str + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: str + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: reverse_str + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: strcpy + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: cstr + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: from_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cstr + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: unquote_cha + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: cha + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '\\' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '\"' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '\"' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '\'' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '\'' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '\\' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '\\' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 'n' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '\n' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 't' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '\t' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cha + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: unquote_str + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '\"' + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: buf + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: '\\' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: buf + } + { NODE_TYPE: ID, DATA: unquote_cha + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: buf + } + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Iterator + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: v + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: pos + } + } + } + { NODE_TYPE: METHOD, DATA: Iterator + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: v + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: v + } + } + { NODE_TYPE: ID, DATA: v + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: get + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: next + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: at_end + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: prev + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: get_pos + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: set_pos + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: pos + } + } + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + } + { NODE_TYPE: MODULE, DATA: parse + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_SEP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYWD + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 5 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 6 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_COMNT + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 7 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_UNKNOWN + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 998 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 999 + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Token + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: _type + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: data + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: line + } + { NODE_TYPE: ID, DATA: col + } + } + } + { NODE_TYPE: METHOD, DATA: Token + { NODE_TYPE: FUNCTION, DATA: eq + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _in_csv + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: csv + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: along + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: csv + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: csv + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: csv + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: ',' + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: along + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: along + } + } + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: along + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: along + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: along + } + } + } + } + { NODE_TYPE: ID, DATA: csv + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: along + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: along + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: along + { NODE_TYPE: POST_OP, DATA: -- + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: along + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: along + } + } + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _str_contains + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: KEYWORDS + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "import,using,module,export,struct,method,implements,interface,operator,enum,if,else,loop,continue,break,return,label,goto,asm\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: KEYTYPES + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "uint8,uint16,uint32,uint64,uint,int8,int16,int32,int64,int,float32,float64,float,bool,void,vect,type\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: LITERALS + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "false,true,null,iota\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: RESERVED + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~`!@#$%^&*()[]{}-+=\"\'\\|;:/?.>,<\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: OP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "`~!%^&|*-=+./><\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MULTI_OP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "==,&&,||,^^,!==,!&&,!||,!^^,!<,!>,<<,>>,!&,!|,!^,++,--,>==,<==\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: MAX_MULTI + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MULTI_OP_W + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "is,len\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: DELIMS + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "()[]{}\0" + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: produce_word_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: prev + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_reserved + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_whitespace + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _in_csv + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: KEYWORDS + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYWD + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _in_csv + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: KEYTYPES + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _in_csv + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: LITERALS + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _in_csv + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: MULTI_OP_W + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: produce_string_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: prev + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: delim + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: delim + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: delim + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '\\' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '\n' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: line + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: ID, DATA: delim + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: delim + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: comment_line + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '\n' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: comment_block + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '#' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: comment_line + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '\n' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: is_comment_block + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/#\0" + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: is_multi_delim + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: produce_reserved_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: prev + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '#' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_COMNT + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: comment_line + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: ID, DATA: MAX_MULTI + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_reserved + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: ID, DATA: MAX_MULTI + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: ',' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_SEP + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _str_contains + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _str_contains + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: DELIMS + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_UNKNOWN + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _in_csv + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: MULTI_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_comment_block + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_COMNT + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: comment_block + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_multi_delim + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: str + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: produce_numeric_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: prev + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: base + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_reserved + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_whitespace + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_numeric + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: decimal + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: at_end + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: decimal + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '.' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: decimal + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_reserved + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_whitespace + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_numeric + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: base + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ch + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: is_whitespace + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: 14 + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: ' ' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: is_reserved + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _str_contains + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: RESERVED + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ch + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: is_numeric + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '0' + } + } + { NODE_TYPE: BIN_OP, DATA: !> + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '9' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: produce_next_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: prev + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strlen + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_whitespace + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: LITERAL, DATA: '\n' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: line + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: read + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: unread + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: LITERAL, DATA: '\'' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: LITERAL, DATA: '\"' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_string_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: prev + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_reserved + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_reserved_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: prev + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_COMNT + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_numeric + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_numeric_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: prev + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_word_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: prev + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: prev + } + { NODE_TYPE: ID, DATA: col + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: produce_first_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: col + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: gen_token_list + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: open + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: produce_first_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_COMNT + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: com + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: com + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: com + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: close + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_token_type + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: t + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "DELIM\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_SEP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "SEP\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "KEYWD\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "KEYTP\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "LITRL\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "AUG\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "USRWD\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_COMNT + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "COMNT\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_UNKNOWN + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "UNKNOWN\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ERR\0" + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_token + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: t + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Token { \"\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\", line: %u\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ", col: %u, type: \0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: col + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_token_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: t + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: " }\n\0" + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_token_list + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: vec + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tok + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vec + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tok + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vec + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end_token_list + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: vec + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tok + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vec + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tok + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vec + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vec + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_MODULE + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_EXPORT + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_STRUCT + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_TYPE + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 5 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 6 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 7 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_FUNCTION + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_METHOD + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 9 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_TLIST + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_DLIST + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 11 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_ELIST + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 12 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_SLIST + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 13 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_LITERAL + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 14 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_ENUM + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 15 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_DECL + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 16 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_VLIST + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 17 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_VALUE + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 18 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_CAST + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 19 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_FLOW_CONTROL + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 20 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_IF_BLOCK + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 21 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_ELIF_BLOCK + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 22 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 23 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 24 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_ASM + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 998 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: NTYPE_EMPTY + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 999 + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Node + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: _type + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: data + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + { NODE_TYPE: METHOD, DATA: Node + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: _type + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: _type + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: eq + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: cstr + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cstr + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: update_children + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: self + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_child + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: self + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: chk + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: cmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: update_children + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _get_closing_delim + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '/' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '(' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ')' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '[' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ']' + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '{' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '}' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _is_closing + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tok + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '}' + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: ']' + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: ')' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _advance_check + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tok + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: eq + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: eq + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: MAX_ERR_SHOW + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 15 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: errors_shown + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_print_err + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tok + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: msg + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: msg + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ":\n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: " File: \0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: path + } + { NODE_TYPE: ID, DATA: to_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\n At: \0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\n\0" + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: errors_shown + } + { NODE_TYPE: ID, DATA: MAX_ERR_SHOW + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\nToo many errors to print, other errors will be suppressed\n\0" + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_block_pass + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: deep + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _op_prefix + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: l + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strlen + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "len\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "--\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "++\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '-' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '!' + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '~' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _op_postfix + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "`\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "++\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "--\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _op_bin + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "-\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_prefix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_postfix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _op_order + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: l + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strlen + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '`' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '.' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '~' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '*' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '%' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 6 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '+' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '-' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 7 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '!' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '&' + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '|' + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '^' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '<' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '>' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 9 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '=' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 11 + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "is\0" + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: ch + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '+' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '-' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '<' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '>' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ch + } + { NODE_TYPE: LITERAL, DATA: '=' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 9 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '<' + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '>' + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 9 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '=' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 11 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '!' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: l + } + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "len\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 5 + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: op + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: LITERAL, DATA: '=' + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 9 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 10 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[FATAL] [CMPERR] _op_order: Augment not implemented in ordering \0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "'%s'\n\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 999 + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _astv_pre_id + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_prefix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Only certain augments (-, !, ~, --, ++, len) can be used as prefixes for bare values\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: pre + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pre + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: pre + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _astv_cast + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[\0" + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cast + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cast + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_CAST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: cast + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cast + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: cast + } + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _astv_post_id + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_postfix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: post + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: post + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: post + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _ast_list_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _ast_list_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: ind + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ind + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ind + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected value for index operation after '{'\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ind + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected '}' to show the end of an index operation after the value\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_value_bare + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _astv_pre_id + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _ast_list_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected closing ')' for singlet\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _astv_cast + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: val + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: val + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: val + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: val + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: val + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_LITERAL + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: val + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected compound, parenthetical, literal, or identifier for bare value\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _astv_post_id + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: EMPTY, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected method/member name after '.'\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: repl + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: dot + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: dot + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: dot + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: repl + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: val + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: val + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _astv_post_id + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: val + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: dot + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: val + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: dot + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _assoc_right + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: order + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _op_order + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: order + } + { NODE_TYPE: LITERAL, DATA: 11 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _assoc + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: j + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _op_order + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: ID, DATA: _assoc_right + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: op + } + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: ID, DATA: j + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: ID, DATA: j + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_value + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: val + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: val + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_VALUE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: val + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value_bare + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: valid + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: run + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_SEP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: valid + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_bin + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: bin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _op_order + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: gt + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: ID, DATA: _assoc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: ID, DATA: _assoc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: rhs + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: rhs + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: bin + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "is\0" + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: ID, DATA: _ast_value_bare + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: valid + } + { NODE_TYPE: ID, DATA: run + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: val + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: valid + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_keyword_expr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "return\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "continue\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "break\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: ret + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ret + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_FLOW_CONTROL + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ret + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ret + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unsupported keyword statement\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _type_helper_pre + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ptr + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: arr + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: arr + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: is_numeric + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: num + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: num + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_LITERAL + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: arr + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: num + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected closing '}' after integer in type declaration\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected integer or '}' to define either a fixed sized array or pointer to unknown sized array\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: arr + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _type_helper_func + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _type_helper_usertype + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: utp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: utp + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier in fully qualified type chain\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_type + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: typ + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_TYPE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _type_helper_pre + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: typ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "void\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: ktp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ktp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ktp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _type_helper_func + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: typ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: typ + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _type_helper_usertype + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: typ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: ktp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ktp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ktp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected keytype or usertype when parsing type\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: typ + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "`\0" + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: post + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: post + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: post + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: typ + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_list_value + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: list + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_VLIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _get_closing_delim + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the value list or a closing delimiter\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: next + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _maybe_helper_decl + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: next + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: next + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: next + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: next + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: id + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: tp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_TYPE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: utmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utmp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tp + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: utmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: next + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: utp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utp + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tp + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: utp + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: next + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier in fully qualified type chain\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: tp + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: tp + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier after user type in type list\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: id + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_list_decl + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: list + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_DLIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _get_closing_delim + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: seen + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: seen + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: seen + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected type then identifier as first items in declaration list\0" + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier after type in params/struct def\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: seen + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: id + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _maybe_helper_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected type or parameter name in declaration list\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the declaration list or a closing delimiter\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: next + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_list_enum + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: list + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ELIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _get_closing_delim + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: enum_id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: enum_id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "=\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: enum_id + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: enum_id + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier in body of enum declaration\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the type list or a closing delimiter\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: next + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_list_type + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: list + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_TLIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _get_closing_delim + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected type in type list\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the type list or a closing delimiter\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: next + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_list_stmt + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: list + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_SLIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _get_closing_delim + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "asm\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_asm + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _maybe_helper_fun + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: ID, DATA: _op_prefix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_keyword_expr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: empty + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: empty + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_EMPTY + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: list + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: empty + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected definition, expression, or ';' in statement list\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: list + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: ID, DATA: end + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected closing at end of statement list\0" + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ln + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _block_helper_method + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: blf + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_function + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected function or operator overload in method block\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_block_pass + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected opening block in method block\0" + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: blf + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for function in method block\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: blf + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_method + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: blf + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier of struct after 'method'\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mth + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mth + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_METHOD + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _block_helper_method + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: mth + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Method block being skipped. Parsing will resume after the end\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_block_pass + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: blf + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for method block\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: mth + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_flow + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: block_type + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_IF_BLOCK + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "else\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "if\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: block_type + } + { NODE_TYPE: ID, DATA: NTYPE_ELIF_BLOCK + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: block_type + } + { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "loop\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: block_type + } + { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tok + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tok + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: block_type + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: block_type + } + { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_stmt + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: block_type + } + { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_stmt + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "asm\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_asm + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_fun_block + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _maybe_helper_fun + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: ID, DATA: _op_prefix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_keyword_expr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected definition, expression, or sub block in flow block\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_fun_block + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: blf + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "if\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "else\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "loop\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_flow + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected 'if', 'else', or 'loop' for function level block\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Block being skipped. Parsing will pick up after the end\0" + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_block_pass + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: blf + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for top block\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: blf + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_post_list + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_TLIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: _typ + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _typ + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_TYPE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _type_helper_pre + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_post + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: NULL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: _typ + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_post + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: id + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "void\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _type_helper_func + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "`\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: post + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: post + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: post + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: id + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: weird + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_post_list + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: weird + } + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: weird + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_transform + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: _type + } + { NODE_TYPE: ID, DATA: at + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_VALUE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: idx + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: idx + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: idx + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: new + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: new + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: new + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: idx + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: idx + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: idx + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: idx + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: idx + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: idx + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: idx + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: idx + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: idx + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: pt1 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: at + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: idx + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_TLIST + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: lst + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: lst + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_VLIST + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: lsub + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: at + } + { NODE_TYPE: ID, DATA: _mhf_transform + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lsub + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: at + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: pt2 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lsub + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: at + } + { NODE_TYPE: ID, DATA: lsub + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: at + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: lst + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lsub + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: lst + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lsub + } + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: pt2 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: pt1 + } + { NODE_TYPE: ID, DATA: pt2 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: at + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: lst + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: lst + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: _type + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: update_children + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: at + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_escape + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: deep + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p1 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p2 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: p2 + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: ID, DATA: NULL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: deep + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_up_to_value + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p1 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VALUE + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_lower + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_post_value + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: id + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: id + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: sub + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: id + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected identifier after '.'\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_postfix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: op + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: op + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unsure where we are at in the tree ('`'). [CMPERR]" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: op + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _ast_list_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: ID, DATA: _ast_list_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unsure where we are at in the tree ('('). [CMPERR]" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: ind + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ind + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ind + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected value for index operation after '{'\0" + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ind + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ind + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unsure where we are at in the tree ('{'). [CMPERR]" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ind + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected '}' to show the end of an index operation after the value\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_inner_value + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_lower + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_post_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_up_to_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: did_binop + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unexpected token within function call (1). Expected binary operator then value, ',', or ')'.\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_bin + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: did_binop + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: bin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _op_order + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: gt + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: ID, DATA: _assoc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: ID, DATA: _assoc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: lhs + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lhs + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: bin + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "is\0" + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: ID, DATA: _ast_value_bare + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unexpected token within function call (2). Expected binary operator then value, ',', or ')'.\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: did_binop + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_up_to_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected ')' or ',' to complete function call.\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_outer_list + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ")\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the value list or a closing delimiter\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: next + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: next + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_up_to_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_finish_value + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p1 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p2 + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: firstRun + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: p2 + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VALUE + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: _mhf_inner_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ln + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: NULL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VLIST + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: _mhf_outer_list + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ln + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: NULL + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VALUE + } + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VLIST + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[CMPERR] Unsure where we are in the tree\n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_ast + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_escape + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: p1 + } + { NODE_TYPE: ID, DATA: cur + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_lower + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: ln + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_post_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: tmp + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Escaping\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_escape + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_up_to_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_SEP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _is_closing + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ".\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_AUG + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _op_bin + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: bin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _op_order + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: gt + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: ID, DATA: _assoc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: ID, DATA: _assoc + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: gt + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: lhs + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lhs + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: bin + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: bin + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "is\0" + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: ID, DATA: _ast_value_bare + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _mhf_finish_decl + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_DECL + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: var + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: var + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ln + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "=\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: var + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: line + } + } + { NODE_TYPE: ID, DATA: ln + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: lnok + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: var + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected variable name in declaration\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _maybe_helper_fun + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: lnok + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_TYPE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _type_helper_pre + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_transform + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_finish_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Unexpected token. Expected the completion of a declaration or value (identifier or '(')\0" + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: cur + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_post + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_finish_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: cur + } + { NODE_TYPE: ID, DATA: _mhf_transform + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _mhf_finish_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: cur + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: lnok + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_function + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[FATAL] [CMPERR] Expected function name\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: fn + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fn + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_FUNCTION + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "asm\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_asm + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_fun_block + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _maybe_helper_fun + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "(\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: ID, DATA: _op_prefix + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_keyword_expr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected definition, expression, or sub block in function\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fn + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_import + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '"' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected string or import literal after 'import'\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: rel + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: unquote_str + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: imp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: relative + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: rel + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: rel + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: rel + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: imp + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: path + } + { NODE_TYPE: ID, DATA: to_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: '/' + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Importing \0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: rel + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: rel + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_file + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: imp + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: imp + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_asm + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_LITRL + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '"' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected string literal after 'ast'\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: an + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: an + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ASM + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: unquote_str + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: an + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_struct + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected new identifier for typedef after 'struct'\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: sct + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sct + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_STRUCT + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '{' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected new identifier for typedef after 'struct'\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_enum + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected new identifier for def after 'enum'\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: sct + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sct + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ENUM + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '[' + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: '{' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected '{' after enum definition\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_list_enum + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: sct + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_decl + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: decl + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: decl + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_DECL + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\0" + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: decl + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: var + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: var + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "=\0" + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_value + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: var + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: decl + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: var + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ",\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected variable name in declaration\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: decl + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_top_block + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: blf + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "module\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "export\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_module + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "method\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_method + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_function + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected module, method, or function for top level block\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Block being skipped. Parsing will pick up after the end\0" + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_block_pass + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";/\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ";;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: blf + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for top block\0" + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: blf + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_module + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint16 + } + } + { NODE_TYPE: ID, DATA: nt + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_MODULE + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "export\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "module\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected 'module' keyword after 'export'\0" + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: nt + } + { NODE_TYPE: ID, DATA: NTYPE_EXPORT + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "module\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[FATAL] The following issue is with the compiler, not your program.\n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[FATAL] Please report the following issue to tnslc upstream.\n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "[FATAL] [CMPERR] Should only call _ast_module when 'module' or 'export' are seen\0" + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected module name (identifier) after 'module'\0" + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: nmod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: nmod + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: nt + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: run + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: true + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "import\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_import + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "struct\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_struct + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "enum\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_enum + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "asm\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_asm + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_top_block + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: && + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_DELIM + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + { NODE_TYPE: LITERAL, DATA: ';' + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: run + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected 'import', 'struct', 'asm', block, or declaration in top level\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: mod + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_child + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: nmod + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _ast_file + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: open + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: first + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_first_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_ERR + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "import\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_import + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "struct\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_struct + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "enum\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_enum + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: _advance_check + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "asm\0" + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_asm + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "/;\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_top_block + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_KEYTP + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: TTYPE_USRWD + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "~\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: eq + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{\0" + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_decl + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: mod + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_print_err + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: first + } + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected 'import', 'struct', 'asm', block, or declaration in top level\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Token + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: produce_next_token + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: first + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: first + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: close + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: generate_ast + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: v + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NTYPE_MODULE + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _ast_file + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_node_type + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_MODULE + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "MODULE\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_EXPORT + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "EXPORT\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_STRUCT + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "STRUCT\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_TYPE + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "TYPE\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ID + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ID\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_BIN_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "BIN_OP\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_PRE_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "PRE_OP\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_POST_OP + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "POST_OP\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_FUNCTION + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "FUNCTION\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_METHOD + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "METHOD\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_TLIST + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "TLIST\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_DLIST + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "DLIST\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ELIST + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ELIST\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_SLIST + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "SLIST\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_LITERAL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "LITERAL\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ENUM + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ENUM\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_DECL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "DECL\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VLIST + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "VLIST\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_VALUE + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "VALUE\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_CAST + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "CAST\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_FLOW_CONTROL + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "FLOW_CONTROL\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_IF_BLOCK + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "IF_BLOCK\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ELIF_BLOCK + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ELIF_BLOCK\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ELSE_BLOCK\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "LOOP_BLOCK\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_ASM + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "ASM\0" + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: ID, DATA: NTYPE_EMPTY + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "EMPTY\0" + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_node_head + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "{ NODE_TYPE: \0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_node_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: ", DATA: \0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\n\0" + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_ast_rec + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: depth + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: ID, DATA: depth + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: " \0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_node_head + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_ast_rec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: depth + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: ID, DATA: depth + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: " \0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\n\0" + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: print_ast + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_ast_rec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: verify_ast_integrity + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Integrity test failed\n\0" + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Integrity test passed\n\0" + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: verify_ast_integrity + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: ID, DATA: n + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Test failed at: \n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_node_head + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Parent: \n\0" + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: print_node_head + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "}\n\0" + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: ptr + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Expected: %p\n\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ptr + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: ID, DATA: p + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _print_num + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Got: %p\n\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: ptr + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: verify_ast_integrity + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + } + { NODE_TYPE: MODULE, DATA: compile + { NODE_TYPE: STRUCT, DATA: Variable + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: _type + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: ptr + } + } + } + { NODE_TYPE: METHOD, DATA: Variable + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_ptr + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: ptp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: ptp + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: get_ptr + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: pop_ptr + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ID, DATA: count + } + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: ptr + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: out + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: p + { NODE_TYPE: POST_OP, DATA: ` + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ID, DATA: pop + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: ptr + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Type + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: size + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: methods + } + } + } + { NODE_TYPE: METHOD, DATA: Type + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: tmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vars + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_var + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vars + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: v + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vars + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Function + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: body + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: inputs + } + { NODE_TYPE: ID, DATA: outputs + } + } + } + { NODE_TYPE: METHOD, DATA: Function + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: vtmp + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: i + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: inputs + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: vtmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: outputs + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_input + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: inputs + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: v + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_output + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: t + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: outputs + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: t + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: inputs + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: inputs + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: inputs + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: outputs + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Enum + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: _type + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: vals + } + } + } + { NODE_TYPE: METHOD, DATA: Enum + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: vtmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vals + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: vtmp + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vals + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vals + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vals + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: STRUCT, DATA: Module + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: parent + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: bool + } + } + { NODE_TYPE: ID, DATA: exp + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: types + } + { NODE_TYPE: ID, DATA: funcs + } + { NODE_TYPE: ID, DATA: enums + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MOD_FIND_SUB + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MOD_FIND_VAR + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MOD_FIND_TYP + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MOD_FIND_FUN + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 3 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: MOD_FIND_ENM + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + } + } + { NODE_TYPE: METHOD, DATA: Module + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: mtmp + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: vtmp + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: ttmp + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Function + } + } + { NODE_TYPE: ID, DATA: ftmp + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Enum + } + } + { NODE_TYPE: ID, DATA: etmp + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: mtmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vars + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: vtmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: types + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: ttmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: funcs + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: ftmp + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: enums + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: etmp + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: update_children + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: self + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_sub + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: m + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: m + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: update_children + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: - + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_var + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vars + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: v + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_type + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: t + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: types + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: t + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_funcs + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Function + } + } + { NODE_TYPE: ID, DATA: f + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: funcs + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: f + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: add_enum + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Enum + } + } + { NODE_TYPE: ID, DATA: e + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: enums + } + } + { NODE_TYPE: ID, DATA: push + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: e + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _find_rec + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Artifact + } + } + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: !< + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _find_rec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: pth + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: typ + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: + + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: MOD_FIND_SUB + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: MOD_FIND_VAR + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: MOD_FIND_TYP + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: types + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: t + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: types + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: types + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: MOD_FIND_FUN + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: funcs + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Function + } + } + { NODE_TYPE: ID, DATA: f + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: funcs + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: f + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: funcs + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: typ + } + { NODE_TYPE: ID, DATA: MOD_FIND_ENM + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: enums + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Enum + } + } + { NODE_TYPE: ID, DATA: e + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: enums + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: sub + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: e + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: enums + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: ID, DATA: NULL + } + } + { NODE_TYPE: BIN_OP, DATA: !== + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parent + } + { NODE_TYPE: ID, DATA: _find_rec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: pth + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: typ + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: find + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Artifact + } + } + { NODE_TYPE: ID, DATA: pth + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: typ + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: void + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _find_rec + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: pth + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: typ + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _delete + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: sub + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Variable + } + } + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: vars + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: v + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: vars + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: types + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: t + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: types + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: types + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: funcs + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Function + } + } + { NODE_TYPE: ID, DATA: f + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: funcs + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: f + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: funcs + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: enums + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Enum + } + } + { NODE_TYPE: ID, DATA: e + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: enums + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: e + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: enums + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: { + } + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: GEN_VAR_NAMES + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: VLIST, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "int\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "int8\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "int16\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "int32\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "int64\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "uint\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "uint8\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "uint16\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "uint32\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "uint64\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "float\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "float32\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "float64\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "vect\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "bool\0" + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "void\0" + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: { + } + { NODE_TYPE: ID, DATA: uint + } + } + { NODE_TYPE: ID, DATA: GEN_VAR_SIZES + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: VLIST, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 4 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 8 + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: find_type + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Artifact + } + } + { NODE_TYPE: ID, DATA: a + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: transform_struct + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: parent + } + } + } + { NODE_TYPE: FUNCTION, DATA: _tfn_mod_loop + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: m + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: || + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: NTYPE_MODULE + } + } + } + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: NTYPE_EXPORT + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: transform_module + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: m + } + } + } + } + } + } + { NODE_TYPE: ELIF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: NTYPE_STRUCT + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: transform_struct + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: m + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: transform_module + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: parent + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: s + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parent + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: count + } + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parent + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: sub + } + { NODE_TYPE: ID, DATA: get + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcmp + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: tmp + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: name + } + } + } + } + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: s + } + { NODE_TYPE: ID, DATA: tmp + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: cmp + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: ID, DATA: cmp + } + { NODE_TYPE: ID, DATA: NULL + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: == + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: _type + } + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: NTYPE_EXPORT + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: exp + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: exp + } + } + { NODE_TYPE: LITERAL, DATA: false + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: ID, DATA: s + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parent + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_sub + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _tfn_mod_loop + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: s + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: _tfn_gen_default_types + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: m + } + } + { NODE_TYPE: LOOP_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: i + } + { NODE_TYPE: PRE_OP, DATA: len + { NODE_TYPE: ID, DATA: GEN_VAR_NAMES + } + } + } + } + } + { NODE_TYPE: SLIST, DATA: [ + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + { NODE_TYPE: POST_OP, DATA: ++ + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Type + } + } + { NODE_TYPE: ID, DATA: t + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: GEN_VAR_NAMES + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: t + } + { NODE_TYPE: ID, DATA: size + } + } + { NODE_TYPE: ID, DATA: GEN_VAR_SIZES + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: i + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: m + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: add_type + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: t + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: transform_tree + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Module + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: Module + } + } + { NODE_TYPE: ID, DATA: out + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: strcpy + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: data + } + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: = + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: out + } + { NODE_TYPE: ID, DATA: exp + } + } + { NODE_TYPE: LITERAL, DATA: true + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _tfn_gen_default_types + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _tfn_mod_loop + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: n + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: out + } + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: out + } + } + } + } + { NODE_TYPE: STRUCT, DATA: OutBuf + { NODE_TYPE: DLIST, DATA: { + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: Vector + } + } + { NODE_TYPE: ID, DATA: hsec + } + { NODE_TYPE: ID, DATA: dsec + } + { NODE_TYPE: ID, DATA: csec + } + } + } + { NODE_TYPE: METHOD, DATA: OutBuf + { NODE_TYPE: FUNCTION, DATA: init + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: hsec + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: dsec + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: csec + } + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: write_to_file + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fout + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: write_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "bits 64\n\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: write_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: hsec + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: write_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\nsection .data\n\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: write_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: dsec + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: write_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\nsection .text\n\0" + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + { NODE_TYPE: POST_OP, DATA: ` + } + } + { NODE_TYPE: ID, DATA: write_cstr + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: csec + } + { NODE_TYPE: ID, DATA: as_cstr + { NODE_TYPE: VLIST, DATA: ( + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: end + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: hsec + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: dsec + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: self + } + { NODE_TYPE: ID, DATA: csec + } + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: generate + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: ID, DATA: fout + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: Node + } + } + { NODE_TYPE: ID, DATA: n + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: generate_ast + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: fin + } + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: ID, DATA: update_children + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: parse + } + { NODE_TYPE: ID, DATA: print_ast + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: n + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: n + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: DEFAULT_FOUT + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "out.asm\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: USAGE + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: " +TNSLC v0.6.0 (C) 2024 CircleShift (MPL 2.0) + +usage: + tnslc (file in) [file out] + +\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: FOPEN_ERR + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "Error opening file\n\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: char_str + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "%c\0" + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: newline + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: "\n\0" + } + } + } + } + { NODE_TYPE: FUNCTION, DATA: main + { NODE_TYPE: DLIST, DATA: ( + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + { NODE_TYPE: ID, DATA: argc + } + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: PRE_OP, DATA: ~ + } + { NODE_TYPE: ID, DATA: uint8 + } + } + { NODE_TYPE: ID, DATA: argv + } + } + { NODE_TYPE: TLIST, DATA: [ + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: int + } + } + } + { NODE_TYPE: ASM, DATA: mov r10, rdi + } + { NODE_TYPE: ASM, DATA: mov r11, rsi + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: < + { NODE_TYPE: ID, DATA: argc + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: _printf + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: USAGE + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + { NODE_TYPE: DECL, DATA: + { NODE_TYPE: TYPE, DATA: + { NODE_TYPE: ID, DATA: utils + } + { NODE_TYPE: ID, DATA: File + } + } + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: ID, DATA: fout + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: argv + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 1 + } + } + } + } + } + } + } + } + } + { NODE_TYPE: IF_BLOCK, DATA: + { NODE_TYPE: SLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: > + { NODE_TYPE: ID, DATA: argc + } + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: argv + { NODE_TYPE: POST_OP, DATA: { + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 2 + } + } + } + } + } + } + } + } + } + } + { NODE_TYPE: ELSE_BLOCK, DATA: + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + } + { NODE_TYPE: ID, DATA: init + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: ID, DATA: DEFAULT_FOUT + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: compile + } + { NODE_TYPE: ID, DATA: generate + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fin + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: PRE_OP, DATA: ~ + { NODE_TYPE: ID, DATA: fout + } + } + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fin + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: BIN_OP, DATA: . + { NODE_TYPE: ID, DATA: fout + } + { NODE_TYPE: ID, DATA: end + { NODE_TYPE: VLIST, DATA: ( + { NODE_TYPE: VALUE, DATA: + } + } + } + } + } + { NODE_TYPE: FLOW_CONTROL, DATA: return + { NODE_TYPE: VALUE, DATA: + { NODE_TYPE: LITERAL, DATA: 0 + } + } + } + } +} +Integrity test passed diff --git a/tnslc/vec_test.tnsl b/tnslc/vec_test.tnsl new file mode 100644 index 0000000..95544e3 --- /dev/null +++ b/tnslc/vec_test.tnsl @@ -0,0 +1,47 @@ +:import "utils/utils.tnsl" + +/; print_vec(~utils.Vector v) + _printf("vec: [ \0") + /; if (v`.count > 0) + ~int n = v`.get(0) + _print_num("%d\0", n`) + /; loop (int i = 1; i < v`.count) [i++] + ~int n = v`.get(i) + _print_num(", %d\0", n`) + ;/ + ;/ + _printf(" ]\n\0") +;/ + +/; main [int] + utils.Vector vec + vec.init(8) + int a = 1295 + vec.push(~a) + a = 1984 + vec.push(~a) + a = 3498 + vec.push(~a) + a = 8972 + vec.push(~a) + + print_vec(~vec) + _printf("pop_front\n\0") + vec.remove(0) + print_vec(~vec) + _printf("pop_mid\n\0") + vec.remove(1) + print_vec(~vec) + _printf("pop_end\n\0") + vec.pop() + print_vec(~vec) + _printf("pop_final\n\0") + vec.pop() + print_vec(~vec) + + vec.end() + + return 0 +;/ + + |