Something.
This commit is contained in:
parent
2662f54c51
commit
a1f210fee1
@ -38,6 +38,7 @@ typedef struct {
|
||||
Lexer* lexer_init(char* src);
|
||||
|
||||
// Destroy a lexer.
|
||||
// Does not destroy `lexer->src`!
|
||||
void lexer_destroy(Lexer* lexer);
|
||||
|
||||
// Convert text to tokens.
|
||||
|
@ -17,8 +17,9 @@ typedef struct {
|
||||
Parser* parser_init(size_t tokenc, Token** tokenv);
|
||||
void parser_destroy(Parser* parser);
|
||||
|
||||
// Increment parser->ctoken.
|
||||
// Increment `parser->ctoken`.
|
||||
void parser_inc(Parser* parser);
|
||||
|
||||
// Step forward 1 token and add to stacks.
|
||||
void parser_step(Parser* parser);
|
||||
|
||||
|
@ -6,15 +6,18 @@
|
||||
#define STACK_MAX 64
|
||||
|
||||
typedef struct {
|
||||
size_t i;
|
||||
void* val[STACK_MAX];
|
||||
size_t i; // Current index in the stack.
|
||||
void* val[STACK_MAX]; // The stack itself.
|
||||
} Stack;
|
||||
|
||||
Stack* stack_init();
|
||||
// stack->i must be 0.
|
||||
// Destroy a stack.
|
||||
// Note that `stack->i` must be `0`.
|
||||
void stack_destroy(Stack* stack);
|
||||
|
||||
// Push a value to the stack.
|
||||
void stack_push(Stack* stack, void* val);
|
||||
// Pop a value from the stack.
|
||||
void* stack_pop(Stack* stack);
|
||||
|
||||
#endif
|
||||
|
@ -24,8 +24,7 @@ Lexer* lexer_init(char* src) {
|
||||
}
|
||||
|
||||
void lexer_destroy(Lexer* lexer) {
|
||||
free(lexer->src);
|
||||
|
||||
// Does not free lexer->src.
|
||||
for (int i = 0; i < lexer->ntokens; i++) token_destroy(lexer->tokens[i]);
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,9 @@ int main(int argc, char** argv) {
|
||||
Lexer* lexer = lexer_init(cline->buf);
|
||||
lexer_lex(lexer);
|
||||
lexer_print(lexer);
|
||||
}
|
||||
lexer_destroy(lexer);
|
||||
}
|
||||
|
||||
dstr_destroy(cline);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user