diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-14 02:45:48 +0630 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-14 02:45:48 +0630 |
commit | 0ebbf3ca751e638a90cf886625992bb028f9b587 (patch) | |
tree | 626e1cbddb50f0ec7d5fb8e93c4a3adfa9943349 /asm/lexer.h | |
parent | b7a40f4ab0fc5c0f6b68f24437f479a29e72c9af (diff) | |
download | ovm-0ebbf3ca751e638a90cf886625992bb028f9b587.tar.gz ovm-0ebbf3ca751e638a90cf886625992bb028f9b587.tar.bz2 ovm-0ebbf3ca751e638a90cf886625992bb028f9b587.zip |
Start writing assembler in C++
Best language to use as it's already compatible with the headers I'm
using and can pretty neatly enter the build system while also using
the functions I've built for converting to and from bytecode!
Diffstat (limited to 'asm/lexer.h')
-rw-r--r-- | asm/lexer.h | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/asm/lexer.h b/asm/lexer.h deleted file mode 100644 index 734ffa1..0000000 --- a/asm/lexer.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 2023 Aryadev Chavali - - * You may distribute and modify this code under the terms of the - * GPLv2 license. You should have received a copy of the GPLv2 - * license with this file. If not, please write to: - * aryadev@aryadevchavali.com. - - * Created: 2023-10-24 - * Author: Aryadev Chavali - * Description: Lexer for assembly language - */ - -#ifndef LEXER_H -#define LEXER_H - -#include <lib/darr.h> - -typedef enum TokenType -{ - TOKEN_PP_CONST, // %const(<symbol>)... - TOKEN_PP_USE, // %use <string> - TOKEN_PP_END, // %end - TOKEN_PP_REFERENCE, // $<symbol> - TOKEN_GLOBAL, - TOKEN_STAR, - TOKEN_LITERAL_NUMBER, - TOKEN_LITERAL_CHAR, - TOKEN_LITERAL_STRING, - TOKEN_NOOP, - TOKEN_HALT, - TOKEN_PUSH, - TOKEN_POP, - TOKEN_PUSH_REG, - TOKEN_MOV, - TOKEN_DUP, - TOKEN_MALLOC, - TOKEN_MALLOC_STACK, - TOKEN_MSET, - TOKEN_MSET_STACK, - TOKEN_MGET, - TOKEN_MGET_STACK, - TOKEN_MDELETE, - TOKEN_MSIZE, - TOKEN_NOT, - TOKEN_OR, - TOKEN_AND, - TOKEN_XOR, - TOKEN_EQ, - TOKEN_LT, - TOKEN_LTE, - TOKEN_GT, - TOKEN_GTE, - TOKEN_PLUS, - TOKEN_SUB, - TOKEN_MULT, - TOKEN_PRINT, - TOKEN_JUMP_ABS, - TOKEN_JUMP_STACK, - TOKEN_JUMP_IF, - TOKEN_CALL, - TOKEN_CALL_STACK, - TOKEN_RET, - TOKEN_SYMBOL, -} token_type_t; - -typedef struct -{ - token_type_t type; - size_t column, line; - char *str; - size_t str_size; -} token_t; - -token_t token_copy(token_t); - -typedef enum -{ - LERR_OK = 0, - LERR_INVALID_CHAR_LITERAL, - LERR_INVALID_PREPROCESSOR_DIRECTIVE, -} lerr_t; -const char *lerr_as_cstr(lerr_t); - -typedef darr_t buffer_t; -typedef darr_t token_stream_t; -#define TOKEN_STREAM_AT(STREAM_DATA, INDEX) (((token_t *)(STREAM_DATA))[INDEX]) - -const char *token_type_as_cstr(token_type_t type); -lerr_t tokenise_buffer(buffer_t *, token_stream_t *); - -#endif |