Skip to content

Commit 93a7970

Browse files
authored
Clean up Lexer by using lexer_advance_current (#23)
1 parent 2f0a7e6 commit 93a7970

File tree

1 file changed

+16
-32
lines changed

1 file changed

+16
-32
lines changed

src/lexer.c

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,7 @@ token_T* lexer_parse_html_comment_content(lexer_T* lexer) {
190190
token_T* lexer_handle_data_state(lexer_T* lexer) {
191191
switch (lexer->current_character) {
192192
case '\n': {
193-
lexer_advance(lexer);
194-
return token_init("\n", TOKEN_NEWLINE, lexer);
193+
return lexer_advance_current(lexer, TOKEN_NEWLINE);
195194
} break;
196195

197196
case '<': {
@@ -272,14 +271,12 @@ token_T* lexer_handle_erb_open_state(lexer_T* lexer) {
272271
token_T* lexer_handle_html_attributes_state(lexer_T* lexer) {
273272
switch (lexer->current_character) {
274273
case ' ': {
275-
lexer_advance(lexer);
276-
return token_init(" ", TOKEN_WHITESPACE, lexer);
274+
return lexer_advance_current(lexer, TOKEN_WHITESPACE);
277275
} break;
278276

279277
case '>': {
280278
lexer->state = STATE_DATA;
281-
lexer_advance(lexer);
282-
return token_init(">", TOKEN_HTML_TAG_END, lexer);
279+
return lexer_advance_current(lexer, TOKEN_HTML_TAG_END);
283280
} break;
284281

285282
case '/': {
@@ -308,15 +305,13 @@ token_T* lexer_handle_tag_name_state(lexer_T* lexer) {
308305

309306
switch (lexer->current_character) {
310307
case ' ': {
311-
lexer_advance(lexer);
312308
lexer->state = STATE_HTML_ATTRIBUTES;
313-
return token_init(" ", TOKEN_WHITESPACE, lexer);
309+
return lexer_advance_current(lexer, TOKEN_WHITESPACE);
314310
} break;
315311

316312
case '>': {
317313
lexer->state = STATE_DATA;
318-
lexer_advance(lexer);
319-
return token_init(">", TOKEN_HTML_TAG_END, lexer);
314+
return lexer_advance_current(lexer, TOKEN_HTML_TAG_END);
320315
} break;
321316

322317
default: {
@@ -334,15 +329,13 @@ token_T* lexer_handle_tag_name_state(lexer_T* lexer) {
334329
token_T* lexer_handle_html_attribute_name_state(lexer_T* lexer) {
335330
switch (lexer->current_character) {
336331
case '=': {
337-
lexer_advance(lexer);
338332
lexer->state = STATE_HTML_ATTRIBUTE_EQUALS;
339-
return token_init("=", TOKEN_HTML_EQUALS, lexer);
333+
return lexer_advance_current(lexer, TOKEN_HTML_EQUALS);
340334
} break;
341335

342336
case ' ': {
343-
lexer_advance(lexer);
344337
lexer->state = STATE_HTML_ATTRIBUTES;
345-
return token_init(" ", TOKEN_WHITESPACE, lexer);
338+
return lexer_advance_current(lexer, TOKEN_WHITESPACE);
346339
} break;
347340

348341
case '/': {
@@ -358,9 +351,8 @@ token_T* lexer_handle_html_attribute_name_state(lexer_T* lexer) {
358351
} break;
359352

360353
case '>': {
361-
lexer_advance(lexer);
362354
lexer->state = STATE_DATA;
363-
return token_init(">", TOKEN_HTML_TAG_END, lexer);
355+
return lexer_advance_current(lexer, TOKEN_HTML_TAG_END);
364356
} break;
365357

366358
default: {
@@ -372,25 +364,21 @@ token_T* lexer_handle_html_attribute_name_state(lexer_T* lexer) {
372364
token_T* lexer_handle_html_attribute_equals_state(lexer_T* lexer) {
373365
switch (lexer->current_character) {
374366
case '"': {
375-
lexer_advance(lexer);
376-
return token_init("\"", TOKEN_HTML_QUOTE, lexer);
367+
return lexer_advance_current(lexer, TOKEN_HTML_QUOTE);
377368
} break;
378369

379370
case '\'': {
380-
lexer_advance(lexer);
381-
return token_init("'", TOKEN_HTML_QUOTE, lexer);
371+
return lexer_advance_current(lexer, TOKEN_HTML_QUOTE);
382372
} break;
383373

384374
case ' ': {
385-
lexer_advance(lexer);
386375
lexer->state = STATE_HTML_ATTRIBUTES;
387-
return token_init(" ", TOKEN_WHITESPACE, lexer);
376+
return lexer_advance_current(lexer, TOKEN_WHITESPACE);
388377
} break;
389378

390379
case '>': {
391-
lexer_advance(lexer);
392380
lexer->state = STATE_DATA;
393-
return token_init(">", TOKEN_HTML_TAG_END, lexer);
381+
return lexer_advance_current(lexer, TOKEN_HTML_TAG_END);
394382
} break;
395383

396384
default: {
@@ -402,21 +390,18 @@ token_T* lexer_handle_html_attribute_equals_state(lexer_T* lexer) {
402390
token_T* lexer_handle_html_attribute_value_state(lexer_T* lexer) {
403391
switch (lexer->current_character) {
404392
case '"': {
405-
lexer_advance(lexer);
406393
lexer->state = STATE_HTML_ATTRIBUTES;
407-
return token_init("\"", TOKEN_HTML_QUOTE, lexer);
394+
return lexer_advance_current(lexer, TOKEN_HTML_QUOTE);
408395
} break;
409396

410397
case '\'': {
411-
lexer_advance(lexer);
412398
lexer->state = STATE_HTML_ATTRIBUTES;
413-
return token_init("'", TOKEN_HTML_QUOTE, lexer);
399+
return lexer_advance_current(lexer, TOKEN_HTML_QUOTE);
414400
} break;
415401

416402
case ' ': {
417-
lexer_advance(lexer);
418403
lexer->state = STATE_HTML_ATTRIBUTES;
419-
return token_init(" ", TOKEN_WHITESPACE, lexer);
404+
return lexer_advance_current(lexer, TOKEN_WHITESPACE);
420405
}
421406

422407
default: {
@@ -441,9 +426,8 @@ token_T* lexer_handle_html_tag_open_state(lexer_T* lexer) {
441426
token_T* lexer_handle_html_tag_close_state(lexer_T* lexer) {
442427
switch (lexer->current_character) {
443428
case '>': {
444-
lexer_advance(lexer);
445429
lexer->state = STATE_DATA;
446-
return token_init(">", TOKEN_HTML_TAG_END, lexer);
430+
return lexer_advance_current(lexer, TOKEN_HTML_TAG_END);
447431
}
448432

449433
default: {

0 commit comments

Comments
 (0)