feat(lexer): parse equal signs
							parent
							
								
									f6e034097d
								
							
						
					
					
						commit
						dc3cfc5fbe
					
				|  | @ -19,6 +19,7 @@ typedef enum mrk_token_type { | ||||||
|   mrk_token_type_dashes, |   mrk_token_type_dashes, | ||||||
|   mrk_token_type_underscores, |   mrk_token_type_underscores, | ||||||
|   mrk_token_type_stars, |   mrk_token_type_stars, | ||||||
|  |   mrk_token_type_equals, | ||||||
|   mrk_token_type_blank_line, |   mrk_token_type_blank_line, | ||||||
|   mrk_token_type_space, |   mrk_token_type_space, | ||||||
|   mrk_token_type_line_break, |   mrk_token_type_line_break, | ||||||
|  |  | ||||||
|  | @ -124,7 +124,8 @@ mrk_lexer_err mrk_lexer_next(mrk_token *out, mrk_lexer *lexer) { | ||||||
|     char c = mrk_lexer_advance(lexer); |     char c = mrk_lexer_advance(lexer); | ||||||
|     switch (c) { |     switch (c) { | ||||||
|     // All these characters have multiple meanings depending on their location
 |     // All these characters have multiple meanings depending on their location
 | ||||||
|     // in the file and how many there are
 |     // in the file and how many there are, so the lexer can only match them as
 | ||||||
|  |     // one or more grouped characters
 | ||||||
|     case '#': |     case '#': | ||||||
|       mrk_lexer_advance_eq(lexer, c); |       mrk_lexer_advance_eq(lexer, c); | ||||||
|       mrk_lexer_emit(out, lexer, mrk_token_type_pounds); |       mrk_lexer_emit(out, lexer, mrk_token_type_pounds); | ||||||
|  | @ -145,6 +146,10 @@ mrk_lexer_err mrk_lexer_next(mrk_token *out, mrk_lexer *lexer) { | ||||||
|       mrk_lexer_advance_eq(lexer, c); |       mrk_lexer_advance_eq(lexer, c); | ||||||
|       mrk_lexer_emit(out, lexer, mrk_token_type_stars); |       mrk_lexer_emit(out, lexer, mrk_token_type_stars); | ||||||
|       break; |       break; | ||||||
|  |     case '=': | ||||||
|  |       mrk_lexer_advance_eq(lexer, c); | ||||||
|  |       mrk_lexer_emit(out, lexer, mrk_token_type_equals); | ||||||
|  |       break; | ||||||
|       // Two consecutive newlines constitute a blank line, otherwise they're
 |       // Two consecutive newlines constitute a blank line, otherwise they're
 | ||||||
|       // ignored as whitespace
 |       // ignored as whitespace
 | ||||||
|     case '\n': |     case '\n': | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue