@@ -181,7 +181,6 @@ token_T* lexer_parse_html_comment_content(lexer_T* lexer) {
181181 }
182182
183183 lexer_advance (lexer );
184-
185184 lexer -> state = STATE_HTML_COMMENT_CLOSE ;
186185
187186 return token_init (value , TOKEN_HTML_COMMENT_CONTENT , lexer );
@@ -191,7 +190,7 @@ token_T* lexer_handle_data_state(lexer_T* lexer) {
191190 switch (lexer -> current_character ) {
192191 case '\n' : {
193192 return lexer_advance_current (lexer , TOKEN_NEWLINE );
194- } break ;
193+ }
195194
196195 case '<' : {
197196 const char next_character = lexer_peek (lexer , 1 );
@@ -202,14 +201,14 @@ token_T* lexer_handle_data_state(lexer_T* lexer) {
202201 lexer_advance (lexer );
203202 lexer_advance (lexer );
204203 return token_init ("<%" , TOKEN_ERB_START , lexer );
205- } break ;
204+ }
206205
207206 case '/' : {
208207 lexer -> state = STATE_HTML_TAG_CLOSE ;
209208 lexer_advance (lexer );
210209 lexer_advance (lexer );
211210 return token_init ("</" , TOKEN_HTML_CLOSE_TAG_START , lexer );
212- } break ;
211+ }
213212
214213 case '!' : {
215214 if (lexer_peek (lexer , 2 ) == '-' && lexer_peek (lexer , 3 ) == '-' ) {
@@ -224,14 +223,11 @@ token_T* lexer_handle_data_state(lexer_T* lexer) {
224223 // TODO: handle this case
225224 lexer_error (lexer , "Unexpected character in lexer_handle_data_state" );
226225 }
227-
228- default : {
229- lexer -> state = STATE_HTML_TAG_OPEN ;
230- lexer_advance (lexer );
231- return token_init ("<" , TOKEN_HTML_TAG_START , lexer );
232- }
233226 }
234- } break ;
227+
228+ lexer -> state = STATE_HTML_TAG_OPEN ;
229+ return lexer_advance_current (lexer , TOKEN_HTML_TAG_START );
230+ }
235231
236232 case '%' : {
237233 if (lexer_peek (lexer , 1 ) == '>' ) {
@@ -243,12 +239,10 @@ token_T* lexer_handle_data_state(lexer_T* lexer) {
243239 }
244240
245241 lexer_error (lexer , "Unexpected character in lexer_handle_html_attributes_state" );
246- } break ;
247-
248- default : {
249- return lexer_parse_text_content (lexer );
250242 }
251243 }
244+
245+ return lexer_parse_text_content (lexer );
252246}
253247
254248token_T * lexer_handle_erb_open_state (lexer_T * lexer ) {
@@ -272,12 +266,12 @@ token_T* lexer_handle_html_attributes_state(lexer_T* lexer) {
272266 switch (lexer -> current_character ) {
273267 case ' ' : {
274268 return lexer_advance_current (lexer , TOKEN_WHITESPACE );
275- } break ;
269+ }
276270
277271 case '>' : {
278272 lexer -> state = STATE_DATA ;
279273 return lexer_advance_current (lexer , TOKEN_HTML_TAG_END );
280- } break ;
274+ }
281275
282276 case '/' : {
283277 if (lexer_peek (lexer , 1 ) == '>' ) {
@@ -289,35 +283,30 @@ token_T* lexer_handle_html_attributes_state(lexer_T* lexer) {
289283
290284 // TODO: handle this case
291285 lexer_error (lexer , "Unexpected character in lexer_handle_html_attributes_state" );
292- } break ;
293-
294- default : {
295- lexer -> state = STATE_HTML_ATTRIBUTE_NAME ;
296- return lexer_parse_attribute_name (lexer );
297286 }
298287 }
288+
289+ lexer -> state = STATE_HTML_ATTRIBUTE_NAME ;
290+ return lexer_parse_attribute_name (lexer );
299291}
300292
301293// <div class="hello"></div>
302294// ^
303295//
304296token_T * lexer_handle_tag_name_state (lexer_T * lexer ) {
305-
306297 switch (lexer -> current_character ) {
307298 case ' ' : {
308299 lexer -> state = STATE_HTML_ATTRIBUTES ;
309300 return lexer_advance_current (lexer , TOKEN_WHITESPACE );
310- } break ;
301+ }
311302
312303 case '>' : {
313304 lexer -> state = STATE_DATA ;
314305 return lexer_advance_current (lexer , TOKEN_HTML_TAG_END );
315- } break ;
316-
317- default : {
318- lexer_error (lexer , "Unexpected character in lexer_handle_tag_name_state" );
319306 }
320307 }
308+
309+ lexer_error (lexer , "Unexpected character in lexer_handle_tag_name_state" );
321310}
322311
323312// <div class="hello"></div>
@@ -331,12 +320,12 @@ token_T* lexer_handle_html_attribute_name_state(lexer_T* lexer) {
331320 case '=' : {
332321 lexer -> state = STATE_HTML_ATTRIBUTE_EQUALS ;
333322 return lexer_advance_current (lexer , TOKEN_HTML_EQUALS );
334- } break ;
323+ }
335324
336325 case ' ' : {
337326 lexer -> state = STATE_HTML_ATTRIBUTES ;
338327 return lexer_advance_current (lexer , TOKEN_WHITESPACE );
339- } break ;
328+ }
340329
341330 case '/' : {
342331 if (lexer_peek (lexer , 1 ) == '>' ) {
@@ -348,116 +337,88 @@ token_T* lexer_handle_html_attribute_name_state(lexer_T* lexer) {
348337
349338 // TODO: handle this case
350339 lexer_error (lexer , "Unexpected character in lexer_handle_html_attribute_name_state" );
351- } break ;
340+ }
352341
353342 case '>' : {
354343 lexer -> state = STATE_DATA ;
355344 return lexer_advance_current (lexer , TOKEN_HTML_TAG_END );
356- } break ;
357-
358- default : {
359- lexer_error (lexer , "Unexpected character in lexer_handle_html_attribute_name_state" );
360345 }
361346 }
347+
348+ lexer_error (lexer , "Unexpected character in lexer_handle_html_attribute_name_state" );
362349}
363350
364351token_T * lexer_handle_html_attribute_equals_state (lexer_T * lexer ) {
365352 switch (lexer -> current_character ) {
366- case '"' : {
367- return lexer_advance_current (lexer , TOKEN_HTML_QUOTE );
368- } break ;
369-
370- case '\'' : {
371- return lexer_advance_current (lexer , TOKEN_HTML_QUOTE );
372- } break ;
353+ case '"' :
354+ case '\'' : return lexer_advance_current (lexer , TOKEN_HTML_QUOTE );
373355
374356 case ' ' : {
375357 lexer -> state = STATE_HTML_ATTRIBUTES ;
376358 return lexer_advance_current (lexer , TOKEN_WHITESPACE );
377- } break ;
359+ }
378360
379361 case '>' : {
380362 lexer -> state = STATE_DATA ;
381363 return lexer_advance_current (lexer , TOKEN_HTML_TAG_END );
382- } break ;
383-
384- default : {
385- return lexer_parse_attribute_value (lexer );
386364 }
387365 }
366+
367+ return lexer_parse_attribute_value (lexer );
388368}
389369
390370token_T * lexer_handle_html_attribute_value_state (lexer_T * lexer ) {
391371 switch (lexer -> current_character ) {
392372 case '"' : {
393373 lexer -> state = STATE_HTML_ATTRIBUTES ;
394374 return lexer_advance_current (lexer , TOKEN_HTML_QUOTE );
395- } break ;
375+ }
396376
397377 case '\'' : {
398378 lexer -> state = STATE_HTML_ATTRIBUTES ;
399379 return lexer_advance_current (lexer , TOKEN_HTML_QUOTE );
400- } break ;
380+ }
401381
402382 case ' ' : {
403383 lexer -> state = STATE_HTML_ATTRIBUTES ;
404384 return lexer_advance_current (lexer , TOKEN_WHITESPACE );
405385 }
406-
407- default : {
408- lexer_error (lexer , "Unexpected character in lexer_handle_html_attribute_value_state" );
409- }
410386 }
387+
388+ lexer_error (lexer , "Unexpected character in lexer_handle_html_attribute_value_state" );
411389}
412390
413391token_T * lexer_handle_html_tag_open_state (lexer_T * lexer ) {
414- switch (lexer -> current_character ) {
415- case ' ' : {
416- lexer_error (lexer , "Unexpected character in lexer_handle_html_tag_open_state" );
417- } break ;
418-
419- default : {
420- lexer -> state = STATE_HTML_ATTRIBUTES ;
421- return lexer_parse_tag_name (lexer );
422- }
392+ if (lexer -> current_character == ' ' ) {
393+ lexer_error (lexer , "Unexpected character in lexer_handle_html_tag_open_state" );
423394 }
395+
396+ lexer -> state = STATE_HTML_ATTRIBUTES ;
397+ return lexer_parse_tag_name (lexer );
424398}
425399
426400token_T * lexer_handle_html_tag_close_state (lexer_T * lexer ) {
427- switch (lexer -> current_character ) {
428- case '>' : {
429- lexer -> state = STATE_DATA ;
430- return lexer_advance_current (lexer , TOKEN_HTML_TAG_END );
431- }
432-
433- default : {
434- return lexer_parse_tag_name (lexer );
435- }
401+ if (lexer -> current_character == '>' ) {
402+ lexer -> state = STATE_DATA ;
403+ return lexer_advance_current (lexer , TOKEN_HTML_TAG_END );
436404 }
405+
406+ return lexer_parse_tag_name (lexer );
437407}
438408
439409token_T * lexer_handle_html_comment_open_state (lexer_T * lexer ) {
440410 return lexer_parse_html_comment_content (lexer );
441411}
442412
443413token_T * lexer_handle_html_comment_close_state (lexer_T * lexer ) {
444- switch (lexer -> current_character ) {
445- case '-' : {
446- if (lexer_peek (lexer , 1 ) == '-' && lexer_peek (lexer , 2 ) == '>' ) {
447- lexer_advance (lexer );
448- lexer_advance (lexer );
449- lexer_advance (lexer );
450- return token_init ("-->" , TOKEN_HTML_COMMENT_END , lexer );
451- }
452-
453- // TODO: handle this case
454- lexer_error (lexer , "Unexpected character in lexer_handle_html_comment_close_state" );
455- }
456-
457- default : {
458- lexer_error (lexer , "Unexpected character in lexer_handle_html_comment_close_state" );
459- }
414+ if (lexer -> current_character == '-' && lexer_peek (lexer , 1 ) == '-' && lexer_peek (lexer , 2 ) == '>' ) {
415+ lexer_advance (lexer );
416+ lexer_advance (lexer );
417+ lexer_advance (lexer );
418+ return token_init ("-->" , TOKEN_HTML_COMMENT_END , lexer );
460419 }
420+
421+ lexer_error (lexer , "Unexpected character in lexer_handle_html_comment_close_state" );
461422}
462423
463424token_T * lexer_next_token (lexer_T * lexer ) {
0 commit comments