mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-22 23:47:49 +00:00
parse cache, ir-tree cache
This commit is contained in:
+28
-5
@@ -10,6 +10,7 @@
|
||||
typedef struct E_Parse E_Parse;
|
||||
struct E_Parse
|
||||
{
|
||||
E_TokenArray tokens;
|
||||
E_Token *last_token;
|
||||
E_Expr *expr;
|
||||
E_Expr *last_expr;
|
||||
@@ -19,17 +20,33 @@ struct E_Parse
|
||||
////////////////////////////////
|
||||
//~ rjf: Parse Evaluation State
|
||||
|
||||
typedef struct E_ParseCacheNode E_ParseCacheNode;
|
||||
struct E_ParseCacheNode
|
||||
{
|
||||
E_ParseCacheNode *next;
|
||||
String8 string;
|
||||
E_Parse parse;
|
||||
};
|
||||
|
||||
typedef struct E_ParseCacheSlot E_ParseCacheSlot;
|
||||
struct E_ParseCacheSlot
|
||||
{
|
||||
E_ParseCacheNode *first;
|
||||
E_ParseCacheNode *last;
|
||||
};
|
||||
|
||||
typedef struct E_ParseState E_ParseState;
|
||||
struct E_ParseState
|
||||
{
|
||||
Arena *arena;
|
||||
U64 arena_eval_start_pos;
|
||||
U64 cache_slots_count;
|
||||
E_ParseCacheSlot *cache_slots;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Globals
|
||||
|
||||
|
||||
thread_static E_ParseState *e_parse_state = 0;
|
||||
|
||||
////////////////////////////////
|
||||
@@ -64,9 +81,15 @@ internal String8 e_string_from_expr(Arena *arena, E_Expr *expr, String8 parent_e
|
||||
//~ rjf: Parsing Functions
|
||||
|
||||
internal E_TypeKey e_leaf_type_from_name(String8 name);
|
||||
internal E_Parse e_parse_type_from_text_tokens(Arena *arena, String8 text, E_TokenArray tokens);
|
||||
internal E_Parse e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray tokens, S64 max_precedence, U64 max_chain_count);
|
||||
internal E_Parse e_parse_expr_from_text_tokens(Arena *arena, String8 text, E_TokenArray tokens);
|
||||
internal E_Parse e_parse_expr_from_text(Arena *arena, String8 text);
|
||||
internal E_TypeKey e_type_key_from_expr(E_Expr *expr);
|
||||
internal E_Parse e_push_type_parse_from_text_tokens(Arena *arena, String8 text, E_TokenArray tokens);
|
||||
internal E_Parse e_push_parse_from_string_tokens__prec(Arena *arena, String8 text, E_TokenArray tokens, S64 max_precedence, U64 max_chain_count);
|
||||
internal E_Parse e_push_parse_from_string(Arena *arena, String8 text);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Parse Cache Functions
|
||||
|
||||
internal void e_parse_eval_begin(void);
|
||||
internal E_Parse e_parse_from_string(String8 string);
|
||||
|
||||
#endif // EVAL_PARSE_H
|
||||
|
||||
Reference in New Issue
Block a user