blob: da5b6862bf9afe363f10a10ff899e92e23d34f17 (
plain)
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
|
#pragma once
#include <compiler/parser/parser.h>
typedef enum Command {
COMMAND_NONE = 0,
COMMAND_CALL_FUNCTION,
COMMAND_PUSH_STRING,
} Command;
extern const char *COMMAND_STRINGS[];
typedef struct Instruction {
Command command;
void *operand;
} Instruction;
typedef struct Instructions {
Instruction *restrict instructions;
size_t size;
} Instructions;
extern void printInstruction(Instruction instruction);
extern void printInstructions(Instructions instructions);
extern void deleteInstruction(Instruction instruction);
extern void deleteInstructions(Instructions instructions);
extern Instructions codeGenerator(ParsedNode *root);
extern bool nodeToInstruction(ParsedNode *node, Instruction **instructions,
size_t *instructions_size,
size_t *instructions_inserted);
extern void insertInstruction(const Instruction instruction,
Instruction **restrict instructions,
size_t *restrict instructions_size,
size_t *restrict instructions_inserted);
extern SizedString *nodeToString(ParsedNode const *node);
|