diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/heap.h | 5 | ||||
-rw-r--r-- | include/parser.h | 31 | ||||
-rw-r--r-- | include/variable.h | 27 |
3 files changed, 32 insertions, 31 deletions
diff --git a/include/heap.h b/include/heap.h index e04b15e..2c7e7c9 100644 --- a/include/heap.h +++ b/include/heap.h @@ -5,7 +5,8 @@ uint32_t heap_available(void); -void *hmalloc(uint32_t size); -void *hcalloc(uint32_t count, uint32_t size); +void *malloc(uint32_t size); +void *calloc(uint32_t count, uint32_t size); +void free(void *buf); #endif // HEAP_H_ diff --git a/include/parser.h b/include/parser.h index c6a2b17..83a81e1 100644 --- a/include/parser.h +++ b/include/parser.h @@ -3,29 +3,32 @@ #include <variable.h> -typedef void *stack_t; +typedef variable *stack_t; typedef struct { - uint16_t status; - uint16_t vcount; variable *vars; - char **names; + char **vnames; stack_t *stack; + uint32_t stidx; + char **lines; + uint32_t lnidx; + uint8_t indent; } interpreter; -enum status { - READY = 0 -}; +typedef int (*func_t)(interpreter *); -typedef void (*func_t)(stack_t *); +void iinit(interpreter *); -void interpreter_init(interpreter *); +void inew_string(interpreter *, const char *, char *); +void inew_integer(interpreter *, const char *, int32_t); +void inew_float(interpreter *, const char *, float); +void inew_cfunc(interpreter *, const char *, func_t); -void interpreter_define_value(interpreter *, const char *, int32_t); -void interpreter_define_cfunc(interpreter *, const char *, func_t); +int idoline(interpreter *, const char *); -int32_t interpreter_get_value(interpreter *, const char *); - -int interpreter_doline(interpreter *, const char *); +variable *igetarg(interpreter *, uint32_t); +char *igetarg_string(interpreter *, uint32_t); +int igetarg_integer(interpreter *, uint32_t); +float igetarg_float(interpreter *, uint32_t); #endif // PARSER_H_ diff --git a/include/variable.h b/include/variable.h index fd84a6e..067ce13 100644 --- a/include/variable.h +++ b/include/variable.h @@ -1,24 +1,21 @@ -#ifndef TOKEN_H_ -#define TOKEN_H_ +#ifndef VARIABLE_H_ +#define VARIABLE_H_ #include <stdint.h> typedef struct { - uint16_t nameidx; - uint8_t type; - uint8_t info; + uint8_t used :1; + uint8_t fromc :1; + uint8_t valtype :2; uint32_t value; + char *svalue; } variable; -#define INFO_ARGS(x) ((x) & 0x07) -#define INFO_RET (1 << 3) - -enum vartype { - VALUE = 0, - VARIABLE, - OPERATOR, - FUNCTION, - CFUNCTION +enum valtype { + STRING = 0, + INTEGER, + FLOAT, + FUNC }; -#endif // TOKEN_H_ +#endif // VARIABLE_H_ |