summaryrefslogtreecommitdiff
path: root/tnslc
diff options
context:
space:
mode:
authorCircleShift <kgunger12@gmail.com>2025-03-18 14:46:48 -0400
committerCircleShift <kgunger12@gmail.com>2025-03-18 14:46:48 -0400
commitd20df58b6b7cbceb9b7586e974aec652d830711f (patch)
treea2f65e8d327b34f714b599b55512de585cef141d /tnslc
parent2cbdfbc78805648cfa3f76bfc5e3eb80b796f581 (diff)
[tnslc ]Register string generate funcorigin
Diffstat (limited to 'tnslc')
-rw-r--r--tnslc/compile/codegen.tnsl4
-rw-r--r--tnslc/compile/module.tnsl3
-rw-r--r--tnslc/compile/var.tnsl221
-rw-r--r--tnslc/out.log42244
-rw-r--r--tnslc/parse/ast.tnsl2
-rw-r--r--tnslc/test.tnsl3
6 files changed, 232 insertions, 42245 deletions
diff --git a/tnslc/compile/codegen.tnsl b/tnslc/compile/codegen.tnsl
index 165fe12..caaafb7 100644
--- a/tnslc/compile/codegen.tnsl
+++ b/tnslc/compile/codegen.tnsl
@@ -1,4 +1,8 @@
/; generate (~utils.File fin, fout)
+ parse.Node ast = parse.generate_ast(fin)
+ ast.update_children()
+ parse.print_ast(~ast)
+ ast.end()
;/
diff --git a/tnslc/compile/module.tnsl b/tnslc/compile/module.tnsl
index 6dbef6c..6d1d24a 100644
--- a/tnslc/compile/module.tnsl
+++ b/tnslc/compile/module.tnsl
@@ -31,6 +31,9 @@ struct Module {
self.e = exp
;/
+ /; from_tree (~parse.Node root)
+ ;/
+
/; end
_delete(self.name)
diff --git a/tnslc/compile/var.tnsl b/tnslc/compile/var.tnsl
index 9526fc6..23da42b 100644
--- a/tnslc/compile/var.tnsl
+++ b/tnslc/compile/var.tnsl
@@ -1,4 +1,95 @@
+# Location enum
+int VLOC_STCK = 2
+int VLOC_LITL = 1
+int VLOC_DATA = 0
+
+int PTYPE_NONE = 2
+int PTYPE_PTR = 1
+int PTYPE_REF = 0
+int PTYPE_ARR = 1
+
+int PRIM_NON = 0
+int PRIM_BOO = 1
+int PRIM_INT = 2
+int PRIM_FLT = 3
+
+~uint8 PRIM_CSV_BOO = "bool\0"
+~uint8 PRIM_CSV_INT = "int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64\0"
+~uint8 PRIM_CSV_FLT = "float,float32,float64\0"
+
+# Should dispose of this constructed string
+# 1-8 are ax, bx, cx, dx, si, di, sp, bp
+# 9-16 are r8, r9, r10, r11, r12, r13, r14, r15
+# 17-32 are xmm0, xmm1, xmm2, ..., xmm15
+/; reg_string (int r, int size) [~uint8]
+ utils.Vector out
+ out.init(1)
+ uint8 add
+
+ /; if (r < 9)
+ /; if (size == 4)
+ add = 'e'
+ out.push(~add)
+ ;; else if (size == 8)
+ add = 'r'
+ out.push(~add)
+ ;/
+
+ add = 'a'
+ /; if (r < 5)
+ add = add + r - 1
+ ;; else if (r == 5 || r == 7)
+ add = 's'
+ ;; else if (r == 6)
+ add = 'd'
+ ;; else if (r == 8)
+ add = 'b'
+ ;/
+ out.push(~add)
+
+ /; if (r == 5 || r == 6)
+ add = 'i'
+ out.push(~add)
+ ;; else if (r == 7 || r == 8)
+ add = 'p'
+ out.push(~add)
+ ;; else if (size !== 1)
+ add = 'x'
+ out.push(~add)
+ ;/
+
+ /; if (size == 1)
+ add = 'l'
+ out.push(~add)
+ ;/
+ ;; else if (r < 17)
+ add = 'r'
+ out.push(~add)
+
+ ~uint8 num = utils.int_to_str(r - 1)
+ out.push_cstr(num)
+ _delete(num)
+ /; if (size == 1)
+ add = 'b'
+ out.push(~add)
+ ;; else if (size == 2)
+ add = 'w'
+ out.push(~add)
+ ;; else if (size == 4)
+ add = 'd'
+ out.push(~add)
+ ;/
+ ;; else if (r < 33)
+ out.push_cstr("xmm\0")
+ ~uint8 num = utils.int_to_str(r - 17)
+ out.push_cstr(num)
+ _delete(num)
+ ;/
+
+ return out.as_cstr()
+;/
+
struct Var {
~uint8 name,
~Struct _type,
@@ -26,8 +117,138 @@ struct Var {
self.ptrc.pop()
;/
+ /; is_primitive [int]
+ ~uint8 tn = self`._type`.name
+
+ /; if (parse._in_csv(PRIM_CSV_BOO, tn) == true)
+ return PRIM_BOO
+ ;; else if (parse._in_csv(PRIM_CSV_INT, tn) == true)
+ return PRIM_INT
+ ;; else if (parse._in_csv(PRIM_CSV_FLT, tn) == true)
+ return PRIM_FLT
+ ;/
+
+ return PRIM_NON
+ ;/
+
/; end
_delete(self.name)
self.ptrc.end()
;/
+
+ ###################################
+ # Variable manipulation functions #
+ ###################################
+
+ # Generate a string which represents where the variable is in memory,
+ # this string may be used to set the value of the variable with operations like "mov"
+ # if "maybe_mem" is true, this might be an address like "[rsi]"
+ /; gen_to (bool maybe_mem) [~uint8]
+ utils.Vector out
+ out.init(1)
+ return out.as_cstr()
+ ;/
+
+ # Generate a string which represents where the variable is in memory,
+ # this string may be used to read the value of the variable with operations like "mov"
+ # if "maybe_mem" is true, this might be an address like "[rsi]"
+ /; gen_from (bool maybe_mem) [~uint8]
+ utils.Vector out
+ out.init(1)
+ return out.as_cstr()
+ ;/
+
+ # Returns true if the variable is stored in memory
+ /; in_mem [bool]
+ /; if (self.loc !> 0)
+ return true
+ ;/
+ return false
+ ;/
+
+ # Set this variable to the value of a literal
+ /; set_literal (~CompBuf buf, ~Var other)
+ ;/
+
+ # Set this Variable to the value of other
+ /; set (~CompBuf buf, ~Var other)
+ ;/
+
+ /; standard_op (~CompBuf buf, ~Var other, ~uint8 op_str)
+ ~uint8 from_str
+ ~uint8 to_str = self.gen_to(true)
+
+ /; if (self.in_mem())
+ from_str = other`.gen_from(false)
+ ;; else
+ from_str = other`.gen_from(true)
+ ;/
+
+ buf`.add_c(op_str)
+ buf`.add_c(" \0")
+ buf`.add_c(to_str)
+ buf`.add_c(", \0")
+ buf`.add_c(from_str)
+ buf`.add_c("\n\0")
+
+ _delete(from_str)
+ _delete(to_str)
+ ;/
+
+ /; product_op (~CompBuf buf, ~Var other, ~uint8 op_str, int read_reg)
+
+ ;/
+
+ /; add (~CompBuf buf, ~Var other)
+ /; if (self.loc = VLOC_LITL)
+ ;/
+ self.standard_op("add")
+ ;/
+
+ /; sub (~CompBuf buf, ~Var other)
+ self.standard_op("sub")
+ ;/
+
+ /; mul (~CompBuf buf, ~Var other)
+ self.product_op(buf, other, "imul", 1)
+ ;/
+
+ /; div (~CompBuf buf, ~Var other)
+ /; if ("signed")
+ self.product_op(buf, other, "idiv", 1)
+ ;; else
+ self.product_op(buf, other, "div", 1)
+ ;/
+ ;/
+
+ /; mod (~CompBuf buf, ~Var other)
+ /; if ("signed")
+ self.product_op(buf, other, "idiv", 4)
+ ;; else
+ self.product_op(buf, other, "div", 4)
+ ;/
+ ;/
+
+ /; and (~CompBuf buf, ~Var other)
+ self.standard_op("and")
+ ;/
+
+ /; or (~CompBuf buf, ~Var other)
+ self.standard_op("or")
+ ;/
+
+ /; xor (~CompBuf buf, ~Var other)
+ self.standard_op("xor")
+ ;/
+
+ /; not (~CompBuf buf, ~Var other)
+ self.standard_op("xor")
+ ;/
+
+ /; member (~CompBuf buf, ~uint8 name) [Var]
+ Var out
+ return out
+ ;/
;/
+
+
diff --git a/tnslc/out.log b/tnslc/out.log
deleted file mode 100644
index 046dd0c..0000000
--- a/tnslc/out.log
+++ /dev/null
@@ -1,42244 +0,0 @@
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: tnslc.tnsl
- At: Token { ":", line: 1, col: 1, type: UNKNOWN }
-
-Importing utils/utils.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: utils/utils.tnsl
- At: Token { ":", line: 1, col: 1, type: UNKNOWN }
-
-Importing utils/c_wrap_linux.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: utils/utils.tnsl
- At: Token { ":", line: 5, col: 2, type: UNKNOWN }
-
-Importing utils/vector.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: utils/utils.tnsl
- At: Token { ":", line: 6, col: 2, type: UNKNOWN }
-
-Importing utils/file.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: utils/utils.tnsl
- At: Token { ":", line: 7, col: 2, type: UNKNOWN }
-
-Importing utils/algo.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: utils/utils.tnsl
- At: Token { ":", line: 8, col: 2, type: UNKNOWN }
-
-Importing utils/iterator.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: tnslc.tnsl
- At: Token { ":", line: 2, col: 1, type: UNKNOWN }
-
-Importing parse/parse.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: parse/parse.tnsl
- At: Token { ":", line: 2, col: 2, type: UNKNOWN }
-
-Importing parse/tokenizer.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: parse/parse.tnsl
- At: Token { ":", line: 3, col: 2, type: UNKNOWN }
-
-Importing parse/ast.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: tnslc.tnsl
- At: Token { ":", line: 3, col: 1, type: UNKNOWN }
-
-Importing compile/compile.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: compile/compile.tnsl
- At: Token { ":", line: 2, col: 2, type: UNKNOWN }
-
-Importing compile/type.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: compile/compile.tnsl
- At: Token { ":", line: 3, col: 2, type: UNKNOWN }
-
-Importing compile/outbuf.tnsl
-Expected 'import', 'struct', 'asm', block, or declaration in top level:
- File: compile/compile.tnsl
- At: Token { ":", line: 4, col: 2, type: UNKNOWN }
-
-Importing compile/generate.tnsl
-{ NODE_TYPE: MODULE, DATA:
- { NODE_TYPE: ASM, DATA: extern malloc, realloc, free, printf, putchar, open, close, read, write, lseek, perror
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: {
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: _alert
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Alert!\n\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: {
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: _dec
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "%d\n\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: {
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: _ptr
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "%p\n\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: NULL
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _alloc
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, 0
- }
- { NODE_TYPE: ASM, DATA: xor rax, rax
- }
- { NODE_TYPE: ASM, DATA: call malloc wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r11, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _realloc
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: new_size
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, r11
- }
- { NODE_TYPE: ASM, DATA: xor rax, rax
- }
- { NODE_TYPE: ASM, DATA: call realloc wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r12, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _delete
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, 0
- }
- { NODE_TYPE: ASM, DATA: xor rax, rax
- }
- { NODE_TYPE: ASM, DATA: call free wrt ..plt
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _putchar
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: char
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: xor rsi, rsi
- }
- { NODE_TYPE: ASM, DATA: xor rax, rax
- }
- { NODE_TYPE: ASM, DATA: call putchar wrt ..plt
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _printf
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _putchar
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _print_num
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: num
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, r11
- }
- { NODE_TYPE: ASM, DATA: xor rax, rax
- }
- { NODE_TYPE: ASM, DATA: call printf wrt ..plt
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _create_file
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, 0q1102
- }
- { NODE_TYPE: ASM, DATA: mov rdx, 0q700
- }
- { NODE_TYPE: ASM, DATA: call open wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r11, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _open_file
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, 2
- }
- { NODE_TYPE: ASM, DATA: mov rdx, 0q700
- }
- { NODE_TYPE: ASM, DATA: call open wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r11, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _close_file
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: call close wrt ..plt
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _read_byte
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: handle
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: byte
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, r11
- }
- { NODE_TYPE: ASM, DATA: mov rdx, 1
- }
- { NODE_TYPE: ASM, DATA: call read wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r12, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _fseek
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: handle
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, r11
- }
- { NODE_TYPE: ASM, DATA: mov rdx, 0
- }
- { NODE_TYPE: ASM, DATA: call lseek wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r12, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _write_byte
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: handle
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: byte
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: mov rsi, r11
- }
- { NODE_TYPE: ASM, DATA: mov rdx, 1
- }
- { NODE_TYPE: ASM, DATA: call write wrt ..plt
- }
- { NODE_TYPE: ASM, DATA: mov r12, rax
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _perror
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: ASM, DATA: mov rax, rsp
- }
- { NODE_TYPE: ASM, DATA: xor rdx, rdx
- }
- { NODE_TYPE: ASM, DATA: mov rcx, 16
- }
- { NODE_TYPE: ASM, DATA: div rcx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, rdx
- }
- { NODE_TYPE: ASM, DATA: sub rsp, 128
- }
- { NODE_TYPE: ASM, DATA: mov rdi, r10
- }
- { NODE_TYPE: ASM, DATA: xor rsi, rsi
- }
- { NODE_TYPE: ASM, DATA: xor rax, rax
- }
- { NODE_TYPE: ASM, DATA: call perror wrt ..plt
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_alert
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _alert
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: MODULE, DATA: utils
- { NODE_TYPE: STRUCT, DATA: Vector
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- { NODE_TYPE: ID, DATA: size
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: VECTOR_MIN_ELEMENTS
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 256
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: NUM_STR
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Num %d\n\0"
- }
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Vector
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: elsz
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- { NODE_TYPE: ID, DATA: elsz
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: VECTOR_MIN_ELEMENTS
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: ID, DATA: _alloc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: from_cstr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: cstr
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: push_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cstr
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _grow
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: ID, DATA: _realloc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: get
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: index
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: index
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: ID, DATA: index
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: push
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: el
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _grow
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _grow
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- { NODE_TYPE: ID, DATA: start
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: to
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: from
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: el
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: to
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: from
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _shrink
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: ID, DATA: _realloc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: pop
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: remove
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: remove
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: index
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: index
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: index
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: ID, DATA: index
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: to
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: from
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: to
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: from
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _shrink
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: push_char
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: push_cstr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: as_cstr
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: z
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: z
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _elsz
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Artifact
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: strings
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: size
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Artifact
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: VECTOR_MIN_ELEMENTS
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- { NODE_TYPE: ID, DATA: _alloc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: split_cstr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: split
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: track
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: track
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: split
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: track
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: track
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: track
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: track
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _grow
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- { NODE_TYPE: ID, DATA: _realloc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: push
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _grow
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _grow
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: VECTOR_MAX_GROW
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _shrink
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- { NODE_TYPE: ID, DATA: _realloc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: pop
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _shrink
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: get
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: index
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: index
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: index
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: to_cstr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: join
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: join
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: strings
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: File
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Artifact
- }
- }
- { NODE_TYPE: ID, DATA: path
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int32
- }
- }
- { NODE_TYPE: ID, DATA: handle
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: pos
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: PT_HANDLE
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Handle: %p\n\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: PARENT_DIR
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".."
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: CURRENT_DIR
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "."
- }
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: File
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: ID, DATA: split_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: relative
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: File
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: current
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: path
- }
- { NODE_TYPE: ID, DATA: to_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: current
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: current
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Artifact
- }
- }
- { NODE_TYPE: ID, DATA: add
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: add
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: add
- }
- { NODE_TYPE: ID, DATA: split_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: add
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: add
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: CURRENT_DIR
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: ID, DATA: split_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: add
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _close_file
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: path
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: open
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: path
- }
- { NODE_TYPE: ID, DATA: to_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: ID, DATA: _open_file
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: create
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: path
- }
- { NODE_TYPE: ID, DATA: to_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: ID, DATA: _create_file
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: close
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _close_file
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: read
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: bytes
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _read_byte
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: bytes
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: bytes
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _perror
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Error reading from file\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "FD: %ld\n\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: unread
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _fseek
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: write
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: byte
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: written
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _write_byte
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: handle
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: byte
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: written
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: write_cstr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: write
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: strcmp
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: a
- }
- { NODE_TYPE: ID, DATA: b
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: a
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: b
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: a
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: b
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: a
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: b
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: b
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: a
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: strlen
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: base_for_char
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: c
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: c
- }
- { NODE_TYPE: LITERAL, DATA: 'b'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: c
- }
- { NODE_TYPE: LITERAL, DATA: 'B'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: c
- }
- { NODE_TYPE: LITERAL, DATA: 'o'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: c
- }
- { NODE_TYPE: LITERAL, DATA: 'O'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: c
- }
- { NODE_TYPE: LITERAL, DATA: 'x'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: c
- }
- { NODE_TYPE: LITERAL, DATA: 'X'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 16
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: decode_bin
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '1'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: decode_oct
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !>
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '7'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: decode_hex
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !>
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '9'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 'a'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !>
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 'f'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 'a'
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 'A'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !>
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 'F'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 'A'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: decode_dec
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NUM_STR
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !>
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '9'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: cstr_to_int
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: base
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: start
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: l
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: strlen
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '9'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: ID, DATA: base_for_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: ID, DATA: l
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: base
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: decoded
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NUM_STR
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NUM_STR
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_bin
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_oct
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_dec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 16
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_hex
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: decoded
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: cstr_to_uint
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: base
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: start
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: l
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: strlen
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '9'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: ID, DATA: base_for_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: start
- }
- { NODE_TYPE: ID, DATA: l
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: BIN_OP, DATA: *
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: base
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: decoded
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_bin
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_oct
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_dec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: 16
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decoded
- }
- { NODE_TYPE: ID, DATA: decode_hex
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: start
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: decoded
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: reverse_str
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: l
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: strlen
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: uint_to_hex_str
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 'x'
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 16
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: %
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 16
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: LITERAL, DATA: 9
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: LITERAL, DATA: 'a'
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: reverse_str
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: str
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: int_to_str
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '-'
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: LITERAL, DATA: 0
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: /
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: %
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push_char
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '-'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: reverse_str
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: str
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: reverse_str
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: strcpy
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: cstr
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: from_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cstr
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: unquote_cha
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: cha
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '\\'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '\"'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '\"'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '\''
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '\''
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '\\'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '\\'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 'n'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '\n'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 't'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '\t'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cha
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: unquote_str
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '\"'
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: buf
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: '\\'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: buf
- }
- { NODE_TYPE: ID, DATA: unquote_cha
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: buf
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Iterator
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Iterator
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: get
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: next
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: at_end
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: prev
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: get_pos
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: set_pos
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: pos
- }
- }
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: MODULE, DATA: parse
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_SEP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYWD
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 5
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 6
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_COMNT
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 7
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_UNKNOWN
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 998
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 999
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Token
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Token
- { NODE_TYPE: FUNCTION, DATA: eq
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _in_csv
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: csv
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: along
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: csv
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: csv
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: csv
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: ','
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: along
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: along
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: along
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: along
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: along
- }
- }
- }
- }
- { NODE_TYPE: ID, DATA: csv
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: along
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: along
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: along
- { NODE_TYPE: POST_OP, DATA: --
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: along
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: along
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _str_contains
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: KEYWORDS
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "import,using,module,export,struct,method,implements,interface,operator,enum,if,else,loop,continue,break,return,label,goto,asm\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: KEYTYPES
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "uint8,uint16,uint32,uint64,uint,int8,int16,int32,int64,int,float32,float64,float,bool,void,vect,type\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: LITERALS
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "false,true,null,iota\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: RESERVED
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~`!@#$%^&*()[]{}-+=\"\'\\|;:/?.>,<\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: OP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "`~!%^&|*-=+./><\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MULTI_OP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "==,&&,||,^^,!==,!&&,!||,!^^,!<,!>,<<,>>,!&,!|,!^,++,--,>==,<==\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: MAX_MULTI
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MULTI_OP_W
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "is,len\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: DELIMS
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "()[]{}\0"
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: produce_word_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: prev
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_reserved
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_whitespace
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _in_csv
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: KEYWORDS
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYWD
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _in_csv
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: KEYTYPES
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _in_csv
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: LITERALS
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _in_csv
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: MULTI_OP_W
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: produce_string_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: prev
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: delim
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: delim
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: delim
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '\\'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '\n'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: line
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: ID, DATA: delim
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: delim
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: comment_line
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '\n'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: comment_block
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '#'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: comment_line
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '\n'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: is_comment_block
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/#\0"
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: is_multi_delim
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: produce_reserved_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: prev
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '#'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_COMNT
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: comment_line
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: ID, DATA: MAX_MULTI
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_reserved
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: ID, DATA: MAX_MULTI
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: ','
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_SEP
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _str_contains
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _str_contains
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: DELIMS
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_UNKNOWN
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _in_csv
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: MULTI_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_comment_block
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_COMNT
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: comment_block
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_multi_delim
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: str
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: produce_numeric_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: prev
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: base
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_reserved
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_whitespace
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_numeric
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: decimal
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: at_end
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: decimal
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '.'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: decimal
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_reserved
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_whitespace
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_numeric
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: base
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: is_whitespace
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: 14
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: ' '
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: is_reserved
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _str_contains
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: RESERVED
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ch
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: is_numeric
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '0'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !>
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '9'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: produce_next_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: prev
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strlen
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_whitespace
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: LITERAL, DATA: '\n'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: line
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: read
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: unread
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: LITERAL, DATA: '\''
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: LITERAL, DATA: '\"'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_string_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: prev
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_reserved
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_reserved_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: prev
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_COMNT
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_numeric
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_numeric_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: prev
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_word_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: prev
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: prev
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: produce_first_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: gen_token_list
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: open
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: produce_first_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_COMNT
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: com
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: com
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: com
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: close
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_token_type
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: t
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "DELIM\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_SEP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "SEP\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "KEYWD\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "KEYTP\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "LITRL\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "AUG\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "USRWD\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_COMNT
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "COMNT\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_UNKNOWN
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "UNKNOWN\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ERR\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_token
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: t
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Token { \"\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\", line: %u\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ", col: %u, type: \0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: col
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_token_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: t
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: " }\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_token_list
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: vec
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tok
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vec
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tok
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vec
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end_token_list
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: vec
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tok
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vec
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tok
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vec
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vec
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_MODULE
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_EXPORT
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_STRUCT
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_TYPE
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 5
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 6
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 7
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_FUNCTION
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_METHOD
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 9
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_TLIST
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_DLIST
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 11
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELIST
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 12
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_SLIST
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 13
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_LITERAL
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 14
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ENUM
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 15
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_DECL
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 16
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VLIST
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 17
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 18
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_CAST
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 19
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_FLOW_CONTROL
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 20
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_IF_BLOCK
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 21
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELIF_BLOCK
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 22
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 23
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 24
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ASM
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 998
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_EMPTY
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 999
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Node
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Node
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: eq
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: cstr
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cstr
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: update_children
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: self
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_child
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: self
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: chk
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: cmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: update_children
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _get_closing_delim
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '('
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ')'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '['
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ']'
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '{'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '}'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _is_closing
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tok
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '}'
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: ']'
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: ')'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _advance_check
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tok
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: eq
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: eq
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: MAX_ERR_SHOW
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 15
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: errors_shown
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_print_err
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tok
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: msg
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: msg
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ":\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: " File: \0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: path
- }
- { NODE_TYPE: ID, DATA: to_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\n At: \0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: errors_shown
- }
- { NODE_TYPE: ID, DATA: MAX_ERR_SHOW
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\nToo many errors to print, other errors will be suppressed\n\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_block_pass
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: deep
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _op_prefix
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: l
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strlen
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "len\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "--\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "++\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '-'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '!'
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '~'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _op_postfix
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "`\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "++\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "--\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _op_bin
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "-\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_prefix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_postfix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _op_order
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: l
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strlen
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '`'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '.'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '~'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '*'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '%'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 6
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '+'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '-'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 7
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '!'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '&'
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '|'
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '^'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '<'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '>'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 9
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '='
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 11
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "is\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: ch
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '+'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '-'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '<'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '>'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ch
- }
- { NODE_TYPE: LITERAL, DATA: '='
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 9
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '<'
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '>'
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 9
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '='
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 11
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '!'
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: l
- }
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "len\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 5
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: op
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '='
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 9
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 10
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[FATAL] [CMPERR] _op_order: Augment not implemented in ordering \0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "'%s'\n\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 999
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _astv_pre_id
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_prefix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Only certain augments (-, !, ~, --, ++, len) can be used as prefixes for bare values\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: pre
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pre
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: pre
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _astv_cast
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cast
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cast
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_CAST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: cast
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cast
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: cast
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _astv_post_id
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_postfix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: post
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: post
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: post
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _ast_list_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _ast_list_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: ind
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ind
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ind
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected value for index operation after '{'\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ind
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected '}' to show the end of an index operation after the value\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_value_bare
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _astv_pre_id
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _ast_list_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected closing ')' for singlet\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _astv_cast
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: val
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: val
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: val
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: val
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: val
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_LITERAL
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: val
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected compound, parenthetical, literal, or identifier for bare value\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _astv_post_id
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: EMPTY, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected method/member name after '.'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: repl
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: dot
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: dot
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: dot
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: repl
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: val
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: val
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _astv_post_id
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: val
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: dot
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: val
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: dot
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _assoc_right
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: order
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _op_order
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: order
- }
- { NODE_TYPE: LITERAL, DATA: 11
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _assoc
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: j
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _op_order
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: ID, DATA: _assoc_right
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: ID, DATA: j
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: ID, DATA: j
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_value
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: val
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: val
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: val
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value_bare
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: valid
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: run
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_SEP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: valid
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_bin
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: bin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _op_order
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: gt
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: ID, DATA: _assoc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: ID, DATA: _assoc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: rhs
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: rhs
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: bin
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "is\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: ID, DATA: _ast_value_bare
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: valid
- }
- { NODE_TYPE: ID, DATA: run
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: val
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: valid
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_keyword_expr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "return\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "continue\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "break\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: ret
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ret
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_FLOW_CONTROL
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ret
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ret
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unsupported keyword statement\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _type_helper_pre
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: arr
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: arr
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: is_numeric
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: num
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: num
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_LITERAL
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: arr
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: num
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected closing '}' after integer in type declaration\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected integer or '}' to define either a fixed sized array or pointer to unknown sized array\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: arr
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _type_helper_func
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _type_helper_usertype
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: utp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: utp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier in fully qualified type chain\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_type
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: typ
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_TYPE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _type_helper_pre
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: typ
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "void\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: ktp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ktp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ktp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _type_helper_func
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: typ
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: typ
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _type_helper_usertype
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: typ
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: ktp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ktp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ktp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected keytype or usertype when parsing type\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: typ
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "`\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: post
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: post
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: post
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: typ
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_list_value
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: list
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_VLIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _get_closing_delim
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the value list or a closing delimiter\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: next
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _maybe_helper_decl
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: next
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: next
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: next
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: id
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: tp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_TYPE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: utmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utmp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tp
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: utmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: next
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: utp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utp
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tp
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: utp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: next
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier in fully qualified type chain\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: tp
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: tp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier after user type in type list\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: id
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_list_decl
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: list
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_DLIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _get_closing_delim
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: seen
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: seen
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: seen
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected type then identifier as first items in declaration list\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier after type in params/struct def\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: seen
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: id
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _maybe_helper_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected type or parameter name in declaration list\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the declaration list or a closing delimiter\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: next
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_list_enum
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: list
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ELIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _get_closing_delim
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: enum_id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: enum_id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "=\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: enum_id
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: enum_id
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier in body of enum declaration\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the type list or a closing delimiter\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: next
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_list_type
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: list
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_TLIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _get_closing_delim
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected type in type list\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the type list or a closing delimiter\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: next
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_list_stmt
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: list
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_SLIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _get_closing_delim
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "asm\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_asm
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _maybe_helper_fun
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: ID, DATA: _op_prefix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_keyword_expr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: empty
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: empty
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_EMPTY
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: list
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: empty
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected definition, expression, or ';' in statement list\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: list
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: ID, DATA: end
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected closing at end of statement list\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _block_helper_method
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: blf
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_function
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected function or operator overload in method block\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_block_pass
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected opening block in method block\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: blf
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for function in method block\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: blf
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_method
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: blf
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier of struct after 'method'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mth
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mth
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_METHOD
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _block_helper_method
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: mth
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Method block being skipped. Parsing will resume after the end\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_block_pass
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: blf
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for method block\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: mth
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_flow
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: block_type
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_IF_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "else\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "if\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: block_type
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELIF_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: block_type
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "loop\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: block_type
- }
- { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tok
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tok
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: block_type
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: block_type
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_stmt
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: block_type
- }
- { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_stmt
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "asm\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_asm
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_fun_block
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _maybe_helper_fun
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: ID, DATA: _op_prefix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_keyword_expr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected definition, expression, or sub block in flow block\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_fun_block
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: blf
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "if\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "else\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "loop\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_flow
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected 'if', 'else', or 'loop' for function level block\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Block being skipped. Parsing will pick up after the end\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_block_pass
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: blf
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for top block\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: blf
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_post_list
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_TLIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _typ
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_TYPE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _type_helper_pre
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_post
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: _typ
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_post
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: id
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "void\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _type_helper_func
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "`\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: post
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: post
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: post
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: id
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: weird
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_post_list
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: weird
- }
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: weird
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_transform
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- { NODE_TYPE: ID, DATA: at
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: idx
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: idx
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: idx
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: new
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: new
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: new
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: idx
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: idx
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: idx
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: idx
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: idx
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: idx
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: idx
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: idx
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: idx
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: pt1
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: at
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: idx
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_TLIST
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: lst
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: lst
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_VLIST
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: lsub
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: at
- }
- { NODE_TYPE: ID, DATA: _mhf_transform
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lsub
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: at
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: pt2
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lsub
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: at
- }
- { NODE_TYPE: ID, DATA: lsub
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: at
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: lst
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lsub
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: lst
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lsub
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: pt2
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: pt1
- }
- { NODE_TYPE: ID, DATA: pt2
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: at
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: lst
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: lst
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: _type
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: update_children
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: at
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_escape
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: deep
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p1
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p2
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: p2
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: deep
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_up_to_value
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p1
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_lower
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_post_value
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: id
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: id
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: sub
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: id
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected identifier after '.'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_postfix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: op
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: op
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unsure where we are at in the tree ('`'). [CMPERR]"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: op
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _ast_list_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: ID, DATA: _ast_list_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unsure where we are at in the tree ('('). [CMPERR]"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: ind
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ind
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ind
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected value for index operation after '{'\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ind
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ind
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unsure where we are at in the tree ('{'). [CMPERR]"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ind
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected '}' to show the end of an index operation after the value\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_inner_value
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_lower
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_post_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_up_to_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: did_binop
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unexpected token within function call (1). Expected binary operator then value, ',', or ')'.\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_bin
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: did_binop
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: bin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _op_order
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: gt
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: ID, DATA: _assoc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: ID, DATA: _assoc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: lhs
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lhs
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: bin
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "is\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: ID, DATA: _ast_value_bare
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unexpected token within function call (2). Expected binary operator then value, ',', or ')'.\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: did_binop
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_up_to_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected ')' or ',' to complete function call.\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_outer_list
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ")\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected ',' to continue the value list or a closing delimiter\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: next
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: next
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_up_to_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_finish_value
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p1
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p2
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: firstRun
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: p2
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: _mhf_inner_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VLIST
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: _mhf_outer_list
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ln
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VLIST
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[CMPERR] Unsure where we are in the tree\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_ast
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_escape
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: p1
- }
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_lower
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: ln
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_post_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: tmp
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Escaping\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_escape
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_up_to_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_SEP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _is_closing
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ".\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_AUG
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _op_bin
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: bin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _op_order
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: gt
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: ID, DATA: _assoc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: ID, DATA: _assoc
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: gt
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: lhs
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lhs
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: bin
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: bin
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "is\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: ID, DATA: _ast_value_bare
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _mhf_finish_decl
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_DECL
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: var
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: var
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ln
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "=\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: var
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: line
- }
- }
- { NODE_TYPE: ID, DATA: ln
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: lnok
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: var
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected variable name in declaration\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _maybe_helper_fun
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_TYPE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _type_helper_pre
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_transform
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_finish_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Unexpected token. Expected the completion of a declaration or value (identifier or '(')\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: cur
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_post
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_finish_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: cur
- }
- { NODE_TYPE: ID, DATA: _mhf_transform
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _mhf_finish_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: cur
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: lnok
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_function
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[FATAL] [CMPERR] Expected function name\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: fn
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fn
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_FUNCTION
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "asm\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_asm
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_fun_block
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _maybe_helper_fun
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "(\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: ID, DATA: _op_prefix
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_keyword_expr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected definition, expression, or sub block in function\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fn
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_import
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '"'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected string or import literal after 'import'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: rel
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: unquote_str
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: imp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: relative
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: rel
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: rel
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: rel
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: imp
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: path
- }
- { NODE_TYPE: ID, DATA: to_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: '/'
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Importing \0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: rel
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: rel
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_file
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: imp
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: imp
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_asm
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_LITRL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '"'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected string literal after 'ast'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: an
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: an
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ASM
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: unquote_str
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: an
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_struct
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected new identifier for typedef after 'struct'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: sct
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sct
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_STRUCT
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '{'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected new identifier for typedef after 'struct'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_enum
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected new identifier for def after 'enum'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: sct
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sct
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ENUM
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '['
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: '{'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected '{' after enum definition\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_list_enum
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: sct
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_decl
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: decl
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: decl
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_DECL
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\0"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: decl
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: var
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: var
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "=\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_value
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: var
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: decl
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: var
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ",\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected variable name in declaration\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: decl
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_top_block
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: blf
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "module\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "export\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_module
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "method\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_method
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_function
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected module, method, or function for top level block\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Block being skipped. Parsing will pick up after the end\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_block_pass
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";/\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ";;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: blf
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Could not find closing ;/ for top block\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: blf
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_module
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint16
- }
- }
- { NODE_TYPE: ID, DATA: nt
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_MODULE
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "export\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "module\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected 'module' keyword after 'export'\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: nt
- }
- { NODE_TYPE: ID, DATA: NTYPE_EXPORT
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "module\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[FATAL] The following issue is with the compiler, not your program.\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[FATAL] Please report the following issue to tnslc upstream.\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "[FATAL] [CMPERR] Should only call _ast_module when 'module' or 'export' are seen\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected module name (identifier) after 'module'\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: nmod
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: nt
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: run
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "import\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_import
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "struct\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_struct
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "enum\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_enum
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "asm\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_asm
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_top_block
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: &&
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_DELIM
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: ';'
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: run
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected 'import', 'struct', 'asm', block, or declaration in top level\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: mod
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_child
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: nmod
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _ast_file
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: open
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: first
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_first_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_ERR
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "import\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_import
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "struct\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_struct
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "enum\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_enum
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: _advance_check
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "asm\0"
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_asm
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "/;\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_top_block
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_KEYTP
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: TTYPE_USRWD
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "~\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: eq
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_decl
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: mod
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_print_err
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected 'import', 'struct', 'asm', block, or declaration in top level\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Token
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: produce_next_token
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: first
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: first
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: close
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: generate_ast
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NTYPE_MODULE
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _ast_file
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_node_type
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_MODULE
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "MODULE\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_EXPORT
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "EXPORT\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_STRUCT
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "STRUCT\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_TYPE
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "TYPE\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ID
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ID\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_BIN_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "BIN_OP\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_PRE_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "PRE_OP\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_POST_OP
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "POST_OP\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_FUNCTION
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "FUNCTION\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_METHOD
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "METHOD\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_TLIST
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "TLIST\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_DLIST
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "DLIST\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELIST
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ELIST\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_SLIST
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "SLIST\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_LITERAL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "LITERAL\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ENUM
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ENUM\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_DECL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "DECL\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VLIST
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "VLIST\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_VALUE
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "VALUE\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_CAST
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "CAST\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_FLOW_CONTROL
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "FLOW_CONTROL\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_IF_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "IF_BLOCK\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELIF_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ELIF_BLOCK\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ELSE_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ELSE_BLOCK\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_LOOP_BLOCK
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "LOOP_BLOCK\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_ASM
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "ASM\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: ID, DATA: NTYPE_EMPTY
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "EMPTY\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_node_head
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "{ NODE_TYPE: \0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_node_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: ", DATA: \0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_ast_rec
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: depth
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: ID, DATA: depth
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: " \0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_node_head
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_ast_rec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: depth
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: ID, DATA: depth
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: " \0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: print_ast
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_ast_rec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: verify_ast_integrity
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Integrity test failed\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Integrity test passed\n\0"
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: verify_ast_integrity
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Test failed at: \n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_node_head
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Parent: \n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: print_node_head
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "}\n\0"
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: ptr
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Expected: %p\n\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: ID, DATA: p
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _print_num
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Got: %p\n\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: verify_ast_integrity
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- }
- { NODE_TYPE: MODULE, DATA: compile
- { NODE_TYPE: STRUCT, DATA: Variable
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Variable
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_ptr
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: ptp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: ptp
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: get_ptr
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: pop_ptr
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: ptr
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: out
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: p
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ID, DATA: pop
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: ptr
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Type
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: size
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: methods
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Type
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vars
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_var
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vars
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: v
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vars
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Function
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: body
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: inputs
- }
- { NODE_TYPE: ID, DATA: outputs
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Function
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: vtmp
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: i
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: inputs
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: vtmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: outputs
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_input
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: inputs
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: v
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_output
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: t
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: outputs
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: t
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: inputs
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: inputs
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: inputs
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: outputs
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Enum
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: vals
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Enum
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: vtmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vals
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: vtmp
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vals
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vals
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vals
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: Module
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: bool
- }
- }
- { NODE_TYPE: ID, DATA: exp
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: types
- }
- { NODE_TYPE: ID, DATA: funcs
- }
- { NODE_TYPE: ID, DATA: enums
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_SUB
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_VAR
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_TYP
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_FUN
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 3
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_ENM
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: Module
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: mtmp
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: vtmp
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: ttmp
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Function
- }
- }
- { NODE_TYPE: ID, DATA: ftmp
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Enum
- }
- }
- { NODE_TYPE: ID, DATA: etmp
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: mtmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vars
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: vtmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: types
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: ttmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: funcs
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: ftmp
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: enums
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: etmp
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: update_children
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: self
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_sub
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: m
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: m
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: update_children
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: -
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_var
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vars
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: v
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_type
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: t
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: types
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: t
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_funcs
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Function
- }
- }
- { NODE_TYPE: ID, DATA: f
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: funcs
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: f
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: add_enum
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Enum
- }
- }
- { NODE_TYPE: ID, DATA: e
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: enums
- }
- }
- { NODE_TYPE: ID, DATA: push
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: e
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _find_rec
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Artifact
- }
- }
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: !<
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _find_rec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: pth
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: typ
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: +
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_SUB
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_VAR
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_TYP
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: types
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: t
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: types
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: types
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_FUN
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: funcs
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Function
- }
- }
- { NODE_TYPE: ID, DATA: f
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: funcs
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: f
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: funcs
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: typ
- }
- { NODE_TYPE: ID, DATA: MOD_FIND_ENM
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: enums
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Enum
- }
- }
- { NODE_TYPE: ID, DATA: e
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: enums
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: sub
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: e
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: enums
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- { NODE_TYPE: BIN_OP, DATA: !==
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parent
- }
- { NODE_TYPE: ID, DATA: _find_rec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: pth
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: typ
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: find
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Artifact
- }
- }
- { NODE_TYPE: ID, DATA: pth
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: typ
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: void
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _find_rec
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: pth
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: typ
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _delete
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: sub
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Variable
- }
- }
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: vars
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: v
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: vars
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: types
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: t
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: types
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: types
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: funcs
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Function
- }
- }
- { NODE_TYPE: ID, DATA: f
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: funcs
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: f
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: funcs
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: enums
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Enum
- }
- }
- { NODE_TYPE: ID, DATA: e
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: enums
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: e
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: enums
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: {
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: GEN_VAR_NAMES
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: VLIST, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "int\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "int8\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "int16\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "int32\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "int64\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "uint\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "uint8\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "uint16\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "uint32\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "uint64\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "float\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "float32\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "float64\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "vect\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "bool\0"
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "void\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: {
- }
- { NODE_TYPE: ID, DATA: uint
- }
- }
- { NODE_TYPE: ID, DATA: GEN_VAR_SIZES
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: VLIST, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 4
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 8
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: find_type
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Artifact
- }
- }
- { NODE_TYPE: ID, DATA: a
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: transform_struct
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _tfn_mod_loop
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: m
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ||
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: NTYPE_MODULE
- }
- }
- }
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: NTYPE_EXPORT
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: transform_module
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: m
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELIF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: NTYPE_STRUCT
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: transform_struct
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: m
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: transform_module
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: parent
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: s
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parent
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: count
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parent
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: sub
- }
- { NODE_TYPE: ID, DATA: get
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcmp
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: tmp
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: name
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: s
- }
- { NODE_TYPE: ID, DATA: tmp
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: cmp
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: ID, DATA: cmp
- }
- { NODE_TYPE: ID, DATA: NULL
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: ==
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: _type
- }
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: NTYPE_EXPORT
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: exp
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: exp
- }
- }
- { NODE_TYPE: LITERAL, DATA: false
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: ID, DATA: s
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parent
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_sub
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _tfn_mod_loop
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: s
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: _tfn_gen_default_types
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: m
- }
- }
- { NODE_TYPE: LOOP_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: i
- }
- { NODE_TYPE: PRE_OP, DATA: len
- { NODE_TYPE: ID, DATA: GEN_VAR_NAMES
- }
- }
- }
- }
- }
- { NODE_TYPE: SLIST, DATA: [
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- { NODE_TYPE: POST_OP, DATA: ++
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Type
- }
- }
- { NODE_TYPE: ID, DATA: t
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: GEN_VAR_NAMES
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: t
- }
- { NODE_TYPE: ID, DATA: size
- }
- }
- { NODE_TYPE: ID, DATA: GEN_VAR_SIZES
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: i
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: m
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: add_type
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: t
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: transform_tree
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Module
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: Module
- }
- }
- { NODE_TYPE: ID, DATA: out
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: strcpy
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: data
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: =
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: out
- }
- { NODE_TYPE: ID, DATA: exp
- }
- }
- { NODE_TYPE: LITERAL, DATA: true
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _tfn_gen_default_types
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _tfn_mod_loop
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: n
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: out
- }
- }
- }
- }
- { NODE_TYPE: STRUCT, DATA: OutBuf
- { NODE_TYPE: DLIST, DATA: {
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: Vector
- }
- }
- { NODE_TYPE: ID, DATA: hsec
- }
- { NODE_TYPE: ID, DATA: dsec
- }
- { NODE_TYPE: ID, DATA: csec
- }
- }
- }
- { NODE_TYPE: METHOD, DATA: OutBuf
- { NODE_TYPE: FUNCTION, DATA: init
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: hsec
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: dsec
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: csec
- }
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: write_to_file
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fout
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: write_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "bits 64\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: write_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: hsec
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: write_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\nsection .data\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: write_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: dsec
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: write_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\nsection .text\n\0"
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- { NODE_TYPE: POST_OP, DATA: `
- }
- }
- { NODE_TYPE: ID, DATA: write_cstr
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: csec
- }
- { NODE_TYPE: ID, DATA: as_cstr
- { NODE_TYPE: VLIST, DATA: (
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: end
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: hsec
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: dsec
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: self
- }
- { NODE_TYPE: ID, DATA: csec
- }
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: generate
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: ID, DATA: fout
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: Node
- }
- }
- { NODE_TYPE: ID, DATA: n
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: generate_ast
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: fin
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: ID, DATA: update_children
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: parse
- }
- { NODE_TYPE: ID, DATA: print_ast
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: n
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: n
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: DEFAULT_FOUT
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "out.asm\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: USAGE
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "
-TNSLC v0.6.0 (C) 2024 CircleShift (MPL 2.0)
-
-usage:
- tnslc (file in) [file out]
-
-\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: FOPEN_ERR
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "Error opening file\n\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: char_str
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "%c\0"
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: newline
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: "\n\0"
- }
- }
- }
- }
- { NODE_TYPE: FUNCTION, DATA: main
- { NODE_TYPE: DLIST, DATA: (
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- { NODE_TYPE: ID, DATA: argc
- }
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: PRE_OP, DATA: ~
- }
- { NODE_TYPE: ID, DATA: uint8
- }
- }
- { NODE_TYPE: ID, DATA: argv
- }
- }
- { NODE_TYPE: TLIST, DATA: [
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: int
- }
- }
- }
- { NODE_TYPE: ASM, DATA: mov r10, rdi
- }
- { NODE_TYPE: ASM, DATA: mov r11, rsi
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: <
- { NODE_TYPE: ID, DATA: argc
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: _printf
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: USAGE
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- { NODE_TYPE: DECL, DATA:
- { NODE_TYPE: TYPE, DATA:
- { NODE_TYPE: ID, DATA: utils
- }
- { NODE_TYPE: ID, DATA: File
- }
- }
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: ID, DATA: fout
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: argv
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 1
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: IF_BLOCK, DATA:
- { NODE_TYPE: SLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: >
- { NODE_TYPE: ID, DATA: argc
- }
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: argv
- { NODE_TYPE: POST_OP, DATA: {
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 2
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: ELSE_BLOCK, DATA:
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- }
- { NODE_TYPE: ID, DATA: init
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: ID, DATA: DEFAULT_FOUT
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: compile
- }
- { NODE_TYPE: ID, DATA: generate
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fin
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: PRE_OP, DATA: ~
- { NODE_TYPE: ID, DATA: fout
- }
- }
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fin
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: BIN_OP, DATA: .
- { NODE_TYPE: ID, DATA: fout
- }
- { NODE_TYPE: ID, DATA: end
- { NODE_TYPE: VLIST, DATA: (
- { NODE_TYPE: VALUE, DATA:
- }
- }
- }
- }
- }
- { NODE_TYPE: FLOW_CONTROL, DATA: return
- { NODE_TYPE: VALUE, DATA:
- { NODE_TYPE: LITERAL, DATA: 0
- }
- }
- }
- }
-}
-Integrity test passed
diff --git a/tnslc/parse/ast.tnsl b/tnslc/parse/ast.tnsl
index 588f3fd..b12e75e 100644
--- a/tnslc/parse/ast.tnsl
+++ b/tnslc/parse/ast.tnsl
@@ -2187,7 +2187,7 @@ int errors_shown = 0
;/
/; print_node_head (~Node n)
- _printf("{ NODE_TYPE: \0")
+ _printf("{ \0")
print_node_type(n)
_printf(", DATA: \0")
_printf(n`.data)
diff --git a/tnslc/test.tnsl b/tnslc/test.tnsl
index 6b55408..72836c3 100644
--- a/tnslc/test.tnsl
+++ b/tnslc/test.tnsl
@@ -1,9 +1,12 @@
int i = 1 + 2 * 4 - 3 + 4
+int j = -3
~uint8 a = b{0}
/; main ({}{}uint8 args) [int]
+
+ tnsl.print("Hello, World!")
~uint8 as = 12
as` = 3 + 4