aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-06-08 12:58:04 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-06-08 12:58:04 +0200
commitbaea074f524676a889043779c80fb17cdd38f30d (patch)
tree4609684954145d092ed684ac38e94b8b04ecd79a /src/main.c
parent4f698ec642547534bac2b37f96de045dd828fd58 (diff)
Do some lexer work
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 2e6011b..9969401 100644
--- a/src/main.c
+++ b/src/main.c
@@ -30,6 +30,31 @@ main(int argc, char **argv)
} toks;
toks.p = lexstring(file.p, file.len, &toks.len);
+ for (size_t i = 0; i < toks.len; i++) {
+ struct lexeme l = toks.p[i];
+ switch (l.kind) {
+ case LEXIDENT:
+ printf("Identifier: ā€˜%.*sā€™\n", (int)l.len, l.p);
+ break;
+ case LEXCOLON: puts("Colon"); break;
+ case LEXLBRACE: puts("Left brace"); break;
+ case LEXLPAR: puts("Left parenthesis"); break;
+ case LEXRBRACE: puts("Right brace"); break;
+ case LEXRPAR: puts("Right parenthesis"); break;
+ case LEXSEMI: puts("Semicolon"); break;
+ case LEXAMP: puts("Ampersand"); break;
+ case LEXEQ: puts("Equals"); break;
+ case LEXLANGL: puts("Left angle bracket"); break;
+ case LEXMINUS: puts("Minus"); break;
+ case LEXPIPE: puts("Pipe"); break;
+ case LEXPLUS: puts("Plus"); break;
+ case LEXRANGL: puts("Right angle bracket"); break;
+ case LEXSLASH: puts("Slash"); break;
+ case LEXSTAR: puts("Asterisk"); break;
+ case LEXTILDE: puts("Tilde"); break;
+ }
+ }
+
#if DEBUG
free(file.p);
free(toks.p);