blob: 35a4abb1501f03808f6bdccc04769b01dfd9cacd (
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
|
#include "../include/parser.h"
#include <stdio.h>
typedef struct {
TslTokenizer tokenizer;
} TslParser;
static void tsl_parser_init(TslParser *self, const char *code, size_t code_size) {
tsl_tokenizer_init(&self->tokenizer, code, code_size);
}
static int tsl_parser_parse_rhs(TslParser *self) {
return 0;
}
static int tsl_parser_parse(TslParser *self) {
for(;;) {
TslToken token = tsl_tokenizer_next(&self->tokenizer);
if(token == TSL_TOKEN_IDENTIFIER) {
TslStringView identifier = self->tokenizer.identifier;
if(!tsl_tokenizer_accept(&self->tokenizer, TSL_TOKEN_EQUAL)) {
return -1;
}
tsl_parser_parse_rhs(self);
} else if(token == TSL_TOKEN_END_OF_FILE) {
break;
} else {
fprintf(stderr, "Error: Expected identifier, got TODO\n");
return -1;
}
}
return 0;
}
int tsl_parse(const char *code, size_t code_size) {
TslParser parser;
tsl_parser_init(&parser, code, code_size);
return tsl_parser_parse(&parser);
}
|