start adding error message support

This commit is contained in:
2025-07-09 01:55:40 +01:00
parent 9e5e932d39
commit e234ea074b
19 changed files with 293 additions and 115 deletions

52
src/arobject.h Normal file
View File

@@ -0,0 +1,52 @@
#ifndef AROBJECT_H
#define AROBJECT_H
#include <gmp.h>
#include "runtime/internals/dynamic_array_armem/darray_armem.h"
typedef struct ArgonObject ArgonObject; // forward declaration
typedef enum ArgonType {
TYPE_NULL,
TYPE_BOOL,
TYPE_NUMBER,
TYPE_STRING,
TYPE_FUNCTION,
TYPE_NATIVE_FUNCTION,
TYPE_OBJECT,
} ArgonType;
struct string_struct {
char *data;
size_t length;
};
typedef struct Stack {
ArgonObject *scope;
struct Stack *prev;
} Stack;
struct argon_function_struct {
darray_armem bytecode;
Stack stack;
size_t number_of_parameters;
char **parameters;
};
// full definition of ArgonObject (no typedef again!)
struct ArgonObject {
ArgonType type;
char *name;
ArgonObject *self;
ArgonObject *baseObject;
struct hashmap_GC *fields;
union {
mpq_t as_number;
bool as_bool;
struct string_struct as_str;
void *native_fn;
struct argon_function_struct argon_fn;
} value;
};
#endif // AROBJECT_H