aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/heap.h5
-rw-r--r--include/parser.h31
-rw-r--r--include/variable.h27
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_