aboutsummaryrefslogtreecommitdiff
path: root/asm/lexer.h
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2024-04-14 02:45:48 +0630
committerAryadev Chavali <aryadev@aryadevchavali.com>2024-04-14 02:45:48 +0630
commit0ebbf3ca751e638a90cf886625992bb028f9b587 (patch)
tree626e1cbddb50f0ec7d5fb8e93c4a3adfa9943349 /asm/lexer.h
parentb7a40f4ab0fc5c0f6b68f24437f479a29e72c9af (diff)
downloadovm-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.h91
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