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