aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tokenizer.c')
-rw-r--r--src/tokenizer.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/tokenizer.c b/src/tokenizer.c
index 1ab34db..97673f5 100644
--- a/src/tokenizer.c
+++ b/src/tokenizer.c
@@ -76,7 +76,8 @@ const int64_t num_multipliers[] = {
/* TODO: Check if the number if too large to fit into the result */
static int64_t string_to_int(TslStringView *str) {
int64_t num = 0;
- for(size_t i = 0; i < str->size; ++i) {
+ size_t i = 0;
+ for(; i < str->size; ++i) {
char digit = str->data[str->size - 1 - i] - '0';
num += digit * num_multipliers[i];
}
@@ -146,3 +147,12 @@ TslToken tsl_tokenizer_next(TslTokenizer *self) {
return TSL_TOKEN_UNEXPECTED_SYMBOL;
}
}
+
+int tsl_tokenizer_accept(TslTokenizer *self, TslToken expected_token) {
+ TslToken actual_token = tsl_tokenizer_next(self);
+ if(actual_token != expected_token) {
+ fprintf(stderr, "Error: Expected TODO, got TODO\n");
+ return 0;
+ }
+ return 1;
+}