aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bootstrap/lexer.c')
-rw-r--r--src/bootstrap/lexer.c52
1 files changed, 29 insertions, 23 deletions
diff --git a/src/bootstrap/lexer.c b/src/bootstrap/lexer.c
index 1add4dc..49431d0 100644
--- a/src/bootstrap/lexer.c
+++ b/src/bootstrap/lexer.c
@@ -134,6 +134,28 @@ skip_whitespace(Scanner *scanner) {
134 } 134 }
135} 135}
136 136
137bool
138is_delimiter(char c) {
139 switch (c) {
140 case EOF:
141 case '\0':
142 case ';':
143 case '"':
144 case '\'':
145 case '(':
146 case ')':
147 case ' ':
148 case '\f':
149 case '\n':
150 case '\r':
151 case '\t':
152 case '\v': {
153 return true;
154 } break;
155 }
156 return false;
157}
158
137TokenType 159TokenType
138find_primitive_type(StringView value) { 160find_primitive_type(StringView value) {
139 bool is_fixnum = true; 161 bool is_fixnum = true;
@@ -159,28 +181,6 @@ find_primitive_type(StringView value) {
159 return TOKEN_SYMBOL; 181 return TOKEN_SYMBOL;
160} 182}
161 183
162bool
163is_delimiter(char c) {
164 switch (c) {
165 case EOF:
166 case '\0':
167 case ';':
168 case '"':
169 case '\'':
170 case '(':
171 case ')':
172 case ' ':
173 case '\f':
174 case '\n':
175 case '\r':
176 case '\t':
177 case '\v': {
178 return true;
179 } break;
180 }
181 return false;
182}
183
184Tokens 184Tokens
185tokenize(const StringView *sv) { 185tokenize(const StringView *sv) {
186 Tokens tokens = (Tokens){0}; 186 Tokens tokens = (Tokens){0};
@@ -214,7 +214,13 @@ tokenize(const StringView *sv) {
214 n++; 214 n++;
215 } 215 }
216 if (!found) { 216 if (!found) {
217 // TODO: Report error: couldn't find the closing quotes. 217 error_push((Error){
218 .type = ERR_TYPE_LEXER,
219 .value = ERR_UNMATCHED_STRING,
220 .line = line,
221 .col = col,
222 });
223 return tokens;
218 } 224 }
219 Token token = (Token){ 225 Token token = (Token){
220 .value = (StringView){ 226 .value = (StringView){