mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-29 10:40:02 +00:00
further progress on using the upgraded eval system; sketch out replacement breakpoints & callstack views, which are just specializations of watch window
This commit is contained in:
@@ -118,6 +118,7 @@ E_ExprKindTable:
|
||||
{ LeafF64 "F64" }
|
||||
{ LeafF32 "F32" }
|
||||
{ LeafIdent "leaf_ident" }
|
||||
{ LeafID "leaf_id" }
|
||||
|
||||
{ TypeIdent "type_ident" }
|
||||
{ Ptr "ptr" }
|
||||
|
||||
@@ -1169,6 +1169,16 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
|
||||
}
|
||||
}break;
|
||||
|
||||
//- rjf: leaf IDs (opaque u64s with type info attached)
|
||||
case E_ExprKind_LeafID:
|
||||
{
|
||||
E_IRNode *new_tree = e_push_irnode(arena, RDI_EvalOp_ConstU64);
|
||||
new_tree->u64 = expr->u64;
|
||||
result.root = new_tree;
|
||||
result.type_key = expr->type_key;
|
||||
result.mode = E_Mode_Offset;
|
||||
}break;
|
||||
|
||||
//- rjf: types
|
||||
case E_ExprKind_TypeIdent:
|
||||
{
|
||||
|
||||
@@ -1145,6 +1145,14 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
|
||||
String8 local_lookup_string = token_string;
|
||||
E_Space space = E_Space_Null;
|
||||
|
||||
//- rjf: identifiers surrounded by ``s should have those `s stripped
|
||||
if(local_lookup_string.size >= 2 &&
|
||||
local_lookup_string.str[0] == '`' &&
|
||||
local_lookup_string.str[local_lookup_string.size-1] == '`')
|
||||
{
|
||||
token_string = local_lookup_string = str8_substr(local_lookup_string, r1u64(1, local_lookup_string.size-1));
|
||||
}
|
||||
|
||||
//- rjf: form namespaceified fallback versions of this lookup string
|
||||
String8List namespaceified_token_strings = {0};
|
||||
{
|
||||
|
||||
@@ -215,6 +215,7 @@ internal B32 e_type_kind_is_basic_or_enum(E_TypeKind kind);
|
||||
//~ rjf: Member List Building Functions
|
||||
|
||||
internal void e_member_list_push(Arena *arena, E_MemberList *list, E_Member *member);
|
||||
#define e_member_list_push_new(arena, list, ...) e_member_list_push((arena), (list), &(E_Member){.kind = E_MemberKind_DataField, __VA_ARGS__})
|
||||
internal E_MemberArray e_member_array_from_list(Arena *arena, E_MemberList *list);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
@@ -14,7 +14,7 @@ str8_lit_comp("CharLiteral"),
|
||||
str8_lit_comp("Symbol"),
|
||||
};
|
||||
|
||||
String8 e_expr_kind_strings[41] =
|
||||
String8 e_expr_kind_strings[42] =
|
||||
{
|
||||
str8_lit_comp("Nil"),
|
||||
str8_lit_comp("ArrayIndex"),
|
||||
@@ -52,6 +52,7 @@ str8_lit_comp("LeafU64"),
|
||||
str8_lit_comp("LeafF64"),
|
||||
str8_lit_comp("LeafF32"),
|
||||
str8_lit_comp("LeafIdent"),
|
||||
str8_lit_comp("LeafID"),
|
||||
str8_lit_comp("TypeIdent"),
|
||||
str8_lit_comp("Ptr"),
|
||||
str8_lit_comp("Array"),
|
||||
@@ -74,7 +75,7 @@ str8_lit_comp("Insufficient evaluation machine stack space."),
|
||||
str8_lit_comp("Malformed bytecode."),
|
||||
};
|
||||
|
||||
String8 e_expr_op_strings[41] =
|
||||
String8 e_expr_op_strings[42] =
|
||||
{
|
||||
str8_lit_comp(""),
|
||||
str8_lit_comp("[]"),
|
||||
@@ -112,6 +113,7 @@ str8_lit_comp("U64"),
|
||||
str8_lit_comp("F64"),
|
||||
str8_lit_comp("F32"),
|
||||
str8_lit_comp("leaf_ident"),
|
||||
str8_lit_comp("leaf_id"),
|
||||
str8_lit_comp("type_ident"),
|
||||
str8_lit_comp("ptr"),
|
||||
str8_lit_comp("array"),
|
||||
|
||||
@@ -126,6 +126,7 @@ E_ExprKind_LeafU64,
|
||||
E_ExprKind_LeafF64,
|
||||
E_ExprKind_LeafF32,
|
||||
E_ExprKind_LeafIdent,
|
||||
E_ExprKind_LeafID,
|
||||
E_ExprKind_TypeIdent,
|
||||
E_ExprKind_Ptr,
|
||||
E_ExprKind_Array,
|
||||
@@ -152,9 +153,9 @@ E_InterpretationCode_COUNT,
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
extern String8 e_token_kind_strings[6];
|
||||
extern String8 e_expr_kind_strings[41];
|
||||
extern String8 e_expr_kind_strings[42];
|
||||
extern String8 e_interpretation_code_display_strings[11];
|
||||
extern String8 e_expr_op_strings[41];
|
||||
extern String8 e_expr_op_strings[42];
|
||||
extern U8 e_kind_basic_byte_size_table[55];
|
||||
extern String8 e_kind_basic_string_table[55];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user