Data types
🧩 Parsing Structure & Symbol Representation
The assembler follows a layered parsing pipeline:
-
Source files are split into lines (LineType)
-
Each line is resolved into a statement (StmtType)
-
Each statement contains expressions (ExprType)
-
Expressions are made of tokens (TokenType)
-
Some expressions are bindings to values or labels (BindingType)
Bound symbols like labels and constants are differentiated using BindingType.
| Value | Name |
|---|---|
| 0 | LINE_INSTRUCTION |
| 1 | LINE_LABEL |
| 2 | LINE_DIRECTIVE |
| Value | Name |
|---|---|
| 0 | STMT_INST |
| 1 | STMT_LABEL |
| 2 | STMT_CONST |
| 3 | STMT_INCLUDE |
| 4 | STMT_ENTRY |
| 5 | STMT_BLOCK |
| 6 | STMT_SCOPE |
| Value | Name |
|---|---|
| 0 | EXPR_BINDING |
| 1 | EXPR_LIT_INT |
| 2 | EXPR_LIT_FLOAT |
| 3 | EXPR_LIT_CHAR |
| 4 | EXPR_LIT_STR |
| 5 | EXPR_FUNCALL |
| 6 | EXPR_REG |
| Value | Name |
|---|---|
| 0 | TOKEN_TYPE_STR |
| 1 | TOKEN_TYPE_CHAR |
| 2 | TOKEN_TYPE_NUMBER |
| 3 | TOKEN_TYPE_NAME |
| 4 | TOKEN_TYPE_OPEN_PAREN |
| 5 | TOKEN_TYPE_CLOSING_PAREN |
| 6 | TOKEN_TYPE_COMMA |
| 7 | TOKEN_TYPE_REGISTER |
| Value | Name |
|---|---|
| 0 | BIND_TYPE_FLOAT |
| 1 | BIND_TYPE_UINT |
| 2 | BIND_TYPE_MEM_ADDR |
| 3 | BIND_TYPE_INST_ADDR |