1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#pragma once
#include <compiler/code_generator/code_generator.h>
typedef struct RunnerVariable {
SizedString const *name;
void *value;
} RunnerVariable;
typedef void (*BuiltinFunction)(void ***restrict stack,
size_t *restrict stack_inserted);
extern const BuiltinFunction BUILTIN_FUNCTIONS[];
extern const char *BUILTIN_FUNCTION_NAMES[];
extern const size_t BUILTIN_FUNCTIONS_SIZE;
extern bool runner(SourceCode code);
extern bool _runner(Instructions instructions);
extern bool runInstruction(Instruction instruction, void ***restrict stack,
size_t *restrict stack_size,
size_t *restrict stack_inserted,
RunnerVariable ***restrict variables,
size_t *restrict variables_size,
size_t *restrict variables_inserted);
extern RunnerVariable *getRunnerVariable(const SizedString *varName,
RunnerVariable ***restrict variables,
size_t *restrict variables_inserted);
extern void setRunnerVariable(void *value, const SizedString *varName,
RunnerVariable ***restrict variables,
size_t *restrict variables_size,
size_t *restrict variables_inserted);
extern void *popFromStack(void ***restrict stack,
size_t *restrict stack_inserted);
extern void pushToStack(void *value, void ***restrict stack,
size_t *restrict stack_size,
size_t *restrict stack_inserted);
extern void print(void ***restrict stack, size_t *restrict stack_inserted);
|