eval2: split string -> expr compilation path into frontend / middle end - string -> expr, where expr is a loose structural syntax tree (where we can get macros and stuff without doing typechecking etc.), and expr -> irtree, where irtree is the usual typed / typechecked / ir structured representation - preserve minimal identifier resolution path for parser, but move most resolution things to the middle-end

This commit is contained in:
Ryan Fleury
2026-06-25 15:48:14 -07:00
parent c2b74260ef
commit d7393b2f65
6 changed files with 1124 additions and 860 deletions
+7 -1
View File
@@ -9,6 +9,11 @@
typedef enum E2_ExprKind
{
E2_ExprKind_Null,
E2_ExprKind_Identifier,
E2_ExprKind_TypeIdentifier,
E2_ExprKind_Numeric,
E2_ExprKind_StringLiteral,
E2_ExprKind_CharLiteral,
E2_ExprKind_Dot,
E2_ExprKind_Index,
E2_ExprKind_Call,
@@ -22,6 +27,7 @@ E2_ExprKind_Pos,
E2_ExprKind_Neg,
E2_ExprKind_LogNot,
E2_ExprKind_BitNot,
E2_ExprKind_Ptr,
E2_ExprKind_Mul,
E2_ExprKind_Div,
E2_ExprKind_Mod,
@@ -125,7 +131,7 @@ E2_TypeKind_LastMeta = E2_TypeKind_MetaDescription,
} E2_TypeKind;
C_LINKAGE_BEGIN
extern E2_ExprKindInfo e2_expr_kind_info_table[35];
extern E2_ExprKindInfo e2_expr_kind_info_table[41];
extern U8 e2_type_kind_basic_byte_size_table[61];
extern String8 e2_type_kind_basic_string_table[61];