diff options
Diffstat (limited to 'src/core/symbol.h')
| -rw-r--r-- | src/core/symbol.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/core/symbol.h b/src/core/symbol.h index b3b3b29..e5a331c 100644 --- a/src/core/symbol.h +++ b/src/core/symbol.h @@ -37,6 +37,7 @@ #define SYMBOL_H #include "../defines.h" +#include "../data/list.h" #define symbol_set_val(s,v) s->p_val = v #define symbol_set_sym(s,st) s->sym = st @@ -55,6 +56,17 @@ typedef enum { SYM_VARIABLE, } SymbolType; +/* Wraps a function's body token list and its named parameter names. + * Every SYM_FUNCTION symbol stores a FuncDef* as its p_val. */ +typedef struct { + List *p_body; /* function body token list */ + List *p_params; /* list of strdup'd char* param names */ + int i_nparams; /* cached count of p_params */ +} FuncDef; + +FuncDef* funcdef_new(List *p_body, List *p_params, int i_nparams); +void funcdef_delete(FuncDef *p_funcdef); + typedef struct { SymbolType sym; void *p_val; |
