diff --git a/lang/src/ast.asm b/lang/src/ast.asm index ff0c50a..31bf739 100644 --- a/lang/src/ast.asm +++ b/lang/src/ast.asm @@ -1,32 +1,9 @@ default rel %include "src/tokeniser.inc" +%include "src/ast.inc" section .rdata -;; start-consts - AST_FUNCTION equ 1 ; :u8 - AST_BLOCK equ 2 ; :u8 - AST_VARIABLE equ 3 ; :u8 - AST_NUMBER equ 4 ; :u8 - AST_BINARY_OP equ 5 ; :u8 - AST_RETURN_STATEMENT equ 6 ; :u8 - AST_VALUE_TO_PLACE equ 7 ; :u8 - AST_PLACE_TO_VALUE equ 8 ; :u8 - AST_ASSIGNMENT equ 9 ; :u8 - AST_DEREF equ 10 ; :u8 - AST_ADDRESS_OF equ 11 ; :u8 - AST_VAR_DECL equ 12 ; :u8 - AST_VAR_REF equ 13 ; :u8 - AST_ARG equ 14 ; :u8 - - TYPE_VOID equ 1 ; :u8 - TYPE_BOOL equ 2 ; :u8 - TYPE_I32 equ 3 ; :u8 - TYPE_U32 equ 4 ; :u8 - TYPE_STR equ 5 ; :u8 - TYPE_POINTER equ 6 ; :u8 -;; end-consts - PRECEDENCE_ADD equ 90 PRECEDENCE_SUB equ 90 PRECEDENCE_MUL equ 100 diff --git a/lang/src/ast.inc b/lang/src/ast.inc new file mode 100644 index 0000000..9966a0d --- /dev/null +++ b/lang/src/ast.inc @@ -0,0 +1,24 @@ +section .rdata +;; start-consts + AST_FUNCTION equ 1 ; :u8 + AST_BLOCK equ 2 ; :u8 + AST_VARIABLE equ 3 ; :u8 + AST_NUMBER equ 4 ; :u8 + AST_BINARY_OP equ 5 ; :u8 + AST_RETURN_STATEMENT equ 6 ; :u8 + AST_VALUE_TO_PLACE equ 7 ; :u8 + AST_PLACE_TO_VALUE equ 8 ; :u8 + AST_ASSIGNMENT equ 9 ; :u8 + AST_DEREF equ 10 ; :u8 + AST_ADDRESS_OF equ 11 ; :u8 + AST_VAR_DECL equ 12 ; :u8 + AST_VAR_REF equ 13 ; :u8 + AST_ARG equ 14 ; :u8 + + TYPE_VOID equ 1 ; :u8 + TYPE_BOOL equ 2 ; :u8 + TYPE_I32 equ 3 ; :u8 + TYPE_U32 equ 4 ; :u8 + TYPE_STR equ 5 ; :u8 + TYPE_POINTER equ 6 ; :u8 +;; end-consts \ No newline at end of file diff --git a/lang/tests/shared/defs.rs b/lang/tests/shared/defs.rs index 0ec4d9b..e44c2c5 100644 --- a/lang/tests/shared/defs.rs +++ b/lang/tests/shared/defs.rs @@ -19,6 +19,13 @@ unsafe extern "C" { pub unsafe fn ast_resolve_var_refs(ast: *mut Ast, ctx: *mut SymbolTable, root_index: u64); } +pub const SYM_KEY_SCOPE: u8 = 1; +pub const SYM_KEY_SCOPE_NAME: u8 = 2; +pub const SYM_KEY_PARENT_SCOPE: u8 = 3; +pub const SYM_KEY_START_LOCALS: u8 = 4; +pub const SYM_KEY_ARG: u8 = 5; +pub const SYM_KEY_VAR: u8 = 6; +pub const SYM_KEY_END_LOCALS: u8 = 7; pub const AST_FUNCTION: u8 = 1; pub const AST_BLOCK: u8 = 2; pub const AST_VARIABLE: u8 = 3; @@ -39,13 +46,6 @@ pub const TYPE_I32: u8 = 3; pub const TYPE_U32: u8 = 4; pub const TYPE_STR: u8 = 5; pub const TYPE_POINTER: u8 = 6; -pub const SYM_KEY_SCOPE: u8 = 1; -pub const SYM_KEY_SCOPE_NAME: u8 = 2; -pub const SYM_KEY_PARENT_SCOPE: u8 = 3; -pub const SYM_KEY_START_LOCALS: u8 = 4; -pub const SYM_KEY_ARG: u8 = 5; -pub const SYM_KEY_VAR: u8 = 6; -pub const SYM_KEY_END_LOCALS: u8 = 7; pub const TOKEN_EOF: u8 = 0; pub const TOKEN_LET: u8 = 1; pub const TOKEN_IF: u8 = 2;