diff options
author | CircleShift <kgunger12@gmail.com> | 2025-03-18 14:46:48 -0400 |
---|---|---|
committer | CircleShift <kgunger12@gmail.com> | 2025-03-18 14:46:48 -0400 |
commit | d20df58b6b7cbceb9b7586e974aec652d830711f (patch) | |
tree | a2f65e8d327b34f714b599b55512de585cef141d | |
parent | 2cbdfbc78805648cfa3f76bfc5e3eb80b796f581 (diff) |
[tnslc ]Register string generate funcorigin
-rw-r--r-- | tnslc/compile/codegen.tnsl | 4 | ||||
-rw-r--r-- | tnslc/compile/module.tnsl | 3 | ||||
-rw-r--r-- | tnslc/compile/var.tnsl | 221 | ||||
-rw-r--r-- | tnslc/out.log | 42244 | ||||
-rw-r--r-- | tnslc/parse/ast.tnsl | 2 | ||||
-rw-r--r-- | tnslc/test.tnsl | 3 |
6 files changed, 232 insertions, 42245 deletions
diff --git a/tnslc/compile/codegen.tnsl b/tnslc/compile/codegen.tnsl index 165fe12..caaafb7 100644 --- a/tnslc/compile/codegen.tnsl +++ b/tnslc/compile/codegen.tnsl @@ -1,4 +1,8 @@ /; generate (~utils.File fin, fout) + parse.Node ast = parse.generate_ast(fin) + ast.update_children() + parse.print_ast(~ast) + ast.end() ;/ diff --git a/tnslc/compile/module.tnsl b/tnslc/compile/module.tnsl index 6dbef6c..6d1d24a 100644 --- a/tnslc/compile/module.tnsl +++ b/tnslc/compile/module.tnsl @@ -31,6 +31,9 @@ struct Module { self.e = exp ;/ + /; from_tree (~parse.Node root) + ;/ + /; end _delete(self.name) diff --git a/tnslc/compile/var.tnsl b/tnslc/compile/var.tnsl index 9526fc6..23da42b 100644 --- a/tnslc/compile/var.tnsl +++ b/tnslc/compile/var.tnsl @@ -1,4 +1,95 @@ +# Location enum +int VLOC_STCK = 2 +int VLOC_LITL = 1 +int VLOC_DATA = 0 + +int PTYPE_NONE = 2 +int PTYPE_PTR = 1 +int PTYPE_REF = 0 +int PTYPE_ARR = 1 + +int PRIM_NON = 0 +int PRIM_BOO = 1 +int PRIM_INT = 2 +int PRIM_FLT = 3 + +~uint8 PRIM_CSV_BOO = "bool\0" +~uint8 PRIM_CSV_INT = "int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64\0" +~uint8 PRIM_CSV_FLT = "float,float32,float64\0" + +# Should dispose of this constructed string +# 1-8 are ax, bx, cx, dx, si, di, sp, bp +# 9-16 are r8, r9, r10, r11, r12, r13, r14, r15 +# 17-32 are xmm0, xmm1, xmm2, ..., xmm15 +/; reg_string (int r, int size) [~uint8] + utils.Vector out + out.init(1) + uint8 add + + /; if (r < 9) + /; if (size == 4) + add = 'e' + out.push(~add) + ;; else if (size == 8) + add = 'r' + out.push(~add) + ;/ + + add = 'a' + /; if (r < 5) + add = add + r - 1 + ;; else if (r == 5 || r == 7) + add = 's' + ;; else if (r == 6) + add = 'd' + ;; else if (r == 8) + add = 'b' + ;/ + out.push(~add) + + /; if (r == 5 || r == 6) + add = 'i' + out.push(~add) + ;; else if (r == 7 || r == 8) + add = 'p' + out.push(~add) + ;; else if (size !== 1) + add = 'x' + out.push(~add) + ;/ + + /; if (size == 1) + add = 'l' + out.push(~add) + ;/ + ;; else if (r < 17) + add = 'r' + out.push(~add) + + ~uint8 num = utils.int_to_str(r - 1) + out.push_cstr(num) + _delete(num) + /; if (size == 1) + add = 'b' + out.push(~add) + ;; else if (size == 2) + add = 'w' + out.push(~add) + ;; else if (size == 4) + add = 'd' + out.push(~add) + ;/ + ;; else if (r < 33) + out.push_cstr("xmm\0") + ~uint8 num = utils.int_to_str(r - 17) + out.push_cstr(num) + _delete(num) + ;/ + + return out.as_cstr() +;/ + struct Var { ~uint8 name, ~Struct _type, @@ -26,8 +117,138 @@ struct Var { self.ptrc.pop() ;/ + /; is_primitive [int] + ~uint8 tn = self`._type`.name + + /; if (parse._in_csv(PRIM_CSV_BOO, tn) == true) + return PRIM_BOO + ;; else if (parse._in_csv(PRIM_CSV_INT, tn) == true) + return PRIM_INT + ;; else if (parse._in_csv(PRIM_CSV_FLT, tn) == true) + return PRIM_FLT + ;/ + + return PRIM_NON + ;/ + /; end _delete(self.name) self.ptrc.end() ;/ + + ################################### + # Variable manipulation functions # + ################################### + + # Generate a string which represents where the variable is in memory, + # this string may be used to set the value of the variable with operations like "mov" + # if "maybe_mem" is true, this might be an address like "[rsi]" + /; gen_to (bool maybe_mem) [~uint8] + utils.Vector out + out.init(1) + return out.as_cstr() + ;/ + + # Generate a string which represents where the variable is in memory, + # this string may be used to read the value of the variable with operations like "mov" + # if "maybe_mem" is true, this might be an address like "[rsi]" + /; gen_from (bool maybe_mem) [~uint8] + utils.Vector out + out.init(1) + return out.as_cstr() + ;/ + + # Returns true if the variable is stored in memory + /; in_mem [bool] + /; if (self.loc !> 0) + return true + ;/ + return false + ;/ + + # Set this variable to the value of a literal + /; set_literal (~CompBuf buf, ~Var other) + ;/ + + # Set this Variable to the value of other + /; set (~CompBuf buf, ~Var other) + ;/ + + /; standard_op (~CompBuf buf, ~Var other, ~uint8 op_str) + ~uint8 from_str + ~uint8 to_str = self.gen_to(true) + + /; if (self.in_mem()) + from_str = other`.gen_from(false) + ;; else + from_str = other`.gen_from(true) + ;/ + + buf`.add_c(op_str) + buf`.add_c(" \0") + buf`.add_c(to_str) + buf`.add_c(", \0") + buf`.add_c(from_str) + buf`.add_c("\n\0") + + _delete(from_str) + _delete(to_str) + ;/ + + /; product_op (~CompBuf buf, ~Var other, ~uint8 op_str, int read_reg) + + ;/ + + /; add (~CompBuf buf, ~Var other) + /; if (self.loc = VLOC_LITL) + ;/ + self.standard_op("add") + ;/ + + /; sub (~CompBuf buf, ~Var other) + self.standard_op("sub") + ;/ + + /; mul (~CompBuf buf, ~Var other) + self.product_op(buf, other, "imul", 1) + ;/ + + /; div (~CompBuf buf, ~Var other) + /; if ("signed") + self.product_op(buf, other, "idiv", 1) + ;; else + self.product_op(buf, other, "div", 1) + ;/ + ;/ + + /; mod (~CompBuf buf, ~Var other) + /; if ("signed") + self.product_op(buf, other, "idiv", 4) + ;; else + self.product_op(buf, other, "div", 4) + ;/ + ;/ + + /; and (~CompBuf buf, ~Var other) + self.standard_op("and") + ;/ + + /; or (~CompBuf buf, ~Var other) + self.standard_op("or") + ;/ + + /; xor (~CompBuf buf, ~Var other) + self.standard_op("xor") + ;/ + + /; not (~CompBuf buf, ~Var other) + self.standard_op("xor") + ;/ + + /; member (~CompBuf buf, ~uint8 name) [Var] + Var out + return out + ;/ ;/ + + diff --git a/tnslc/out.log b/tnslc/out.log deleted file mode 100644 index 046dd0c..0000000 --- a/tnslc/out.log +++ /dev/null @@ -1,42244 +0,0 @@ -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/parse/ast.tnsl b/tnslc/parse/ast.tnsl index 588f3fd..b12e75e 100644 --- a/tnslc/parse/ast.tnsl +++ b/tnslc/parse/ast.tnsl @@ -2187,7 +2187,7 @@ int errors_shown = 0 ;/ /; print_node_head (~Node n) - _printf("{ NODE_TYPE: \0") + _printf("{ \0") print_node_type(n) _printf(", DATA: \0") _printf(n`.data) diff --git a/tnslc/test.tnsl b/tnslc/test.tnsl index 6b55408..72836c3 100644 --- a/tnslc/test.tnsl +++ b/tnslc/test.tnsl @@ -1,9 +1,12 @@ int i = 1 + 2 * 4 - 3 + 4 +int j = -3 ~uint8 a = b{0} /; main ({}{}uint8 args) [int] + + tnsl.print("Hello, World!") ~uint8 as = 12 as` = 3 + 4 |