aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorc+12023-05-10 00:50:10 -0400
committerc+12023-05-10 00:50:10 -0400
commit266d3d6af1ba8d338bb8b9ad09431483276dae46 (patch)
tree4c4ce456e9c1bfc6e0fdc370dffa5da82d797868 /src/include
parentdeb8d97be58847031e7f4ef25d7107cb2dbc35a3 (diff)
halk.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/lexer.h22
-rw-r--r--src/include/token.h6
-rw-r--r--src/include/tree.h48
3 files changed, 53 insertions, 23 deletions
diff --git a/src/include/lexer.h b/src/include/lexer.h
index a0e40af..eb80646 100644
--- a/src/include/lexer.h
+++ b/src/include/lexer.h
@@ -1,28 +1,32 @@
#ifndef LEXER_H
#define LEXER_H
+
+
#include "token.h"
+
typedef struct LEXER_STRUC {
char c; // current character in content
unsigned int i; // index of c
char* content; // the code itself
} lexer_t;
-lexer_t* lexer_init(char* content);
+extern lexer_t* lexer_init(char* content);
+
+extern void lexer_next(lexer_t* lexer);
+extern void lexer_pass(lexer_t* lexer);
-void lexer_next(lexer_t* lexer);
-void lexer_pass(lexer_t* lexer);
+extern token_t* lexer_get_next_token(lexer_t* lexer);
-token_t* lexer_get_next_token(lexer_t* lexer);
+extern token_t* lexer_get_string(lexer_t* lexer);
-token_t* lexer_get_string(lexer_t* lexer);
+extern token_t* lexer_get_comment(lexer_t* lexer);
-token_t* lexer_get_comment(lexer_t* lexer);
+extern token_t* lexer_get_id(lexer_t* lexer);
-token_t* lexer_get_id(lexer_t* lexer);
+extern token_t* lexer_next_token(lexer_t* lexer, token_t* token);
-token_t* lexer_next_token(lexer_t* lexer, token_t* token);
+extern char* lexer_get_c_as_string(lexer_t* lexer);
-char* lexer_get_c_as_string(lexer_t* lexer);
#endif
diff --git a/src/include/token.h b/src/include/token.h
index 709051a..147862c 100644
--- a/src/include/token.h
+++ b/src/include/token.h
@@ -1,5 +1,7 @@
#ifndef TOKEN_H
#define TOKEN_H
+
+
typedef struct TOKEN_STRUC {
enum {
TOKEN_ID, // keyword
@@ -21,5 +23,7 @@ typedef struct TOKEN_STRUC {
char* value;
} token_t;
-token_t* token_init(int type, char* value);
+extern token_t* token_init(int type, char* value);
+
+
#endif
diff --git a/src/include/tree.h b/src/include/tree.h
index 34e8e4f..1cf029c 100644
--- a/src/include/tree.h
+++ b/src/include/tree.h
@@ -19,19 +19,41 @@ typedef struct TREE_STRUC {
TREE_SUBTREE,
} type;
- char* var_def_name;
- struct TREE_STRUC* var_def_val;
-
- char* var_name;
-
- char* fn_call_name;
- struct TREE_STRUC** fn_call_argv;
- size_t fn_call_argsize;
-
- char* str_val;
-
- struct TREE_STRUC* subtree_val;
- size_t subtree_size;
+ union tree_union {
+
+ struct var_def_struc {
+ char* name;
+ struct TREE_STRUC* val;
+ int is_const;
+ } var_def;
+
+ struct var_struc {
+ char* name;
+ } var;
+
+ struct fn_def_struc {
+ char* name;
+ struct TREE_STRUC** val;
+ struct TREE_STRUC** argv;
+ size_t argsize;
+ } fn_def;
+
+ struct fn_call_struc {
+ char* name;
+ struct TREE_STRUC** argv;
+ size_t argsize;
+ } fn_call;
+
+ struct str_struc {
+ char* val;
+ } str;
+
+ struct subtree_struc {
+ struct TREE_STRUC* val;
+ size_t size;
+ } subtree;
+
+ } data;
} tree_t;