diff options
Diffstat (limited to 'src/bootstrap/lexer.c')
-rw-r--r-- | src/bootstrap/lexer.c | 52 |
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 | ||
137 | bool | ||
138 | is_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 | |||
137 | TokenType | 159 | TokenType |
138 | find_primitive_type(StringView value) { | 160 | find_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 | ||
162 | bool | ||
163 | is_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 | |||
184 | Tokens | 184 | Tokens |
185 | tokenize(const StringView *sv) { | 185 | tokenize(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){ |