summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/1.md660
-rw-r--r--spec/2.md101
-rw-r--r--spec/3.md48
-rw-r--r--spec/4.md48
-rw-r--r--spec/5.md101
-rw-r--r--spec/Appendices.md39
-rw-r--r--spec/README.md51
-rwxr-xr-xtnslc/build.sh11
-rw-r--r--tnslc/compile/codegen.tnsl76
-rw-r--r--tnslc/compile/compbuf.tnsl6
-rw-r--r--tnslc/compile/compile.tnsl1
-rw-r--r--tnslc/compile/function.tnsl253
-rw-r--r--tnslc/compile/module.tnsl399
-rw-r--r--tnslc/compile/scope.tnsl261
-rw-r--r--tnslc/compile/struct.tnsl263
-rw-r--r--tnslc/compile/var.tnsl479
-rw-r--r--tnslc/out.log42244
-rw-r--r--tnslc/parse/ast.tnsl4
-rw-r--r--tnslc/test.tnsl26
-rw-r--r--tnslc/utils/algo.tnsl2
20 files changed, 2172 insertions, 42901 deletions
diff --git a/spec/1.md b/spec/1.md
index bc1ad65..62e46f5 100644
--- a/spec/1.md
+++ b/spec/1.md
@@ -6,332 +6,467 @@
Normal TNSL project structure has a root source folder with TNSL files contained within the folder and sub-folders. It is normal for the root folder to represent a single library or binary, although there is no strict rule enforcing this. Standard organization is to place sub-modules in sub-folders. The file name for the module's entry point should match the folder name.
-The file representing the compile target is known as the root file, which generally resides in the root source folder. This file will contain a main method, and/or the pre-processor statement `rootfile` to denote the root of a library. If both are present, the compiler will generate an executable by default.
+The file representing the compile target is known as the root file, which generally resides in the root source folder. If the program is built as an executible, it requires a function with the name `main` as the entrypoint to the program.
### TNSL Files
TNSL files end with the `.tnsl` extension and may contain the following:
-- Comments
-- Pre-processor statements
- Modules
- Constant and variable definitions
-- Named function blocks
+- Enum declarations
- Struct definitions
+- Named function blocks
- Method and interface blocks
+- Import statements
+- Asm statements
-The following may only occur within named function or method blocks:
+There are other language constructs which may only be used within functions:
- Re-assignment of variables
- Control flow blocks
-- Function calls
+- Value statements
- Anonymous blocks (Scope blocks)
+- Stream semantics
-## Section 2 - Blocks
-
-### TNSL Block Notation
-
-Blocks in tnsl consist of a slash `/` and a character denoting the type of block. The reverse of these symbols end the block. The three types of blocks are comment, pre-processor, and code. Code blocks can be further broken down into modules, functions, control flow, methods, and interfaces.
+Comments may appear anywhere in the file
- Examples of standard block opening and closing characters:
+### Comments
- /# - open comment
- #/ - close comment
+Comments begin with `#` and end with a new line. Comment blocks start with `/#` and end with `#/`.
- /: - open pre-processor
- :/ - close pre-processor
-
- /; - open code
- ;/ - close code
-
-In addition to the standard opening and closing characters, there exist "swivel" character sets to quickly close and open a block type
+## Section 2 - Blocks
- ;; - close code, then open code
- #; - close comment, open code
- ;# - close code, open comment
- :: - close pre-processor, open preprocessor
- #: - close comment, open pre-processor
- :# - close pre-processor, open comment
+Blocks in TNSL open with `/;` and close with `;/`. Keywords directly after the opening (and on the same line) affect the type of block created.
+A quicker syntax for closing and re-opening a new block is to use `;;` which is equivalent to `;//;`; this can be helpful with series of `else if` blocks and `case` blocks.
### Modules
Modules are akin to namespaces in C++
-They hold a group of related modules, functions, structs, and variables. These named definitions may be used by other projects if the `export` keyword is used in conjunction with the `module` keywor; otherwise, the names are not exported into the file's symbol table.
+They hold a group of related sub-modules, functions, structs, and variables.
+These named definitions may be used by other projects if the `export` keyword is used before the `module` keyword.
+Otherwise, the names are not exported into the program/library's symbol table.
### Module definition example:
*File a.tnsl (project a)*
-
- /; export module pubmod
- /; module hidden
- # Can access all from pubmod, and pubmod.hidden
- ;/
- # Can access all from pubmod, and pubmod.hidden
- ;/
+```
+/; export module pubmod
+ /; module hidden
+ # Can access all from pubmod, and pubmod.hidden
+ ;/
# Can access all from pubmod, and pubmod.hidden
+;/
+# Can access all from pubmod, and pubmod.hidden
+```
*File aa.tnsl (project a)*
-
- /; my_function_a
- # Can access all from pubmod, and pubmod.hidden
- ;/
+```
+/; my_function_a
# Can access all from pubmod, and pubmod.hidden
+;/
+# Can access all from pubmod, and pubmod.hidden
+```
*File b.tnsl (project b)*
-
- /; my_function
- # Can access all from pubmod, but not pubmod.hidden
- ;/
- # Can access all from pubmod, but not pubmod.hidden
+```
+/; my_function
+ # Can import all from pubmod, but not pubmod.hidden
+;/
+# Can import all from pubmod, but not pubmod.hidden
+```
### Functions
-TNSL functions are code blocks whose definition contains none of the following: control flow keywords, the module keyword, the method keyword. TNSL functions are called methods if they are contained within a method block. TNSL methods may only be called with relation to the user defined type they are linked to. If a TNSL function has no user defined name, it is anonymous. Anonymous functions can be stored as void type variables or called immediately. If an anonymous function is not stored, it is interpreted as inline and called immediately (this is known as a scope block).
+Functions are blocks followed by a user defined name (not a keyword).
+Functions may have inputs and/or outputs.
+Inputs are enclosed by `()` and outputs are enclosed by `[]`
-Function blocks may have inputs and/or outputs. Inputs are enclosed by `()` and outputs are enclosed by `[]`
-
-Input lists must begin with a type and conclude with at least one named parameter. If no type is given after a comma, it is assumed that the previous type carries over.
+Input lists may begin with a type or be empty.
+If they begin with a type they must conclude with at least one named parameter.
+Parameters are separated by commas and use the previous type unless a new one is specified.
Output lists consist of a comma seperated list of types.
-Either of these may be omitted for no input and/or output.
+Functions *may* be overloaded (that is, two functions may share names but have differing input type lists).
+Overloaded functions *must not* share the same inputs and differing outputs, but *may* have both differing inputs and differing outputs.
+Symbols can be defined in a separate build file or auto-generated by the compiler.
+There is a standard for how the compiler will auto-generate names; this can be found in another chapter.
-TNSL functions may have their call stack modified by the `raw` and/or `inline` keywords. If the `inline` keyword is placed before the function declaration, the function will still be exported (if it is being exported), but any time it is used in the project's code, it will be optimized as if in-line.
+### Function definition example:
-The use of the `raw` keyword has several effects: the function will have no generated assembly preamble, the function will allow `raw return` statements, the function will not be optimized, and the function will allow `asm` statements. Any function may be labeled `raw`, even `main` and anonymous functions.
+*simple function with no inputs or outputs named "my_function"*
+```
+/; my_function
+ tnsl.print("Hello from my_function!")
+;/
+```
-Functions *may* be overloaded (that is, two functions may share names but have differing input type lists). Overloaded functions *may not* share the same inputs and differing outputs, but *may* have both differing inputs and differing outputs.
+*functions with inputs and/or outputs*
+```
+/; my_second_function (int input1, bool input2) [bool, int]
+ return input2, input1
+;/
-Examples:
+/; sum_lists ({}int a, b) [int]
+ int sum = 0
+
+ /; loop (int i = 0; i < len a) [++i]
+ sum += a{i}
+ ;/
- # simple function with no inputs or outputs named "my_function"
- /; my_function
- <statements>
- ;/
+ /; loop (int i = 0; i < len b) [++i]
+ sum += b{i}
+ ;/
+;/
- # function with inputs and outputs
- /; my_second_function ( <type> input1, <type (optional)> input2 ) [ <type 1>, <type 2>, ... , <type n> ]
- <statements>
- ;/
+int global_lol = 0
- # funtion with a scope block
- /; my_third_function
- <statements>
- # a scope block
- /;
- <statements>
- ;/
- ;/
+/; next [int]
+ return ++global_lol
+;/
+
+/; set_global (int i)
+ global_lol = i
+;/
+```
### Control Flow Blocks
-Control flow blocks are code blocks whose definitions contain the keywords if, else, loop, match, case, or default.
+Control flow blocks begin with the keywords `if`, `else`, `loop`, `match`, `case`, or `default`.
-For if, else, loop, and match any inputs and/or outputs are a semicolon-separated list of statements. For case or default, only inputs are accepted in the form of a single value. Any variables defined in these inputs or outputs are scoped to the block only. Control flow blocks may not actually output any values; instead, any statements in the output are evaluated when the block ends, weather it loops or not.
+Control flow blocks have a series of lists, generally these can be thought of as 'beginnings' encased in "()" and 'endings' encased in "[]".
+What 'beginning' and 'ending' mean varries by the type of block and is explained below.
-Examples:
+### `if` Blocks
- # simple if block
- /; if ( <conditional> )
- <statements>
- ;/
+`if` blocks generally work as you would expect in other procedural languages.
+They can be followed by any number of `else if` blocks as well as a final `else` block.
- # if block with else and else if
- /; if ( <statements (optional)> ; ... ; <conditional> )
- <statements>
- ;; else if ( <statements (optional)> ; ... ; <conditional> )
- <statements>
- ;; else
- <statements>
- ;/
+The 'beginning' "()" of an `if` or `else if` block is a series of statements separated by `;`.
+These are executed in order. The last of these must evaluate to a boolean (type `bool` with value `true` or `false`).
+The code within the if block is executed if the boolean evaluates to `true` and does not execute if the boolean evaluates to `false`.
- # loop block
- /; loop ( <statements (optional)> ; ... ; <conditional (optional)> )
- [ <statements (optional)> ; ... ; <conditional (optional)> ]
+If any block in the series has a condition which evaluates to true then it is executed and the others are skipped.
+If none evaluate to true then the `else` block will execute if present.
- <statements>
- ;/
+The 'ending' "[]" of an `if` block is currently reserved and has undefined behavior.
- # match block
- /; match ( <statement (optional)> ; ... ; <input value> )
+*Examples:*
+```
+/; if (true)
+ tnsl.print("this always prints")
+;/
- /; case <match value>
- <statements>
- ;; case <match value>
- <statements>
- # Continue here would fall through to default
- ;; default
- <statements>
- ;/
- ;/
+/; if (false)
+ tnsl.print("this never prints")
+;; else if (true)
+ tnsl.print("this one will now print")
+;; else
+ tnsl.print("this never prints either")
+;/
+
+/; if (0 !== 0)
+ tnsl.print("you have to use boolean values")
+;; else if (1 < 0)
+ tnsl.print("standard equality operators work, see appendix for a list.")
+;; else if (int i = 0; i < 2 && 5 > i)
+ tnsl.print("Statements!")
+;/
-### Loops
+/; if (false)
+ tnsl.print("this never prints")
+;; else if (false)
+ tnsl.print("this never prints either")
+;; else
+ tnsl.print("this one will now print")
+;/
+```
+
+### `loop` Blocks
The `loop` block can be configured (based on weather or not each boolean statement is omitted) to act as any type of loop.
-The *first* conditional is the **initial run condition**. It decides weather the loop is entered at all. If omitted, defaults to `true`, creating a `do ... while` type block.
+The 'beginning' "()" of a `loop` is similar to an `if` in that it is a series of statements; however in the case of a `loop` the conditional is optional and defaults to `true` if omitted.
+If the conditional evaluates to `true` then the inner code is evaluated.
-The *second* conditional is the **subsequent run condition**. It decides weather the loop continues to loop or not. If omitted, it *mirrors* the **initial run condition** (this is equivalent to a `for` or `while` block).
+The 'ending' "[]" of a `loop` is similar to the 'beginning' of the loop as it a series of statements with an optional conditional at the end.
+If the conditional is omitted here it defaults to the same as the conditional from the 'beginning'.
+Each of these statements are evaluated at the end of the loop and if the conditional evaluates to `true` then the loop repeats its execution from just after the 'beginning'.
-Examples:
-
- # Same as a do ... while block
- /; loop [ <conditional> ]
- <statements>
- ;/
+*Examples*
+```
+# Same as a do ... while block
+/; loop [ <conditional> ]
+ <statements>
+;/
- # Same as a while loop
- /; loop ( <conditional> )
- <statements>
- ;/
+# Same as a while loop
+/; loop ( <conditional> )
+ <statements>
+;/
- # Infinite loop
- /; loop
- <statements>
- ;/
+# Infinite loop
+/; loop
+ <statements>
+;/
- # Adding statements to mimic a for loop
- /; loop (int i = 0; i < 10) [i++]
- <statements>
- ;/
+# Adding statements to mimic a for loop
+# Since i++ is not a bool it does not count
+# as the conditional
+/; loop (int i = 0; i < 10) [i++]
+ <statements>
+;/
+```
-## Section 3 - Statements
+### `match` Blocks
-### TNSL Statement Notation
+`TODO`
-There are three types of tnsl statements: code, pre-processor, and comment. Code statements begin with `;` and end at the next statement. Pre-processor statements begin with `:` and end at the next statement. Comment statements (line comments) begin with `#` and end at the next new line. After a line comment ends, the previous statement resumes.
+#### `case` Block
-### Variable Declaration
+`TODO`
-Declaring a variable is done by referencing a type and then giving a list of names for the new variables. Optionally, a list of values may be given to initialize the new variables.
+#### `default` Block
-Variables may be augmented by the following keywords: `const`, `volatile`, and/or `static`.
+`TODO`
-Declaring a variable as `const` means that it is a constant and must be immediately initialized. A constant may not be re-assigned a value.
+## Section 3 - Types
-Declaring a variable as `volatile` means that the compiler will not attempt to optimize operations performed on it.
+An exhaustive list of built-in and special types can be found in Appendix B.
-Declaring a variable `static` means that the value will be kept between function calls. Static variables may create race conditions when paired with threads.
+### Standard Types in `tnsl`
-Examples:
+The standard set of types will be familiar to programmers with experience in procedural languages.
+Some common types are:
- # list with initialization
- ;int a, b = 0, 1
-
- # single without initialization
- ;int c
-
- # list with partial initialization
- ;int d, e = 0 # d is defined, but e is not
+- Signed integer variants (positive or negative): `int`, `int8`, `int16`, `int32`, `int64`
+- Unsigned integer variants (positive only): `uint`, `uint8`, `uint16`, `uint32`, `uint64`
+- Floating point variants: `float`, `float32`, `float64`
+- Boolean (`true` or `false`): `bool`
+-
-## Section 4 - Types
+TNSL restricts valid platforms to those with byte addressable memory and whose processors support at least 16-bit integers.
-An exhaustive list of built-in types can be found in Appendix B.
+TNSL basic types with unspecified length (`int`,`uint`, and `float`) default to the largest supported in standard registers (non-SIMD or vector operations).
-### The `void` Type
+I.E. for x86_32 `int` defaults to `int32`, on x86_64 `int` defaults to `int64`
-The `void` type represents one of two things: an unknown data type, or a function. When the void type is paired with input and output parameters `void( <types> )[ <types> ]` it represents a function. When it is not paired with these things it represents an unknown data type.
+### `libtnsl` Types
-Pure `void` types can not be created. Function types are *always* references to the function, more like pointers than data holders. Otherwise, void types must be created as pure pointers. In this case, they are in a sense "un-typed" pointers which do not know the length of the object they are pointing at, only the address.
+The following are well supported but rely on libtnsl:
-Examples:
+- The meta-type: `type`
+- The vector (SIMD) type: `vect`
- # simple function
- /; func_1
- ;/
+They are discussed in more detail in the advanced features section of the specification.
- # void example func
- /; func_2
+### Pointers
- # create a void type and assign it func_1's value
- ;void()[] func_ref = func_1
-
- # call func_1 using func_ref
- ;func_ref()
- ;/
+Pointer types are prefixed with the `~` (pointer to) operator.
+This operator serves as both part of the type, and as a way to get a pointer from a variable.
+
+The de-reference operator `` ` `` is used as a postfix to pointer variables when getting or setting the underlying value.
+
+*Examples*
+```
+# define int i as 0
+int i = 0
+
+# pointer to int i
+~int p = ~i
+
+# set the value of i using p (i is set to 1)
+p` = 1
+
+/; if (i == 1)
+ tnsl.print("That's pointers!")
+;/
+```
+
+### References
+
+Reference types are typically for use in function parameters but can be defined anywhere. Their type signature ends in the de-reference operator `` ` ``.
+
+A few quirks of reference types:
+
+- Reference types are similar to pointers and must be initialized with a pointer to be useful.
+- When accessed or set in a normal statement they automatically de-reference the pointer they hold.
+- When set in definition or function call they expect a pointer to the underlying variable they will access.
+- The pointer which the reference variable uses can be set by prefixing with `~`
+
+*Examples*
+```
+# this will be our underlying integer
+int a = 0
+
+# basic definition and immediate assignment of a reference type
+# (immediate assignment is special as it allows setting the
+# pointer of the reference without use of the ~ operator)
+int` r = ~a
+
+# sets or gets in normal statements will use the underlying 'a'
+
+# a becomes 1
+r = 1
+
+# b is defined and set to 1
+int b = r
+
+# an example of declaration without immediate assignment
+int` s
+
+# setting what 's' points to requires use of the ~ operator
+~s = ~a
-More examples of pointer voids are available in the pointers section of this document.
+# a becomes 2
+s++
-### Arrays
+# a function with a reference parameter
+/; add_one (int` i)
+ i++
+;/
-In memory, arrays store their length as a uint, then immediately follow with the contents of the array. This way, all arrays can be checked for length with the `len` operator.
+# you must explicitly call using a pointer to the variable being referenced
+add_one(~a)
-Arrays are created by prefixing a type with `{ <# of elements> }` or simply `{}` so long as the array is immediately initialized. One can similarly access an element of an array by suffixing the variable name with `{ <value of element to return> }`.
+/; if (a == 3)
+ tnsl.print("a is now three")
+;/
+```
+
+### Fixed-length Arrays
+
+Arrays are a repeated sequence of the same type of data in memory.
+
+Arrays store their length as a `uint` and immediately follow with the contents of the array. All arrays can be checked for length with the `len` operator.
+
+Arrays are created by prefixing a type with `{ <# of elements> }`.
+One can similarly access an element of an array by suffixing the variable name with `{ <offset of element to return> }`.
When initializing or assigning a new value to an entire array, use `{}` to encase a list of values.
The length of the array can be gotten by `len <variable name>`
-Examples:
+*Examples*
+```
+# create an array of five integers
+{5}int i
- # create an array of five integers
- ;{5}int i
+# assign values to the array
+i{0} = 0
+i{1} = 2
+i{2} = 0
+i{3} = 2
+i{4} = 1
- # assign values to the array
- ;i{0} = 0
- ;i{1} = 2
- ;i{2} = 0
- ;i{3} = 2
- ;i{4} = 1
+# store the length of the array (5)
+uint array_length = len i
- # store the length of the array
- ;uint array_length = len i
+# create an initialized array with length five
+{5}int j = {1, 2, 3, 4, 5}
- # create an initialized array with length five
- ;{}int j = {1, 2, 3, 4, 5}
+# loop through the array and add them.
+/; loop (int k = 0; k < array_length) [k++]
+ i{k} += j{k}
+;/
+```
- # loop through the array and add them.
- /; loop (int k = 0; k < array_length) [k++]
+### Unknown-length Arrays
- ;i{k} += j{k}
- ;/
+When creating an array where the length is not known at compile time (or accepting an array with unknown length as a parameter) use the `{}` prefix.
+***When would I use this?***
+- When defining an array within a function body or module the compiler will optimize however it thinks is best and is functionally equivalent to a fixed length array.
+- The difference matters more when **defining functions** or **defining structs** since in this case `{}` ***always*** denotes a ***pointer*** to an array.
+ - This can be useful when you want to accept arbitrarily long lists or have a recursive struct which has an array of itself as a member.
-### Pointers
+*Examples*
+```
+# when defining an array
+{}int i = {1, 2, 3, 4}
+{}int j = {5, 6, 7, 8, 9, 10}
-Pointer types are created using the `~` (pointer to) operator. This operator serves as both part of the type, and as a way to get a pointer from a type. To de-reference a pointer into it's base type, use the `` ` `` (de-reference) operator.
+# when defining a recursive struct
+struct Node {
+ int i,
+ # using a fixed-length here would result in a
+ # compile time error because the size could
+ # not be computed
+ {}Node sub
+}
-Passing by reference can be done by prefixing the type with the de-reference operator. This type is only available in function parameter declaration. To call a function with this type, a pointer to the desired variable must be given.
+# when defining a function
+/; sum({}int arr) [int]
+ int out = 0
+ /; loop (int i = 0; i < len arr) [++i]
+ out += arr{i}
+ ;/
+;/
-Examples:
+# sum can take any array of integers
+int a = sum(i), b = sum(j)
+```
- # define int
- ;int i
+### NOTE: Evaluation Order
- # pointer to i
- ;~int p = ~i
+Order of evaluation of type prefixes and postfixes is first all prefixes in right to left order then all postfixes in left to right order.
+This can be overridden using parenthesis.
- # set i using p
- ;`p = 1
+*Convoluted Examples*
+```
+# a reference to a pointer which points to an int
+~int`
+(~int)`
- # a function taking a pass by reference
- /; add_two (`int i)
- i += 2
- ;/
+# a reference to a reference to an array (unknown length) which holds pointers to floats
+{}~float``
+({}(~(float))``
- # calling add_two in two different ways
- ;add_two(p)
- ;add_two(~i)
+```
- # i is now 5
+### The `void` Type
+
+The `void` type can represent two different things: unknown memory or a function.
+When `void` is prefixed with `~` it represents a pointer to arbitrary memory (byte aligned).
+When the void type is paired with input and output parameters `void( <type list> )[ <type list> ]` it represents a function. This is considered part of the type and is not a postifx.
+
+*Examples*
+```
+# simple function
+/; func_1
+ tnsl.print("hello!")
+;/
+
+# void example func
+/; func_2
+
+ # create a void type and assign it func_1's value
+ void()[] func_ref = func_1
+
+ # call func_1 using func_ref
+ func_ref()
+;/
+```
### Casting Types
-Casting between types uses the standard input and output enclosing `()` and `[]` in conjunction. Place a value in the input enclosing characters and a type to output in the output enclosing characters to cast one type to another (`( <value> )[ <type> ]`).
+Cast by enclosing a value in `()` and following with the type to cast to enclosed in `[]`.
-Examples:
+*Examples*
+```
+# define an int and a float
+int i = 10
+float f = 11.5
- # define an int and a float
- ;int i = 10
- ;float f = 11.5
+# define a void pointer and set it to reference i
+~void v = ~i
- # define a void pointer and set it to reference i
- ;~void v = ~i
-
- # define an int pointer and cast the void pointer to initialize it
- ;~int p = (v)[~int]
+# define an int pointer and cast the void pointer to initialize it
+~int p = (v)[~int]
- # cast the float to an int and set the value of i
- ;`p = (f)[int]
+# cast the float to an int and set the value of i
+p` = (f)[int]
+```
### Defining Types
@@ -363,7 +498,7 @@ Examples:
;/
;/
-### Interfaces
+### Interface Types
Interfaces are defined using the `interface` keyword. Interfaces have methods but no struct or members to accompany them. Instances of interfaces may not be created. Methods defined by interfaces must be overridden unless marked in the interface. Such marked methods may call on other methods, but may not use any members as interfaces have none.
@@ -394,7 +529,7 @@ Example:
;/
;/
-### Enums
+### Enum Types
Enums are defined using the `enum` keyword. An enum represents a set of possible states, and requires a single output type which can be compared.
@@ -421,6 +556,10 @@ Examples:
ROCK
}
+## Section 4 - Statements
+
+`TODO`
+
## Section 5 - Operators
An exhaustive list of operators can be found in Appendix A
@@ -429,114 +568,101 @@ An exhaustive list of operators can be found in Appendix A
Operator precedence is as follows (from greatest to least):
- Pointer operators (p0):
-
- ~ - address of
-
- ` - de-reference
-
-
- Access operator (p1):
+```
+Pointer operators (p0):
- . - get/access
+~ - address of
+` - de-reference
- Increment/de-increment (p2):
- ++ - increment
+Access operator (p1):
- -- - de-increment
+. - get/access
- Multiplication/division (p3):
+Increment/de-increment (p2):
- * - multiply
+++ - increment
- / - divide
+-- - de-increment
- Addition and subtraction (p4):
+Multiplication/division (p3):
- + - addition
+* - multiply
- - - subtraction
+/ - divide
- Modulus (p5):
+Addition and subtraction (p4):
- % - modulus
++ - addition
+- - subtraction
- Bitwise operators (p6):
- & - and
+Modulus (p5):
- | - nor
+% - modulus
- ^ - xor
- << - shift left
-
- >> - shift right
+Bitwise operators (p6):
- !& - nand
+& - and
- !| - nor
+| - nor
- !^ - xand
+^ - xor
- ! - not (bitwise or boolean)
+<< - shift left
+>> - shift right
- Boolean operators (p7):
+!& - nand
- && - boolean and
+!| - nor
- || - boolean or
+!^ - xand
- == - boolean eq
+! - not (bitwise or boolean)
- > - greater than
- < - less than
-
- !&& - boolean nand
+Boolean operators (p7):
- !|| - boolean nor
+&& - boolean and
- !== - boolean neq
+|| - boolean or
- !> - boolean not greater than
+== - boolean eq
- !< - boolean not less than
+> - greater than
- >== - boolean greater than or equal to
+< - less than
- <== - boolean less than or equal to
+!&& - boolean nand
-## Section 6 - `raw` and `asm`
+!|| - boolean nor
-### The `raw` Keyword
+!== - boolean neq
-The `raw` keyword can be used in four different scenarios, and each has a different meaning.
+!> - boolean not greater than
-1. The `raw` keyword can be used in function definitions. These effects were discussed in section 2.2.
+!< - boolean not less than
-2. The `raw` keyword may be used in conjunction with the `return` keyword, but only inside of raw functions. This causes an instant return regardless of stack or register state. It is recommended to clean up function and provide return types before using this.
+>== - boolean greater than or equal to
-3. The `raw` keyword may be used with the `struct` keyword to create a raw struct. Raw structs can not contain user defined types or generics. Raw types encode no type information and may not be extended. Raw structs, unlike static or dynamic structs, are only as wide their members.
- - Static and dynamic structs contain a small amount of information pertaining to their actual type and generics so may be larger than only their members.
- - In addition, since static and dynamic structs may be extended, they may not be the initially defined type and may be larger, further complicating matters.
+<== - boolean less than or equal to
+```
-4. The `raw` keyword may be used with the `enum` keyword to create a raw enum. Raw enums only have at most one state per bit and may bitwise or and bitwise and to generate a full state. Raw enums are much akin to bit-masks.
+## Section 6 - `asm`
-### The `asm` Keyword
+`TODO`
-The `asm` keyword may be used in `raw` functions or blocks to produce raw asm code for the assembler. Any valid assembly code may be used, and certain extensions are available such as variable pointer references.
+## Section 7 - Crosscalling to C
-Syntax:
+`TODO`
- ;asm "<valid line of assembly code>"
## License
diff --git a/spec/2.md b/spec/2.md
index 1f5a7ac..e69de29 100644
--- a/spec/2.md
+++ b/spec/2.md
@@ -1,101 +0,0 @@
-# Related Features
-
-## Section 1 - Style Guide
-
-This style guide is primarially for anyone working on tnsl-lang and to a baseline good practice. However, different programmers and groups will feel differently, the real recommendation is to keep your project consistant. Pick and choose what you need such that it fits your needs and everyone is on board, just keep it consistant.
-
-This section will probably feel less formal than the others simply due to how subjective things are.
-
-### Tabs or Spaces
-
-You will for the most part see tabs being used over spaces in tnsl-lang. This is not to keep file sizes down, but instead so that anyone can tweak how the files look to fit their asthetic best without affecting anyone else. Adjust tab sizing on your machine and it won't change it on mine.
-
-### Naming Convention
-
-NOTE: Remember that naming convention is no substitute for readability. If your names don't make sense, neither does your code. x, y, and z may be fine, but that doesn't help anyone else figure out what you're using them for. If a particular implementation *does* use variables that are hard to name, feel free to use letter identifiers, but add some short comments to explain what you're doing and how (see comments for more info).
-
-- UPPER_SNAKE_CASE for constants and enum values
-
-- lowerCamelCase for functions, and methods
-
-- UpperCamelCase or flatcase for enums, types, and interfaces
- - it is recommended that interfaces start with the letter i
-
-- lower_snake_case (hungarian notation acceptable) for type/struct members, variables
-
-- flatcase for modules
-
-## Comments
-
-Comments should strive to tell programmers what a function does or what a struct's member is for rather than how it goes about doing/generating said thing. Particularly obtuse implimentations are free to use comments to explain their code.
-
-Comment blocks starting with an extra number sign `/##` are documentation comments. If they are at the top of the file, they provide either info about the file or license information. If they appear directly before (or joined to using `#;`) a function or method they explain what the function or method does.
-
-## Directory Structure
-
-`src` will be the name of the root source files/folders, `build` will be the name of the outputed files/folders.
-
-The name of the *main* root file (there may be multiple root files) will be the project folder name followed by .tnsl (example: project tnslc's root file is `src/tnslc.tnsl`).
-
-Sub-modules shall be contained in their own folder, and the main entry point to the module will be named the same as that folder followed by .tnsl (example: module `tnsl.alg` in libtnsl has the main entry point for the module `/src/alg/alg.tnsl`).
-
-## Section 2 - Compiler Options
-
-An exhaustive list of all compiler options can be found in the spec for tnslc, but these are a general sub-set for working on lower-level projects and language bootstrapping.
-
-### ISA Options
-
-The tnslc compiler can output for a variety of backends. These can be set with the `--arch <desired isa>` option.
-
-### Pre-processor
-
-tnslc can preemptively set pre-processor variables using the `--V "VARIABLE=value, VARIABLE2=value2, ..."` option.
-
-### Standard Library
-
-Access to the standard library can be disabled (bare metal mode) by using the `--no-libtnsl` flag. Also use this to build the standard library as it will attempt to link improperly otherwise.
-
-### T-LETs
-
-What T-LETs exactly are is discussed later. You can have tnslc produce them by passing the `--otype tlet` flag.
-
-## Section 3 - The Pre-Processor
-
-An exhaustive account of the full pre-processor can be found in the tnslc specification.
-
-### Including Other Files
-
-Use the `include` directive to include other code. This can be a library using single quotation marks (example: `:include 'tnslc'`), another file using a path with double quotes (example: `:include "c.tnsl"` reads as `:include "./c.tnsl"`), or a module in a subfolder using expanded syntax (`:include "some_module"` reads as `:include "./some_module/some_module.tnsl"`).
-
-No header guard is needed, tnslc can pick up on if a file has already been included in the project.
-
-Cyclic dependency for files is fine. Cyclic dependency for structs is not.
-
-## Section 4 - libtnsl
-
-An exhaustive list of all features included in the standard libtnsl is provided in the libtnsl spec. This is a short list of minimum functions a libtnsl must provide to make full use of the tnsl programming language.
-
-### Method and type resolution for non-raw types
-
-**TBD - this sub-section is under construction**
-
-The type `tnsl.reflect.type` must exist and must be a raw struct. This is for storing type information.
-
-The module `tnsl.reflect` must provide the following functions/methods:
-
-- `type._get_member_ [tnsl.reflect.library]`
-- `tnsl.reflect._is (type check, base) [bool]`
-
-### Vector types
-
-The type `tnsl.vector.vector` must exist. This is the generic simd/vector type and is referenced by `vect`.
-
-## Section 5 - TNSL-Lang Export Trees (T-LETs)
-
-TNSL doesn't use header files, and downloading full source code for every library being referenced would be a pain. This is where T-LETs come in. T-LETs contain a tree of all exported modules, functions, types, methods, and doc comments from a project. They are more compact and are simply named `<project name>.tlet`.
-
-## License
-
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
diff --git a/spec/3.md b/spec/3.md
index 79504fc..4f7d42a 100644
--- a/spec/3.md
+++ b/spec/3.md
@@ -1,4 +1,50 @@
-# The TNSL Calling ABI
+# Features in Position
+
+To use higher level features in TNSL, an implimentation of libtnsl must be in place with a minimum set of features. This document outlines what concepts are and are not considered "higher level". This document also covers what the minimum set of features are for a given implimentation of libtnsl. Finally, this document covers how to call between TNSL and other programming languages.
+
+## Section 1 - Bare Metal
+
+## Section 2 - libtnsl and Types
+
+`libtnsl` has the authority to define how types are stored in memory (to some extent) and how method resolution works on static and dynamic structs. `libtnsl` *must* provide certain methods for some language features to be available. These functions, and their uses are now listed. A comprehensive list of language keywords can be found in Appendix B.
+
+### 2.0 - nullptr
+
+`tnsl._null` *must* be defined as a universal null pointer value. **No type except pointers may be `null`**, but pointers *must* have a null value to distinguish if they point to a meaningful position in memory.
+
+### 2.1 - The libtnsl Type Extension
+
+`tnsl.reflect._type` *must* be defined as a raw struct which contains minimum information for type identification. This information is stored with every static or dynamic struct so that programs can reflect type information.
+
+`tnsl.reflect._member` *should* be defined as a raw struct which contains minimum information for member variable identification within a type. The information need not be stored with every member variable, but should be stored somewhere such that the `tnsl.reflect._get` method can make use of it.
+
+`tnsl.reflect._method` *must* be defined as a raw struct which contains minimum information for method identification within a type. The information need not be stored with every member function, but should be stored somewhere such that the `tnsl.reflect._call` method can make use of it.
+
+`tnsl.reflect._is` *must* be defined as a function taking two parameters of type `tnsl.reflect._type` and returning a single `bool` as output. This function is called when the `is` operator is envoked.
+
+`tnsl.reflect._get` *should* be defined as a function taking three parameters. The first parameter will be of type `tnsl.reflect._type`, the second parameter will be of type `~void`, and the third parameter will be of type `tnsl.reflect._member`. The function will return a single `~void` as output.
+
+In the parameters, the first relates to the type of the struct given, or at least how the callee views the struct. The second is a pointer to the struct itself. The third is the requested member to get. The `~void` returned must point to the requested value.
+
+`tnsl.reflect._call` *must* be defined as a function taking four parameters. The first parameter will be of type `tnsl.reflect._type`, the second parameter will be of type `~void`, the third parameter will be of type `tnsl.reflect._method`, and the fourth parameter will be of type `~void`. The function will return a single `~void` as output.
+
+In the parameters, the first relates to the type of the struct given, or at least how the callee views the struct. The second is a pointer to the struct itself. The third is the requested method to call. The fourth is a pointer to the parameters for the method. The `~void` returned must point to the return value of the method.
+
+### 2.2 - Memory allocation and de-allocation
+
+`tnsl.algo._alloc` *must* be defined as a function taking a single parameter of type `uint` as the number of bytes to allocate and returning a single `~void` as the pointer to the allocated memory. The memory must be allocated from the heap.
+
+`tnsl.algo._salloc` *should* be defined as a function taking a single parameter of type `uint` as the number of bytes to allocate and returning a single `~void` as the pointer to the allocated memory. The memory must be allocated from the stack.
+
+`tnsl.algo._dealloc` *must* be defined as a function taking a single parameter of type `~void` as the pointer to a chunk of allocated memory. The function should deallocate the memory.
+
+### 2.3 - Expanded Types Extension
+
+`tnsl.box._vect` *must* be a raw struct which vector or simd instructions can be preformed on.
+
+`tnsl.box._string` *must* be a raw struct which stores a string of text. This text may be ASCII or Unicode, and should be stored as `uint8` values internally.
+
+## Section 3 - Cross calling C
## License
diff --git a/spec/4.md b/spec/4.md
index 4f7d42a..79504fc 100644
--- a/spec/4.md
+++ b/spec/4.md
@@ -1,50 +1,4 @@
-# Features in Position
-
-To use higher level features in TNSL, an implimentation of libtnsl must be in place with a minimum set of features. This document outlines what concepts are and are not considered "higher level". This document also covers what the minimum set of features are for a given implimentation of libtnsl. Finally, this document covers how to call between TNSL and other programming languages.
-
-## Section 1 - Bare Metal
-
-## Section 2 - libtnsl and Types
-
-`libtnsl` has the authority to define how types are stored in memory (to some extent) and how method resolution works on static and dynamic structs. `libtnsl` *must* provide certain methods for some language features to be available. These functions, and their uses are now listed. A comprehensive list of language keywords can be found in Appendix B.
-
-### 2.0 - nullptr
-
-`tnsl._null` *must* be defined as a universal null pointer value. **No type except pointers may be `null`**, but pointers *must* have a null value to distinguish if they point to a meaningful position in memory.
-
-### 2.1 - The libtnsl Type Extension
-
-`tnsl.reflect._type` *must* be defined as a raw struct which contains minimum information for type identification. This information is stored with every static or dynamic struct so that programs can reflect type information.
-
-`tnsl.reflect._member` *should* be defined as a raw struct which contains minimum information for member variable identification within a type. The information need not be stored with every member variable, but should be stored somewhere such that the `tnsl.reflect._get` method can make use of it.
-
-`tnsl.reflect._method` *must* be defined as a raw struct which contains minimum information for method identification within a type. The information need not be stored with every member function, but should be stored somewhere such that the `tnsl.reflect._call` method can make use of it.
-
-`tnsl.reflect._is` *must* be defined as a function taking two parameters of type `tnsl.reflect._type` and returning a single `bool` as output. This function is called when the `is` operator is envoked.
-
-`tnsl.reflect._get` *should* be defined as a function taking three parameters. The first parameter will be of type `tnsl.reflect._type`, the second parameter will be of type `~void`, and the third parameter will be of type `tnsl.reflect._member`. The function will return a single `~void` as output.
-
-In the parameters, the first relates to the type of the struct given, or at least how the callee views the struct. The second is a pointer to the struct itself. The third is the requested member to get. The `~void` returned must point to the requested value.
-
-`tnsl.reflect._call` *must* be defined as a function taking four parameters. The first parameter will be of type `tnsl.reflect._type`, the second parameter will be of type `~void`, the third parameter will be of type `tnsl.reflect._method`, and the fourth parameter will be of type `~void`. The function will return a single `~void` as output.
-
-In the parameters, the first relates to the type of the struct given, or at least how the callee views the struct. The second is a pointer to the struct itself. The third is the requested method to call. The fourth is a pointer to the parameters for the method. The `~void` returned must point to the return value of the method.
-
-### 2.2 - Memory allocation and de-allocation
-
-`tnsl.algo._alloc` *must* be defined as a function taking a single parameter of type `uint` as the number of bytes to allocate and returning a single `~void` as the pointer to the allocated memory. The memory must be allocated from the heap.
-
-`tnsl.algo._salloc` *should* be defined as a function taking a single parameter of type `uint` as the number of bytes to allocate and returning a single `~void` as the pointer to the allocated memory. The memory must be allocated from the stack.
-
-`tnsl.algo._dealloc` *must* be defined as a function taking a single parameter of type `~void` as the pointer to a chunk of allocated memory. The function should deallocate the memory.
-
-### 2.3 - Expanded Types Extension
-
-`tnsl.box._vect` *must* be a raw struct which vector or simd instructions can be preformed on.
-
-`tnsl.box._string` *must* be a raw struct which stores a string of text. This text may be ASCII or Unicode, and should be stored as `uint8` values internally.
-
-## Section 3 - Cross calling C
+# The TNSL Calling ABI
## License
diff --git a/spec/5.md b/spec/5.md
new file mode 100644
index 0000000..1f5a7ac
--- /dev/null
+++ b/spec/5.md
@@ -0,0 +1,101 @@
+# Related Features
+
+## Section 1 - Style Guide
+
+This style guide is primarially for anyone working on tnsl-lang and to a baseline good practice. However, different programmers and groups will feel differently, the real recommendation is to keep your project consistant. Pick and choose what you need such that it fits your needs and everyone is on board, just keep it consistant.
+
+This section will probably feel less formal than the others simply due to how subjective things are.
+
+### Tabs or Spaces
+
+You will for the most part see tabs being used over spaces in tnsl-lang. This is not to keep file sizes down, but instead so that anyone can tweak how the files look to fit their asthetic best without affecting anyone else. Adjust tab sizing on your machine and it won't change it on mine.
+
+### Naming Convention
+
+NOTE: Remember that naming convention is no substitute for readability. If your names don't make sense, neither does your code. x, y, and z may be fine, but that doesn't help anyone else figure out what you're using them for. If a particular implementation *does* use variables that are hard to name, feel free to use letter identifiers, but add some short comments to explain what you're doing and how (see comments for more info).
+
+- UPPER_SNAKE_CASE for constants and enum values
+
+- lowerCamelCase for functions, and methods
+
+- UpperCamelCase or flatcase for enums, types, and interfaces
+ - it is recommended that interfaces start with the letter i
+
+- lower_snake_case (hungarian notation acceptable) for type/struct members, variables
+
+- flatcase for modules
+
+## Comments
+
+Comments should strive to tell programmers what a function does or what a struct's member is for rather than how it goes about doing/generating said thing. Particularly obtuse implimentations are free to use comments to explain their code.
+
+Comment blocks starting with an extra number sign `/##` are documentation comments. If they are at the top of the file, they provide either info about the file or license information. If they appear directly before (or joined to using `#;`) a function or method they explain what the function or method does.
+
+## Directory Structure
+
+`src` will be the name of the root source files/folders, `build` will be the name of the outputed files/folders.
+
+The name of the *main* root file (there may be multiple root files) will be the project folder name followed by .tnsl (example: project tnslc's root file is `src/tnslc.tnsl`).
+
+Sub-modules shall be contained in their own folder, and the main entry point to the module will be named the same as that folder followed by .tnsl (example: module `tnsl.alg` in libtnsl has the main entry point for the module `/src/alg/alg.tnsl`).
+
+## Section 2 - Compiler Options
+
+An exhaustive list of all compiler options can be found in the spec for tnslc, but these are a general sub-set for working on lower-level projects and language bootstrapping.
+
+### ISA Options
+
+The tnslc compiler can output for a variety of backends. These can be set with the `--arch <desired isa>` option.
+
+### Pre-processor
+
+tnslc can preemptively set pre-processor variables using the `--V "VARIABLE=value, VARIABLE2=value2, ..."` option.
+
+### Standard Library
+
+Access to the standard library can be disabled (bare metal mode) by using the `--no-libtnsl` flag. Also use this to build the standard library as it will attempt to link improperly otherwise.
+
+### T-LETs
+
+What T-LETs exactly are is discussed later. You can have tnslc produce them by passing the `--otype tlet` flag.
+
+## Section 3 - The Pre-Processor
+
+An exhaustive account of the full pre-processor can be found in the tnslc specification.
+
+### Including Other Files
+
+Use the `include` directive to include other code. This can be a library using single quotation marks (example: `:include 'tnslc'`), another file using a path with double quotes (example: `:include "c.tnsl"` reads as `:include "./c.tnsl"`), or a module in a subfolder using expanded syntax (`:include "some_module"` reads as `:include "./some_module/some_module.tnsl"`).
+
+No header guard is needed, tnslc can pick up on if a file has already been included in the project.
+
+Cyclic dependency for files is fine. Cyclic dependency for structs is not.
+
+## Section 4 - libtnsl
+
+An exhaustive list of all features included in the standard libtnsl is provided in the libtnsl spec. This is a short list of minimum functions a libtnsl must provide to make full use of the tnsl programming language.
+
+### Method and type resolution for non-raw types
+
+**TBD - this sub-section is under construction**
+
+The type `tnsl.reflect.type` must exist and must be a raw struct. This is for storing type information.
+
+The module `tnsl.reflect` must provide the following functions/methods:
+
+- `type._get_member_ [tnsl.reflect.library]`
+- `tnsl.reflect._is (type check, base) [bool]`
+
+### Vector types
+
+The type `tnsl.vector.vector` must exist. This is the generic simd/vector type and is referenced by `vect`.
+
+## Section 5 - TNSL-Lang Export Trees (T-LETs)
+
+TNSL doesn't use header files, and downloading full source code for every library being referenced would be a pain. This is where T-LETs come in. T-LETs contain a tree of all exported modules, functions, types, methods, and doc comments from a project. They are more compact and are simply named `<project name>.tlet`.
+
+## License
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
diff --git a/spec/Appendices.md b/spec/Appendices.md
index 7904af5..924be70 100644
--- a/spec/Appendices.md
+++ b/spec/Appendices.md
@@ -23,8 +23,6 @@
; - beginning of statement, end of previous statement
- : - beginning of pre-processor statement, end of previous
-
# - line comment, ends at newline
@@ -297,8 +295,41 @@ NOTE: Static structs *can* allow generics so long as they do not store said gen
Variable width structs (dynamic structs) can accomodate generics and variable width members. Dynamic structs may extend static structs or other dynamic structs. By extending a dynamic struct, even if one makes no use of the dynamic members, their struct is automatically a dynamic struct. These structs offer the least control over memory, and slightly slower call times, but offer the most flexability to the programmer.
+## Appendix D - When can I use...?
+
+### Core Language
+
+The core language encompases what you would expect from any C-like language:
+- Modules
+- Variables
+- Enums
+- Types
+- Functions
+- Methods
+- Interfaces
+- Scalar Operators
+- Control Flow
+- Anonymous Functions
+- Inline Assembly
+- Interop with C ABI
+
+### Advanced Language Features
+These may depend on support from `libtnsl`, though they are still considered "standard" and any complete implementation of TNSL must include them.
+The table below shows what parts of the standard library must be present for the features to work as designed:
+
+| Feature | libtnsl - `reflect` | libtnsl - `thread` | libtnsl - `stream` |
+| --------------- | ------------------- | ------------------ | ------------------ |
+| Runtime type reflection | Yes | - | - |
+| Threads | - | Yes | - |
+| Mutex | - | Yes | - |
+| Coroutines | - | Yes | - |
+| Generators | - | Yes | - |
+| Loop over Generator | - | Yes | - |
+| Stream | - | - | Yes |
+| Stream Operators | - | - | Yes |
+| Loop over Streams | - | Yes | Yes |
-## Appendix D - UN7+1
+## Appendix Z - UN7+1
Unicode Non-standard 7+1 bit (UN7+1) encoding is a non-standard way to represent any unicode character using a series of 8-bit values. The first bit in the 8-bit sequence represents if the next 8-bit sequence is included in the character code, the other seven bits are part of the character code.
@@ -317,4 +348,4 @@ Examples:
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. \ No newline at end of file
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
diff --git a/spec/README.md b/spec/README.md
index 67f7e39..2a3f652 100644
--- a/spec/README.md
+++ b/spec/README.md
@@ -1,47 +1,54 @@
-Version 0.0.1
-# The TNSL Language Specification
+# The TNSL Specification
+Version 0.0.2
## Forward
-I forgot what TNSL stands for. I now worry that it's one of those "ATM Machine" situations.
+This is mostly meant to be a collection of valid TNSL syntax that interested parties can use to learn the language by example. Explanations are provided alongside. In-depth explanations may be provided for features which use a bit of "compiler magic". One goal of the language is to keep "compiler magic" to a minimum while still providing quality of life constructs for programmers to use, so these should be few.
+
+Also, I forgot what TNSL stands for. I now worry that it's one of those "ATM Machine" situations.
-CircleShift
## Chapter Index
-1. [The Language](./1.md)
-
+1. [The Core Language](./1.md)
- Files
- Blocks
- - Statements
- Types
+ - Basic Statements
- Operators
- - `raw` and `asm`
+ - `asm`
+ - Cross Calling to C
-2. [Related features](./2.md)
-
- - Style guide
- - Compiler Options
- - The Pre-Processor
- - libtnsl
- - TNSL-lang export trees (T-LETs)
+2. [Advanced Features](./2.md)
+ - Relation to `libtnsl`
+ - Generators and Coroutines
+ - Streams
+ - Anonymous Functions
+ - Interfaces and Runtime Type Reflection
-3. [The TNSL Calling ABI](./3.md)
+3. [Tweaking Features](./3.md)
+ - Bare Metal
+ - `libtnsl` as it relates to Types
+4. [The TNSL Calling ABI](./4.md)
- Differences from C
- - Exporting C-like Functions
+ - Exporting and importing C-like Functions
- Types and Arrays in Memory
-4. [Features in Position](./4.md)
-
- - Bare Metal
- - `libtnsl` as it relates to Types
- - Cross Calling to C
+5. [Related Reading](./5.md)
+ - Style guide
+ - Compiler Options
+ - The Pre-Processor
+ - libtnsl
+ - TNSL export trees (TETs)
- [Appendix](./Appendices.md)
- A: Reserved Characters
- B: Reserved Words
- - C: Speed vs the Type System
+ - C: Speed of Advanced Features
+ - D: When can I use [Feature]?
+ - Z: UN7+1 (A unicode nonstandard format)
## License
diff --git a/tnslc/build.sh b/tnslc/build.sh
index 537c7cc..d66742f 100755
--- a/tnslc/build.sh
+++ b/tnslc/build.sh
@@ -7,7 +7,18 @@ mkdir -p $BUILD_DIR
mkdir -p $ARTIFACT_DIR
filename=$1
filename="${filename%.*}"
+
./ctc $filename.tnsl $ARTIFACT_DIR/$filename.asm
+
+if [ $? -ne 0 ]; then
+ exit $?
+fi
+
nasm -g -f elf64 -o $ARTIFACT_DIR/$filename.o $ARTIFACT_DIR/$filename.asm
+
+if [ $? -ne 0 ]; then
+ exit $?
+fi
+
gcc -ggdb -o $BUILD_DIR/$filename $ARTIFACT_DIR/$filename.o
diff --git a/tnslc/compile/codegen.tnsl b/tnslc/compile/codegen.tnsl
index 165fe12..2dfe9d5 100644
--- a/tnslc/compile/codegen.tnsl
+++ b/tnslc/compile/codegen.tnsl
@@ -1,4 +1,80 @@
+/; _indent (int idt)
+ /; loop (int i = 0; i < idt) [i++]
+ _printf(" \0")
+ ;/
+;/
/; generate (~utils.File fin, fout)
+ # Parse files into AST
+ parse.Node ast = parse.generate_ast(fin)
+ ast.update_children()
+
+ parse.print_ast(~ast)
+
+ # Create output buffer
+ CompBuf buffer
+ buffer.init()
+
+ # Transform into a module tree
+ Module mod
+ mod.init(~ast, ~buffer)
+ _gen_prims(~mod)
+ mod.update_children()
+
+ # Compile code
+ mod.compile(~buffer)
+
+ mod.print()
+
+ # Write assembly to output file
+ fout.create()
+ buffer.write_to(fout)
+ fout.close()
+
+ # Free all structs
+ mod.end()
+ buffer.end()
+ ast.end()
+;/
+
+/; _gen_prim(~Module m, int size, ~uint8 id)
+ ~Module mds = m`._create_methods(id)
+
+ Var t
+
+ Struct s
+ s.size = size
+ s.methods = NULL
+ s.members.init(len t)
+ s.name = utils.strcpy(id)
+ s._up = NULL
+
+ m`.structs.push(~s)
+;/
+
+/; _gen_prims (~Module m)
+
+ # One byte prims
+ _gen_prim(m, 1, "bool\0")
+ _gen_prim(m, 1, "uint8\0")
+ _gen_prim(m, 1, "int8\0")
+
+ # Two byte prims
+ _gen_prim(m, 2, "uint16\0")
+ _gen_prim(m, 2, "int16\0")
+
+ # Four byte prims
+ _gen_prim(m, 4, "uint32\0")
+ _gen_prim(m, 4, "int32\0")
+ _gen_prim(m, 4, "float32\0")
+
+ # Eight byte prims
+ _gen_prim(m, 8, "uint64\0")
+ _gen_prim(m, 8, "int64\0")
+ _gen_prim(m, 8, "float64\0")
+ _gen_prim(m, 8, "uint\0")
+ _gen_prim(m, 8, "int\0")
+ _gen_prim(m, 8, "float\0")
+ _gen_prim(m, 8, "void\0")
;/
diff --git a/tnslc/compile/compbuf.tnsl b/tnslc/compile/compbuf.tnsl
index b4ce261..d4bc640 100644
--- a/tnslc/compile/compbuf.tnsl
+++ b/tnslc/compile/compbuf.tnsl
@@ -26,13 +26,13 @@ struct CompBuf {
;/
/; write_to(~utils.File fout)
- fout`.write_cstr("BITS 64\0\n")
+ fout`.write_cstr("BITS 64\n\0")
fout`.write_cstr(self.sec_head.as_cstr())
- fout`.write_cstr("\nsection .data\0\n\n")
+ fout`.write_cstr("\nsection .data\n\n\0")
fout`.write_cstr(self.sec_data.as_cstr())
- fout`.write_cstr("\nsection .text\0\n\n")
+ fout`.write_cstr("\nsection .text\n\n\0")
fout`.write_cstr(self.sec_code.as_cstr())
;/
diff --git a/tnslc/compile/compile.tnsl b/tnslc/compile/compile.tnsl
index 338e28d..fbb9670 100644
--- a/tnslc/compile/compile.tnsl
+++ b/tnslc/compile/compile.tnsl
@@ -5,5 +5,6 @@
:import "function.tnsl"
:import "module.tnsl"
:import "codegen.tnsl"
+ :import "scope.tnsl"
;/
diff --git a/tnslc/compile/function.tnsl b/tnslc/compile/function.tnsl
index cf42db1..eec65ed 100644
--- a/tnslc/compile/function.tnsl
+++ b/tnslc/compile/function.tnsl
@@ -1,36 +1,237 @@
struct Function {
- ~uint8 name,
- utils.Vector
- inputs,
- outputs,
- ~parse.Node body
+ ~uint8 name,
+ utils.Vector
+ inputs,
+ outputs,
+ ~parse.Node _up,
}
/; method Function
- /; init (~uint8 name)
- self.name = name
- Var v
- self.inputs.init(len v)
- self.outputs.init(len v)
- ;/
+ /; init (~parse.Node n)
+ self.name = utils.strcpy(n`.data)
+ self._up = n
+ Var v
+ self.inputs.init(len v)
+ self.outputs.init(len v)
+ ;/
- /; end
- _delete(self.name)
- self.body`.end()
+ /; _resolve_dlist (~Module parent, ~parse.Node dl)
+ ~parse.Node tn = NULL
+ ~parse.Node n
+ int reg = 1
+ int stack_down = 0
+ /; loop (int i = 0; i < dl`.sub.count) [i++]
+ n = dl`.sub.get(i)
+ /; if (n`._type == parse.NTYPE_TYPE)
+ tn = n
+ ;; else if (n`._type == parse.NTYPE_ID)
+ /; if (tn == NULL)
+ _printf("Identifier declared in parameter list before any type was found!\n\0")
+ return
+ ;/
+ Var p
+ p.init(tn, n)
+ p._resolve_type(parent)
+ /; if (p.is_reg_passed() == true && reg < 7)
+ p.loc = reg
+ reg++
+ ;; else
+ p.loc = 0
+ p.loc = p.loc - stack_down
+ stack_down = stack_down - p.actual_size()
+ ;/
+ self.inputs.push(~p)
+ ;/
+ ;/
+ ;/
- ~Var v
- /; loop (int i = 0; i < self.inputs.count) [i++]
- v = self.inputs.get(i)
- v`.end()
- ;/
- self.inputs.end()
+ /; _resolve_tlist (~Module parent, ~parse.Node tl)
+ ~parse.Node n
+ parse.Node dummy
+ dummy.data = "### OUTPUT ###\0"
+ /; loop (int i = 0; i < tl`.sub.count) [i++]
+ n = tl`.sub.get(i)
+ /; if (n`._type == parse.NTYPE_TYPE)
+ Var r
+ r.init(n, ~dummy)
+ r._resolve_type(parent)
+ self.outputs.push(~r)
+ ;/
+ ;/
+ ;/
- /; loop (int i = 0; i < self.outputs.count) [i++]
- v = self.outputs.get(i)
- v`.end()
- ;/
- self.outputs.end()
- ;/
+ /; _resolve_type (~Module parent)
+ ~parse.Node _up = self._up
+ /; if (_up`.sub.count < 1)
+ return
+ ;/
+
+ ~parse.Node lst = _up`.sub.get(0)
+ /; if (lst`._type == parse.NTYPE_DLIST)
+ self._resolve_dlist(parent, lst)
+ /; if (_up`.sub.count > 1)
+ lst = _up`.sub.get(1)
+ ;/
+ ;/
+
+ /; if (lst`._type == parse.NTYPE_TLIST)
+ self._resolve_tlist(parent, lst)
+ ;/
+ ;/
+
+ /; _build_func(~Module parent, ~CompBuf cb) [Scope]
+ Scope out
+ out.init(parent, cb, self.name)
+ out.parent = NULL
+
+ /; if (parent`.e == true)
+ # Add to the global exports if the parent is exported
+ ~uint8 bl = out.base_label()
+ cb`.add_h("global \0")
+ cb`.add_h(bl)
+ cb`.add_h("\n\0")
+ _delete(bl)
+ ;/
+
+ # Write label and opening
+ out.place_base_label()
+ cb`.add_c(" push rbp\n\0")
+ cb`.add_c(" lea rbp, [rsp + 8]\n\0")
+ cb`.add_c(" push r10\n\0")
+ cb`.add_c(" push r11\n\0")
+ cb`.add_c(" push r12\n\0")
+ cb`.add_c(" push r13\n\0")
+ cb`.add_c(" push r14\n\0")
+ cb`.add_c(" push r15 ; scope init\n\n\0")
+
+ # Add all params to the scope
+ ~Var in
+ /; loop (int i = 0; i < self.inputs.count) [i++]
+ in = self.inputs.get(i)
+ out.mk_set_var(in)
+ ;/
+
+ return out
+ ;/
+
+ /; _end_func(~Scope scope, ~CompBuf cb)
+ cb`.add_c(" lea rsp, [rbp - 56]\n\0")
+ cb`.add_c(" pop r15\n\0")
+ cb`.add_c(" pop r14\n\0")
+ cb`.add_c(" pop r13\n\0")
+ cb`.add_c(" pop r12\n\0")
+ cb`.add_c(" pop r11\n\0")
+ cb`.add_c(" pop r10\n\0")
+ cb`.add_c(" pop rbp\n\0")
+ cb`.add_c(" ret ; scope end\n\n\n\0")
+
+ scope`.end()
+ ;/
+
+ /; _compile (~Module parent, ~CompBuf cb)
+ # Sanity check
+ ~parse.Node _up = self._up
+ /; if (_up`.sub.count < 1)
+ ~Scope s = self._build_func(parent, cb)
+ self._end_func(s, cb)
+ return
+ ;/
+
+ # Skip past parameters and outputs
+ int i = 0
+ ~parse.Node n = _up`.sub.get(i)
+ /; if (n`._type == parse.NTYPE_DLIST)
+ i++
+ /; if (_up`.sub.count > 1)
+ n = _up`.sub.get(1)
+ ;/
+ ;/
+
+ /; if (n`._type == parse.NTYPE_TLIST)
+ i++
+ ;/
+
+ # Create scope
+ Scope fscope = self._build_func(parent, cb)
+
+
+ # Compile and then end scope
+ self._compile_statements(~fscope, i)
+ self._end_func(~fscope, cb)
+ ;/
+
+ #
+ # Compiling individual statements
+ #
+
+ /; _compile_statements (~Scope s, int off)
+ ~parse.Node _up = self._up
+ ~parse.Node n = NULL
+ /; loop (off < _up`.sub.count) [off++]
+ n = _up`.sub.get(off)
+ /; if (n`._type == parse.NTYPE_FLOW_CONTROL)
+ self._compile_flow_control(s, n)
+ ;; else if (n`._type == parse.NTYPE_ASM)
+ s`.cb`.add_c(" \0")
+ s`.cb`.add_c(n`.data)
+ s`.cb`.add_c(" ; User defined asm\n\0")
+ ;/
+ ;/
+ ;/
+
+ # Should handle break, continue, and return
+ /; _compile_flow_control (~Scope s, ~parse.Node n)
+ /; if (utils.strcmp(n`.data, "return\0") == true)
+ # Compute value and return
+ self._compile_value(s, n)
+ ;/
+ ;/
+
+ # Should handle computing a value, delegate to other funcs when needed
+ /; _compile_value (~Scope s, ~parse.Node n)
+ ;/
+
+ /; _print (int idt)
+ _indent(idt)
+ _printf("{ Function : \0")
+ _printf(self.name)
+ _printf("\n\0")
+
+ _indent(idt)
+ _printf(" inputs:\n\0")
+ ~Var prtv
+ /; loop (int i = 0; i < self.inputs.count) [i++]
+ prtv = self.inputs.get(i)
+ prtv`._print(idt + 1)
+ ;/
+
+ _indent(idt)
+ _printf(" outputs:\n\0")
+ /; loop (int i = 0; i < self.outputs.count) [i++]
+ prtv = self.outputs.get(i)
+ prtv`._print(idt + 1)
+ ;/
+
+ _indent(idt)
+ _printf("}\n\0")
+ ;/
+
+ /; end
+ _delete(self.name)
+
+ ~Var v
+ /; loop (int i = 0; i < self.inputs.count) [i++]
+ v = self.inputs.get(i)
+ v`.end()
+ ;/
+ self.inputs.end()
+
+ /; loop (int i = 0; i < self.outputs.count) [i++]
+ v = self.outputs.get(i)
+ v`.end()
+ ;/
+ self.outputs.end()
+ ;/
;/
diff --git a/tnslc/compile/module.tnsl b/tnslc/compile/module.tnsl
index 6dbef6c..e46c219 100644
--- a/tnslc/compile/module.tnsl
+++ b/tnslc/compile/module.tnsl
@@ -1,68 +1,367 @@
+int SEARCH_VAR = 0
+int SEARCH_STRUCT = 1
+int SEARCH_FUNC = 2
+int SEARCH_SUB = 3
+
struct Module {
- # Text name of module
- ~uint8 name,
+ # Text name of module
+ ~uint8 name,
+
+ # Various contained elements
+ utils.Vector
+ vars,
+ structs,
+ funcs,
+ subs,
- # Various contained elements
- utils.Vector
- vars,
- structs,
- funcs,
- subs,
+ # Whether we export or not
+ bool e,
- # Whether we export or not
- bool e
+ # Parent module
+ ~Module parent
}
/; method Module
-
- /; init (~uint8 name, bool exp)
- Var v
- Struct s
- Function f
- Module m
+
+ /; _init
+ Var v
+ Struct s
+ Function f
+ Module m
+
+ self.parent = NULL
+
+ self.vars.init(len v)
+ self.structs.init(len s)
+ self.funcs.init(len f)
+ self.subs.init(len m)
+ ;/
+
+ /; init (~parse.Node mod, ~CompBuf buf)
+ self._init()
+ self.name = utils.strcpy(mod`.data)
+ self.e = mod`._type == parse.NTYPE_EXPORT
+
+ self._from_tree(mod, buf)
+ ;/
+
+ /; update_children
+ ~Module sub
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ sub = self.subs.get(i)
+ sub`.update_children()
+ sub`.parent = ~self
+ ;/
+
+ ~Struct str
+ utils.Vector n
+ /; loop (int i = 0; i < self.structs.count) [i++]
+ str = self.structs.get(i)
+
+ n.from_cstr("_#\0")
+ n.push_cstr(str`.name)
+
+ sub = self._find_sub(n.as_cstr())
+ str`.methods = sub
+
+ n.end()
+ ;/
+ ;/
+
+ /; _create_methods (~uint8 name) [~Module]
+ utils.Vector n
+ n.from_cstr("_#\0")
+ n.push_cstr(name)
+
+ Module m
+ m._init()
+ m.name = n.as_cstr()
+ m.e = self.e
+ self.subs.push(~m)
+
+ int i = self.subs.count - 1
+ ~Module out = self.subs.get(i)
+ return out
+ ;/
+
+ /; _from_tree (~parse.Node mod, ~CompBuf buf)
+ ~parse.Node sub
+ /; loop (int i = 0; i < mod`.sub.count) [i++]
+ sub = mod`.sub.get(i)
+
+ # TODO: Vars, Enums, Method blocks
+
+ /; if (sub`._type == parse.NTYPE_MODULE)
+ Module m
+ m.init(sub, buf)
+ self.subs.push(~m)
+ ;; else if (sub`._type == parse.NTYPE_EXPORT)
+ Module m
+ m.init(sub, buf)
+ self.subs.push(~m)
+ ;; else if (sub`._type == parse.NTYPE_STRUCT)
+ ~Module m = self._create_methods(sub`.data)
+ Struct s
+ s.init(sub)
+ self.structs.push(~s)
+ ;; else if (sub`._type == parse.NTYPE_FUNCTION)
+ Function f
+ f.init(sub)
+ self.funcs.push(~f)
+ ;; else if (sub`._type == parse.NTYPE_DECL)
+ self._decl(sub)
+ ;; else if (sub`._type == parse.NTYPE_ASM)
+ buf`.add_h(sub`.data)
+ buf`.add_h("\n\0")
+ ;/
+ ;/
+ ;/
+
+ /; _decl (~parse.Node decl)
+ /; if (decl`.sub.count < 1)
+ return
+ ;/
+
+ ~parse.Node tn = decl`.sub.get(0)
+ /; if (tn`._type !== parse.NTYPE_TYPE)
+ # Type must be first
+ return
+ ;/
+
+ ~parse.Node id
+ /; loop (int i = 1; i < decl`.sub.count) [i++]
+ id = decl`.sub.get(i)
+ /; if (tn`._type == parse.NTYPE_ID)
+ # Add a new variable to the list
+ Var v
+ v.init(tn, id)
+ self.vars.push(~v)
+ ;/
+ ;/
+ ;/
+
+ /; compile (~CompBuf cb)
+ # First, since all the types are in place, we need to size all of them.
+ self._size_structs()
+
+ # Finally, write all functions to the code section
+ self._compile(cb)
+ ;/
+
+ /; _size_structs
+ ~Struct s
+ /; loop (int i = 0; i < self.structs.count) [i++]
+ s = self.structs.get(i)
+ /; if (s`.size == 0)
+ s`._compute_size()
+ ;/
+ ;/
+
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ v`._resolve_type(~self)
+ ;/
+
+ ~Function f
+ /; loop (int i = 0; i < self.funcs.count) [i++]
+ f = self.funcs.get(i)
+ f`._resolve_type(~self)
+ ;/
+
+ ~Module m
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ m = self.subs.get(i)
+ m`._size_structs()
+ ;/
+ ;/
+
+ /; _compile (~CompBuf cb)
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ v`._static_compile(~self, cb)
+ ;/
+
+ ~Function f
+ /; loop (int i = 0; i < self.funcs.count) [i++]
+ f = self.funcs.get(i)
+ f`._compile(~self, cb)
+ ;/
+
+ ~Module m
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ m = self.subs.get(i)
+ m`._compile(cb)
+ ;/
+ ;/
+
+ #
+ # Functions to search sub-modules
+ #
+
+ /; find (int stype, ~utils.Vector key) [~void]
+ /; if (key`.count < 1)
+ return NULL
+ ;/
+ return self._find(stype, key, 0)
+ ;/
+
+ /; _find (int stype, ~utils.Vector key, int lvl) [~void]
+
+ /; if ((lvl + 1) < key`.count)
+ ~Module m
+ ~~uint8 str = key`.get(lvl)
+
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ m = self.subs.get(i)
+ /; if (utils.strcmp(str`, m`.name) == true)
+ ~void v = m._find(stype, key, lvl + 1)
+ /; if (v != NULL)
+ return v
+ ;/
+ ;/
+ ;/
+ ;; else
+ ~~uint8 str = key`.get(key`.count - 1)
+ ~void out = NULL
+ /; if (stype == SEARCH_VAR)
+ out = self._find_var(str`)
+ ;; else if (stype == SEARCH_STRUCT)
+ out = self._find_struct(str`)
+ ;; else if (stype == SEARCH_FUNC)
+ out = self._find_func(str`)
+ ;; else if (stype == SEARCH_SUB)
+ out = self._find_sub(str`)
+ ;/
+
+ /; if (out !== NULL)
+ return out
+ ;/
+ ;/
+
+ /; if (lvl == 0 && self.parent !== NULL)
+ return self.parent`._find(stype, key, 0)
+ ;/
+
+ return NULL
+ ;/
+
+ /; _find_var (~uint8 name) [~void]
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ /; if (utils.strcmp(name, v`.name) == true)
+ return v
+ ;/
+ ;/
+ return NULL
+ ;/
+
+ /; _find_struct (~uint8 name) [~void]
+ ~Struct s
+ /; loop (int i = 0; i < self.structs.count) [i++]
+ s = self.structs.get(i)
+ /; if (utils.strcmp(name, s`.name) == true)
+ return s
+ ;/
+ ;/
+ return NULL
+ ;/
+
+ /; _find_func (~uint8 name) [~void]
+ ~Function f
+ /; loop (int i = 0; i < self.funcs.count) [i++]
+ f = self.funcs.get(i)
+ /; if (utils.strcmp(name, f`.name) == true)
+ return f
+ ;/
+ ;/
+ return NULL
+ ;/
+
+ /; _find_sub (~uint8 name) [~void]
+ ~Module m
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ m = self.subs.get(i)
+ /; if (utils.strcmp(name, m`.name) == true)
+ return m
+ ;/
+ ;/
+ return NULL
+ ;/
+
+ /; print
+ self._print(0)
+ ;/
+
+ /; _print (int indent)
+
+ _indent(indent)
+ _printf("{ Module : \0")
+ _printf(self.name)
+ _printf("\n\0")
+
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ v`._print(indent + 1)
+ ;/
+
+ ~Struct s
+ /; loop (int i = 0; i < self.structs.count) [i++]
+ s = self.structs.get(i)
+ s`._print(indent + 1)
+ ;/
- self.vars.init(len v)
- self.structs.init(len s)
- self.funcs.init(len f)
- self.subs.init(len m)
+ ~Function f
+ /; loop (int i = 0; i < self.funcs.count) [i++]
+ f = self.funcs.get(i)
+ f`._print(indent + 1)
+ ;/
- self.name = name
- self.e = exp
- ;/
+ ~Module m
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ m = self.subs.get(i)
+ m`._print(indent + 1)
+ ;/
- /; end
- _delete(self.name)
+ _indent(indent)
+ _printf("}\n\0")
+ ;/
- ~Var v
- /; loop (int i = 0; i < self.vars.count) [i++]
- v = self.vars.get(i)
- v`.end()
- ;/
- self.vars.end()
+ /; end
+ _delete(self.name)
- ~Struct s
- /; loop (int i = 0; i < self.structs.count) [i++]
- s = self.structs.get(i)
- s`.end()
- ;/
- self.structs.end()
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ v`.end()
+ ;/
+ self.vars.end()
- ~Function f
- /; loop (int i = 0; i < self.funcs.count) [i++]
- f = self.funcs.get(i)
- f`.end()
- ;/
- self.funcs.end()
+ ~Struct s
+ /; loop (int i = 0; i < self.structs.count) [i++]
+ s = self.structs.get(i)
+ s`.end()
+ ;/
+ self.structs.end()
- ~Module m
- /; loop (int i = 0; i < self.subs.count) [i++]
- m = self.subs.get(i)
- m`.end()
- ;/
- self.subs.end()
+ ~Function f
+ /; loop (int i = 0; i < self.funcs.count) [i++]
+ f = self.funcs.get(i)
+ f`.end()
+ ;/
+ self.funcs.end()
- ;/
+ ~Module m
+ /; loop (int i = 0; i < self.subs.count) [i++]
+ m = self.subs.get(i)
+ m`.end()
+ ;/
+ self.subs.end()
+ ;/
;/
diff --git a/tnslc/compile/scope.tnsl b/tnslc/compile/scope.tnsl
index 7822125..1afaeab 100644
--- a/tnslc/compile/scope.tnsl
+++ b/tnslc/compile/scope.tnsl
@@ -1,123 +1,232 @@
struct Scope {
~uint8 name,
-
- utils.Vector
- stack_vars,
- reg_vars,
+ ~Module mod,
+ ~CompBuf cb,
~Scope parent,
-
- int
- next_const,
- next_bool
-}
-/; method Scope
- /; init (~uint8 name)
- self.name = name
+ utils.Vector vars,
- Variable v
- self.stack_vars.init(len v)
- self.reg_vars.init(len v)
+ int unique
+}
+
+/; _recursive_mod_name(~Module mod, ~utils.Vector vec)
+ ~Module p = mod`.parent
+ /; if (p !== NULL)
+ _recursive_mod_name(p, vec)
+ /; if (vec`.count !== 0)
+ vec`.push_char('.')
+ ;/
+ ;/
+ vec`.push_cstr(mod`.name)
+;/
- self.next_const = 0
- self.next_bool = 0
+/; _recursive_scope_name(~Scope s, ~utils.Vector vec)
+ ~void p = s`.parent
+ /; if (p == NULL)
+ ~void m = s`.mod
+ /; if (m !== NULL)
+ _recursive_mod_name(m, vec)
+ /; if (vec`.count > 0)
+ vec`.push_char('.')
+ ;/
+ ;/
+ ;; else
+ _recursive_scope_name(p, vec)
;/
+ vec`.push_cstr(s`.name)
+;/
+/; method Scope
+ /; init (~Module mod, ~CompBuf cb, ~uint8 name)
+ self.name = utils.strcpy(name)
+ self.mod = mod
+ self.cb = cb
+ self.parent = NULL
+ self.unique = 0
+
+ Var v
+ self.vars.init(len v)
+ ;/
+
/; end
_delete(self.name)
- ~Variable v
- /; loop (int i = 0; i < self.stack_vars.count) [i++]
- v = self.stack_vars.get(i)
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
v`.end()
;/
+ self.vars.end()
+ ;/
- /; loop (int i = 0; i < self.reg_vars.count) [i++]
- v = self.reg_vars.get(i)
- v`.end()
+ #
+ # Make variables
+ #
+
+ /; _next_reg_slot [uint]
+ uint out = 9
+ /; if (self.parent !== NULL)
+ out = self.parent`._next_reg_slot()
+ ;/
+
+ /; if (out == 0)
+ return out
;/
+
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ /; if (v`.loc > 0)
+ out++
+ /; if (out > 16)
+ return 0
+ ;/
+ ;/
+ ;/
+
+ return out
;/
- /; _name_rec (~utils.Vector out)
+ /; _next_stack_slot [uint]
+ uint out = 0
/; if (self.parent !== NULL)
- self.parent`._name_rec(out)
- out`.push_cstr("#")
+ out = self.parent`._next_stack_slot()
+ ;/
+
+ ~Var v
+ /; loop (int i = 0; i < self.vars.count) [i++]
+ v = self.vars.get(i)
+ /; if (v`.loc < 0)
+ out = out - v`.actual_size()
+ ;/
+ ;/
+
+ return out
+ ;/
+
+ /; mk_set_var (~Var src)
+ Var out = src`.copy()
+
+ /; if (src`.is_reg_passed() == true)
+ out.loc = self._next_reg_slot()
+ /; if (out.loc == 0)
+ out.loc = self._next_stack_slot()
+ ;/
+ ;; else
+ out.loc = self._next_stack_slot()
+ ;/
+
+ ~int32 p = out.top_ptrc()
+ /; if (p == NULL)
+ out.set(self.cb, src)
+ ;; else if (p` == 0)
+ out.set_ref(self.cb, src)
+ ;; else
+ out.set(self.cb, src)
;/
- out`.push_cstr(self.name)
+ self.vars.push(~out)
+ ;/
+
+ #
+ # Sub scope
+ #
+
+ /; mk_sub (~uint8 name) [Scope]
+ Scope out
+ out.init(self.mod, self.cb, name)
+ out.parent = ~self
+ return out
+ ;/
+
+ # Generate a garantueed unique name for the sub scope, using
+ # the provided name as a base
+ /; gen_sub(~uint8 name) [Scope]
+ utils.Vector true_name
+ true_name.init(1)
+
+ # Append a 'unique' number
+ ~uint8 u = utils.int_to_str(self.unique)
+ true_name.push_char('#')
+ true_name.push_cstr(u)
+ true_name.push_char('#')
+ true_name.push_cstr(name)
+ _delete(u)
+
+ Scope out = self.mk_sub(true_name.as_cstr())
+ true_name.end()
+
+ # Inc for subsequent names
+ self.unique++
+
+ return out
;/
+
+ #
+ # Label generation
+ #
+
+
/; _base_label [utils.Vector]
utils.Vector out
out.init(1)
- ~uint8 mod_str = self.current.label_prefix()
- out.push_cstr(mod_str)
- _delete(mod_str)
-
- self._name_rec(~out)
+ _recursive_scope_name(~self, ~out)
return out
;/
- /; label_start [~uint8]
- utils.Vector base = self._base_label()
- base.push_cstr("#start\0")
- return base.as_cstr()
+ /; base_label [~uint8]
+ utils.Vector v = self._base_label()
+ return v.as_cstr()
;/
- /; label_rep [~uint8]
- utils.Vector base = self._base_label()
- base.push_cstr("#rep\0")
- return base.as_cstr()
+ /; place_base_label
+ ~uint8 bl = self.base_label()
+ self.cb`.add_c(bl)
+ self.cb`.add_c(":\n\0")
+ _delete(bl)
;/
- /; label_end [~uint8]
- utils.Vector base = self._base_label()
- base.push_cstr("#end\0")
- return base.as_cstr()
+ /; start_label [~uint8]
+ utils.Vector v = self._base_label()
+ v.push_cstr("#start\0")
+ return v.as_cstr()
;/
-
- /; label_next_const [~uint8]
- utils.Vector base = self._base_label()
- base.push_cstr("#const\0")
-
- ~uint8 str = utils.int_to_str(self.next_const)
- base.push_cstr(str)
- self.next_const++
- _delete(str)
- return base.as_cstr()
+ /; place_start_label
+ ~uint8 sl = self.start_label()
+ self.cb`.add_c(sl)
+ self.cb`.add_c(":\n\0")
+ _delete(sl)
;/
- /; label_bool [~uint8]
- utils.Vector base = self._base_label()
- base.push_cstr("#bool\0")
-
- ~uint8 str = utils.int_to_str(self.next_bool)
- base.push_cstr(str)
- self.next_bool++
- _delete(str)
-
- return base.as_cstr()
+ /; rep_label [~uint8]
+ utils.Vector v = self._base_label()
+ v.push_cstr("#rep\0")
+ return v.as_cstr()
;/
- /; label_bool_adv
- self.next_bool++
+ /; place_rep_label
+ ~uint8 rl = self.rep_label()
+ self.cb`.add_c(rl)
+ self.cb`.add_c(":\n\0")
+ _delete(rl)
;/
- /; subscope (~uint8 name) [Scope]
- Scope out
-
- utils.Vector str
- str.from_cstr(name)
- _delete(name)
-
- out.init(str.as_cstr(), self.current)
- out.parent = ~self
+ /; end_label [~uint8]
+ utils.Vector v = self._base_label()
+ v.push_cstr("#end\0")
+ return v.as_cstr()
+ ;/
- return out
+ /; place_end_label
+ ~uint8 el = self.end_label()
+ self.cb`.add_c(el)
+ self.cb`.add_c(":\n\0")
+ _delete(el)
;/
;/
diff --git a/tnslc/compile/struct.tnsl b/tnslc/compile/struct.tnsl
index d175aef..eba1488 100644
--- a/tnslc/compile/struct.tnsl
+++ b/tnslc/compile/struct.tnsl
@@ -3,44 +3,249 @@ struct Struct {
~uint8 name,
~Module methods,
utils.Vector members,
- int size
+ int size,
+
+ ~parse.Node _up
}
+~uint8 PRIMITIVE_1 = "bool,uint8,int8\0"
+~uint8 PRIMITIVE_2 = "uint16,int16\0"
+~uint8 PRIMITIVE_4 = "uint32,int32,float32\0"
+~uint8 PRIMITIVE_8 = "uint64,int64,float64,int,uint,float,void\0"
+
+/; is_primitive (~parse.Node tn) [int]
+ /; if (tn`.sub.count < 1)
+ return 0
+ ;/
+
+ ~parse.Node n = tn`.sub.get(0)
+
+ # Check for pointer, array
+ /; if (n`._type == parse.NTYPE_PRE_OP)
+ return 8
+ ;/
+
+ # Check for ref
+ n = tn`.sub.get(tn`.sub.count - 1)
+ /; if (n`._type == parse.NTYPE_POST_OP)
+ return 8
+ ;/
+
+ return 0
+;/
+
+/; _print_type(~parse.Node tn)
+ ~parse.Node n
+ bool seen_id = false
+ /; loop (int i = 0; i < tn`.sub.count) [i++]
+
+ n = tn`.sub.get(i)
+
+ /; if (n`._type == parse.NTYPE_ID)
+ /; if (seen_id == true)
+ _printf(".\0")
+ ;/
+ _printf(n`.data)
+ seen_id = true
+ ;; else
+ return
+ ;/
+ ;/
+;/
+
+# Might be wrong
+/; _type_is_ptr (~parse.Node n) [bool]
+ # Sanity
+ /; if (n`.sub.count < 1)
+ return false
+ ;/
+
+ ~parse.Node op = n`.sub.get(0)
+ /; if (op`._type == parse.NTYPE_PRE_OP)
+ return true
+ ;/
+
+ op = n`.sub.get(n`.sub.count - 1)
+ /; if (op`._type == parse.NTYPE_POST_OP)
+ return true
+ ;/
+
+ return false
+;/
+
/; method Struct
- /; init (~uint8 name)
- self.name = name
- Var v
- self.members.init(len v)
- ;/
+ /; init (~parse.Node node)
+ self._up = node
+ self.size = 0
+ self.methods = NULL
+ self.name = utils.strcpy(node`.data)
+ Var v
+ self.members.init(len v)
+ ;/
+
+ /; _print (int idt)
+ _indent(idt)
+ _printf("{ Struct : \0")
+ _printf(self.name)
+ _printf("\n\0")
+
+ _indent(idt)
+ _print_num(" size: %d\n\0", self.size)
+
+ _indent(idt)
+ _printf(" members:\n\0")
+
+ ~Var v
+ /; loop (int i = 0; i < self.members.count) [i++]
+ v = self.members.get(i)
+ v`._print(idt + 1)
+ ;/
+
+ _indent(idt)
+ _printf("}\n\0")
+ ;/
+
+ /; add_member(~parse.Node tn, ~parse.Node id)
+ Var v
+ v.init(tn, id)
+ v._resolve_type(self.methods)
+ self.members.push(~v)
+ ;/
+
+ /; get_member(~uint8 name) [~Var]
+ ~Var out = NULL
+
+ ~Var v
+ /; loop (int i = 0; i < self.members.count) [i++]
+ v = self.members.get(i)
+ /; if (utils.strcmp(v`.name, name) == true)
+ return v
+ ;/
+ ;/
+
+ return out
+ ;/
+
+ /; _dlist [~parse.Node]
+ ~parse.Node up = self._up
+ ~parse.Node n
+ /; loop (int i = 0; i < up`.sub.count) [i++]
+ n = up`.sub.get(i)
+ /; if (n`._type == parse.NTYPE_DLIST)
+ return n
+ ;/
+ ;/
+ return NULL
+ ;/
+
+ /; _compute_size
+ /; if (self.size !== 0)
+ return
+ ;/
+
+ self.size = self.size - 1
+
+ int total = 0
+ ~parse.Node up = self._dlist()
+ ~parse.Node tn = NULL
+ ~parse.Node n = NULL
+ int add_size = 0
+ /; loop (int i = 0; i < up`.sub.count) [i++]
+ n = up`.sub.get(i)
+
+ /; if (n`._type == parse.NTYPE_TYPE)
+ # Store for generating new variables
+ tn = n
+ add_size = self._compute_type_size(n)
+ /; if (add_size == 0)
+ return
+ ;/
+ ;; else if (n`._type == parse.NTYPE_ID)
+ /; if (tn == NULL)
+ _printf("ERROR: Unable to find type when trying to create member for struct '\0")
+ _printf(self.name)
+ _printf("\n\0")
+ return
+ ;/
+ self.add_member(tn, n)
+ total = total + add_size
+ ;/
+ ;/
+
+ self.size = total
+ ;/
+
+ /; _compute_type_size(~parse.Node tn) [int]
+ ~Struct ft = self._find_type(tn)
+
+ /; if (ft == NULL)
+ # Type not found
+ _printf("ERROR: Unable to find type '\0")
+ _print_type(tn)
+ _printf("' for use in struct '\0")
+ _printf(self.name)
+ _printf("'\n\0")
+ return 0
+ ;/
+
+ /; if (_type_is_ptr(tn) == true)
+ return 8
+ ;/
+
+ /; if (ft !== NULL && ft`.size == 0)
+ ft`._compute_size()
+ ;/
+
+ /; if (ft`.size < 0)
+ # Cyclical dependency
+ _printf("ERROR: Cyclic struct definition: '\0")
+ _printf(ft`.name)
+ _printf("' imported from '\0")
+ _printf(self.name)
+ _printf("'\n\0")
+ return 0
+ ;/
+
+ return ft`.size
+ ;/
- /; add_member(~Var v)
- self.members.push(v)
- ;/
+ /; _find_type (~parse.Node tn) [~Struct]
+
+ # Init vector of strings
+ utils.Vector sv
+ sv.init(8)
- /; get_member(~uint8 name) [~Var]
- ~Var out = NULL
+ ~uint8 str
+ ~parse.Node n
+ bool seen_id = false
- ~Var v
- /; loop (int i = 0; i < self.members.count) [i++]
- v = self.members.get(i)
- /; if (utils.strcmp(v`.name, name) == true)
- return v
- ;/
- ;/
+ /; loop (int i = 0; i < tn`.sub.count) [i++]
+ n = tn`.sub.get(i)
+ /; if (n`._type == parse.NTYPE_ID)
+ str = n`.data
+ sv.push(~str)
+ seen_id = true
+ ;; else if (seen_id == true)
+ i = tn`.sub.count
+ ;/
+ ;/
- return out
- ;/
+ # Find struct and compute its size
+ ~Struct out = self.methods`.find(SEARCH_STRUCT, ~sv)
+ sv.end()
+ return out
+ ;/
- /; end
- _delete(self.name)
- ~Var v
- /; loop (int i = 0; i < self.members.count) [i++]
- v = self.members.get(i)
- v`.end()
- ;/
- self.members.end()
- ;/
+ /; end
+ _delete(self.name)
+ ~Var v
+ /; loop (int i = 0; i < self.members.count) [i++]
+ v = self.members.get(i)
+ v`.end()
+ ;/
+ self.members.end()
+ ;/
;/
diff --git a/tnslc/compile/var.tnsl b/tnslc/compile/var.tnsl
index 9526fc6..9748ed4 100644
--- a/tnslc/compile/var.tnsl
+++ b/tnslc/compile/var.tnsl
@@ -1,33 +1,466 @@
+# Location enum
+int VLOC_STCK = 2
+int VLOC_LITL = 1
+int VLOC_DATA = 0
+
+# Should be -2
+int32 PTYPE_NONE = 2
+# Should be -1
+int32 PTYPE_PTR = 1
+int32 PTYPE_REF = 0
+# 1 Arr is ptr to arr, larger #s are static size arrs
+int32 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,
- utils.Vector ptrc,
- int loc
+ ~uint8 name,
+ ~Struct _type,
+ utils.Vector ptrc,
+ int loc,
+
+ ~parse.Node _tn, _id
}
/; method Var
- /; init (~uint8 name)
- self.name = name
- self.ptrc.init(4)
- ;/
+ # Initial init function, requires type node and
+ # identifier node
+ /; init (~parse.Node tn, id)
+ self.name = utils.strcpy(id`.data)
+ self.ptrc.init(4)
+ self.loc = 0
+
+ self._tn = tn
+ self._id = id
+ ;/
+
+ /; copy [Var]
+ Var out
+ out.init(self._tn, self._id)
+ out._type = self._type
+ out.loc = self.loc
+
+ /; loop (int i = 0; i < self.ptrc.count) [i++]
+ ~int32 p = self.ptrc.get(i)
+ out.ptrc.push(p)
+ ;/
+
+ return out
+ ;/
+
+ /; top_ptrc [~int32]
+ # Sanity
+ /; if (self.ptrc.count < 1)
+ return NULL
+ ;/
+ ~int32 out = self.ptrc.get(self.ptrc.count - 1)
+ return out
+ ;/
+
+ /; _print (int idt)
+ _indent(idt)
+ _printf("{ Var : \0")
+ _printf(self.name)
+ _printf("\n\0")
+
+ _indent(idt)
+ _printf(" type: \0")
+ /; if (self._type !== NULL)
+ _printf(self._type`.name)
+ ;; else
+ _printf("(nil)\0")
+ ;/
+ _printf("\n\0")
+
+ _indent(idt)
+ _printf(" ptrc: \0")
+ ~int32 istr
+ /; loop (int i = 0; i < self.ptrc.count) [i++]
+ istr = self.ptrc.get(i)
+ _print_num("%d \0", istr`)
+ ;/
+ _printf("\n\0")
+
+ _indent(idt)
+ _printf("}\n\0")
+ ;/
+
+ /; _arr_ptr(~parse.Node a)
+ int32 ptr = 1
+ /; if (a`.sub.count > 0)
+ ~parse.Node l = a`.sub.get(0)
+ ptr = utils.cstr_to_int(l`.data)
+ /; if (ptr < 2)
+ return
+ ;/
+ ;/
+ self.ptrc.push(~ptr)
+ ;/
+
+ /; is_reg_passed [bool]
+ /; if (self.ptrc.count > 0)
+ return true
+ ;/
+ return false
+ ;/
+
+ /; actual_size [uint]
+ /; if (self.ptrc.count > 0)
+ return 8
+ ;; else if (self._type == NULL)
+ return 0
+ ;/
+
+ return self._type`.size
+ ;/
+
+ /; _reverse_ptrc
+ int max = self.ptrc.count / 2
+ ~int32 l, r
+ /; loop (int i = 0; i < max) [i++]
+ l = self.ptrc.get(i)
+ r = self.ptrc.get(self.ptrc.count - (i + 1))
+ int32 tmp = l`
+ l` = r`
+ r` = tmp
+ ;/
+ ;/
+
+ # Sets up both the ptrc and the _type members, requires
+ # parent module for resolution of types
+ /; _resolve_type (~Module parent)
+ int idx = 0
+ bool running = true
+ ~parse.Node t, _tn
+ _tn = self._tn
+
+ # Pre-op pointer
+ /; loop (running == true)
+ /; if (idx !< _tn`.sub.count)
+ running = false
+ ;; else
+ t = _tn`.sub.get(idx)
+ /; if (t`._type == parse.NTYPE_PRE_OP)
+ /; if (utils.strcmp(t`.data, "~\0") == true)
+ int32 ptr = 0
+ ptr = ptr - PTYPE_PTR
+ self.ptrc.push(~ptr)
+ ;; else
+ self._arr_ptr(t)
+ ;/
+ ;; else
+ running = false
+ ;/
+ ;/
+
+ /; if (running == true)
+ idx++
+ ;/
+ ;/
+
+ self._reverse_ptrc()
+
+ # After pre-ops comes id
+ utils.Vector strv
+ strv.init(8)
+ running = true
+ /; loop (running == true)
+ /; if (idx !< _tn`.sub.count)
+ running = false
+ ;; else
+ t = _tn`.sub.get(idx)
+ /; if (t`._type == parse.NTYPE_ID)
+ ~uint8 str = t`.data
+ strv.push(~str)
+ ;; else
+ running = false
+ ;/
+ ;/
+
+ /; if (running == true)
+ idx++
+ ;/
+ ;/
+
+ # Main type resolution
+ # TODO: FUNCTION POINTER
+ self._type = parent`.find(SEARCH_STRUCT, ~strv)
+ strv.end()
+
+ # Post-op pointer
+ running = true
+ /; loop (running == true)
+ /; if (idx !< _tn`.sub.count)
+ running = false
+ ;; else
+ t = _tn`.sub.get(idx)
+ /; if (t`._type == parse.NTYPE_POST_OP)
+ int32 ptr = 0
+ self.ptrc.push(~ptr)
+ ;/
+ ;/
+
+ /; if (running == true)
+ idx++
+ ;/
+ ;/
+ ;/
+
+ /; _static_compile (~Module parent, ~CompBuf buf)
+ # TODO:
+ ;/
- /; ptr [int32]
- ~int32 i
- i = self.ptrc.get(self.ptrc.count - 1)
- return i`
- ;/
+ /; ptr [int32]
+ ~int32 i
+ i = self.ptrc.get(self.ptrc.count - 1)
+ return i`
+ ;/
- /; ptr_push (int32 p)
- self.ptrc.push(~p)
- ;/
+ /; ptr_push (int32 p)
+ self.ptrc.push(~p)
+ ;/
- /; ptr_pop
- self.ptrc.pop()
- ;/
+ /; ptr_pop
+ self.ptrc.pop()
+ ;/
- /; end
- _delete(self.name)
- self.ptrc.end()
- ;/
+ /; 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 #
+ ###################################
+
+ /; gen_loc [~uint8]
+ utils.Vector out
+ out.init(1)
+
+ /; if (self.in_mem() == true)
+ out.push_char('[')
+ ;/
+
+ ~uint8 str
+ /; if (self.loc < 1)
+ str = reg_string(7, 8)
+ ;; else
+ str = reg_string(self.loc, self.actual_size())
+ ;/
+ out.push_cstr(str)
+ _delete(str)
+
+
+ /; if (self.in_mem() == true)
+ /; if (self.loc < 0)
+ int stk = 0
+ stk = stk - self.loc
+ out.push_cstr(" + \0")
+ str = utils.int_to_str(stk)
+ out.push_cstr(str)
+ _delete(str)
+ ;/
+ out.push_char(']')
+ ;/
+
+ return out.as_cstr()
+ ;/
+
+ # Returns true if the variable is known to be stored in memory
+ /; in_mem [bool]
+ /; if (self.loc < 1)
+ return true
+ ;/
+
+ ~int32 ptr = self.top_ptrc()
+ /; if (ptr !== NULL)
+ /; if (ptr` == 0)
+ return true
+ ;; else if (ptr` > 1)
+ return true
+ ;/
+ ;/
+
+ return false
+ ;/
+
+ # Set this variable to the value of a literal
+ /; set_literal (~CompBuf buf, ~Var other)
+ ;/
+
+ /; _set_mem(~CompBuf buf, ~Var other)
+
+ ;/
+
+ # Set this Variable to the value of other
+ /; set (~CompBuf buf, ~Var other)
+ self.standard_op(buf, other, "mov\0")
+ ;/
+
+ # Set the address which this reference points to
+ /; set_ref(~CompBuf buf, ~Var other)
+ ;/
+
+ /; standard_op (~CompBuf buf, ~Var other, ~uint8 op_str)
+ ~uint8 from_str = other`.gen_loc()
+ ~uint8 to_str = self.gen_loc()
+
+ buf`.add_c(" \0")
+ 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(buf, other, "add")
+ ;/
+
+ /; sub (~CompBuf buf, ~Var other)
+ self.standard_op(buf, other, "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(buf, other, "and")
+ ;/
+
+ /; or (~CompBuf buf, ~Var other)
+ self.standard_op(buf, other, "or")
+ ;/
+
+ /; xor (~CompBuf buf, ~Var other)
+ self.standard_op(buf, other, "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..e38c413 100644
--- a/tnslc/parse/ast.tnsl
+++ b/tnslc/parse/ast.tnsl
@@ -2115,7 +2115,7 @@ int errors_shown = 0
utils.Vector v
v.init(1)
- out.init(NTYPE_MODULE, v.as_cstr())
+ out.init(NTYPE_EXPORT, v.as_cstr())
_ast_file(fin, ~out)
@@ -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..fd29a23 100644
--- a/tnslc/test.tnsl
+++ b/tnslc/test.tnsl
@@ -1,11 +1,27 @@
-int i = 1 + 2 * 4 - 3 + 4
+/; module Container
+ /; module m1
+ struct Box {
+ ~uint8 data
+ }
+ ;/
-~uint8 a = b{0}
+ /; module m2
+ struct Crate {
+ {}m1.Box boxes
+ }
+ ;/
+
+;/
+
+struct Option {
+ bool has_crate,
+ Container.m2.Crate crate
+}
-/; main ({}{}uint8 args) [int]
- ~uint8 as = 12
- as` = 3 + 4
+/; main (int argc, ~~uint8 argv) [int]
+
+ return 0
;/
diff --git a/tnslc/utils/algo.tnsl b/tnslc/utils/algo.tnsl
index 35ac35c..49c4636 100644
--- a/tnslc/utils/algo.tnsl
+++ b/tnslc/utils/algo.tnsl
@@ -150,7 +150,7 @@
/; loop (i > 0) [i = i / 16]
int n = i % 16
/; if (n > 9)
- out.push_char('a' + n - 10)
+ out.push_char('A' + n - 10)
;; else
out.push_char('0' + n)
;/