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:
Ryan Fleury
2025-04-02 14:30:12 -07:00
parent b2ae4d89d7
commit 6113a2e3db
15 changed files with 942 additions and 718 deletions
+2 -6
View File
@@ -134,7 +134,7 @@ U8 e_type_kind_basic_byte_size_table[56] =
0,
};
String8 e_expr_kind_strings[51] =
String8 e_expr_kind_strings[49] =
{
str8_lit_comp("Nil"),
str8_lit_comp("Ref"),
@@ -171,9 +171,7 @@ str8_lit_comp("LogOr"),
str8_lit_comp("Ternary"),
str8_lit_comp("Call"),
str8_lit_comp("LeafBytecode"),
str8_lit_comp("LeafMember"),
str8_lit_comp("LeafStringLiteral"),
str8_lit_comp("LeafBool"),
str8_lit_comp("LeafU64"),
str8_lit_comp("LeafF64"),
str8_lit_comp("LeafF32"),
@@ -189,7 +187,7 @@ str8_lit_comp("Define"),
str8_lit_comp("Tag"),
};
E_OpInfo e_expr_kind_op_info_table[51] =
E_OpInfo e_expr_kind_op_info_table[49] =
{
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
@@ -238,8 +236,6 @@ E_OpInfo e_expr_kind_op_info_table[51] =
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") },
{ E_OpKind_Binary, 13, str8_lit_comp(""), str8_lit_comp("="), str8_lit_comp("") },
{ E_OpKind_Null, 0, str8_lit_comp("=>"), str8_lit_comp(","), str8_lit_comp("") },
};
+2 -4
View File
@@ -126,9 +126,7 @@ E_ExprKind_LogOr,
E_ExprKind_Ternary,
E_ExprKind_Call,
E_ExprKind_LeafBytecode,
E_ExprKind_LeafMember,
E_ExprKind_LeafStringLiteral,
E_ExprKind_LeafBool,
E_ExprKind_LeafU64,
E_ExprKind_LeafF64,
E_ExprKind_LeafF32,
@@ -165,8 +163,8 @@ C_LINKAGE_BEGIN
extern String8 e_token_kind_strings[6];
extern String8 e_type_kind_basic_string_table[56];
extern U8 e_type_kind_basic_byte_size_table[56];
extern String8 e_expr_kind_strings[51];
extern E_OpInfo e_expr_kind_op_info_table[51];
extern String8 e_expr_kind_strings[49];
extern E_OpInfo e_expr_kind_op_info_table[49];
extern String8 e_interpretation_code_display_strings[11];
C_LINKAGE_END