summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/token.cc9
-rw-r--r--src/tokenizer.cc6
2 files changed, 14 insertions, 1 deletions
diff --git a/src/token.cc b/src/token.cc
index bac5a5a..171f7ee 100644
--- a/src/token.cc
+++ b/src/token.cc
@@ -11,7 +11,14 @@
X(Invalid_Literal) \
X(Identifier)
-#define TOKEN_KINDS_SLEX X(Hash, '#')
+#define TOKEN_KINDS_SLEX \
+ X(Hash, '#') \
+ X(LBrace, '{') \
+ X(RBrace, '}') \
+ X(LParen, '(') \
+ X(RParen, ')') \
+ X(LBracket, '[') \
+ X(RBracket, ']')
#define TOKEN_KIND(name) Token_Kind_##name
diff --git a/src/tokenizer.cc b/src/tokenizer.cc
index c3889b9..6a31ff6 100644
--- a/src/tokenizer.cc
+++ b/src/tokenizer.cc
@@ -112,6 +112,12 @@ bool tokenizer_next(Tokenizer* tokenizer, Token* out) {
}
switch (c) {
+#define X(name, lex) \
+ case lex: \
+ *out = tokenizer_make_token(tokenizer, TOKEN_KIND(name), cursor, advance);
+
+ TOKEN_KINDS_SLEX;
+#undef X
default:
*out = tokenizer_make_token(tokenizer, Token_Kind_Invalid_Char, cursor,
advance);