mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-30 15:21:48 -07:00
eval: do simplification pass over identifier resolution, shift from parsing stage -> ir generation / typechecking stage; do simplifications over expr tree, eliminate redundant kinds
This commit is contained in:
+4
-16
@@ -21,21 +21,9 @@ struct E_Parse
|
||||
typedef struct E_ParseCtx E_ParseCtx;
|
||||
struct E_ParseCtx
|
||||
{
|
||||
// rjf: instruction pointer info
|
||||
U64 ip_vaddr;
|
||||
U64 ip_voff;
|
||||
E_Space ip_thread_space;
|
||||
|
||||
// rjf: modules
|
||||
E_Module *modules;
|
||||
U64 modules_count;
|
||||
E_Module *primary_module;
|
||||
|
||||
// rjf: local identifier resolution maps
|
||||
E_String2NumMap *regs_map;
|
||||
E_String2NumMap *reg_alias_map;
|
||||
E_String2NumMap *locals_map; // (within `rdis[rdis_primary_idx]`)
|
||||
E_String2NumMap *member_map; // (within `rdis[rdis_primary_idx]`)
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
@@ -60,7 +48,7 @@ thread_static E_ParseState *e_parse_state = 0;
|
||||
////////////////////////////////
|
||||
//~ rjf: Tokenization Functions
|
||||
|
||||
#define e_token_at_it(it, arr) (((it) < (arr)->v+(arr)->count) ? (*(it)) : e_token_zero())
|
||||
#define e_token_at_it(it, arr) (((arr)->v <= (it) && (it) < (arr)->v+(arr)->count) ? (*(it)) : e_token_zero())
|
||||
internal E_Token e_token_zero(void);
|
||||
internal void e_token_chunk_list_push(Arena *arena, E_TokenChunkList *list, U64 chunk_size, E_Token *token);
|
||||
internal E_TokenArray e_token_array_from_chunk_list(Arena *arena, E_TokenChunkList *list);
|
||||
@@ -100,9 +88,9 @@ internal String8 e_string_from_expr(Arena *arena, E_Expr *expr);
|
||||
internal E_TypeKey e_leaf_type_from_name(String8 name);
|
||||
internal E_TypeKey e_type_from_expr(E_Expr *expr);
|
||||
internal void e_push_leaf_ident_exprs_from_expr__in_place(Arena *arena, E_String2ExprMap *map, E_Expr *expr);
|
||||
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_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);
|
||||
|
||||
#endif // EVAL_PARSE_H
|
||||
|
||||
Reference in New Issue
Block a user