add identifier to parser

This commit is contained in:
2025-06-01 02:28:27 +01:00
parent b7e9493171
commit d2518afb8e
20 changed files with 733 additions and 251 deletions

View File

@@ -1,30 +1,27 @@
#include "lex.yy.h"
#include "lexer.h"
#include "lex.yy.h"
void lexer(LexerState state) {
yyscan_t scanner;
yyscan_t scanner;
yylex_init(&scanner);
yylex_init(&scanner);
yyset_extra(&state, scanner);
yyset_extra(&state, scanner);
yyset_in(state.file, scanner);
yyset_in(state.file, scanner);
int token;
while ((token = yylex(scanner)) != 0) {
Token * token_struct = create_token(
token,
yyget_lineno(scanner),
state.current_column+1,
yyget_text(scanner)
);
darray_push(state.tokens, token_struct);
free(token_struct);
if (token == TOKEN_NEW_LINE) {
state.current_column = 0;
} else {
state.current_column += yyget_leng(scanner);
}
int token;
while ((token = yylex(scanner)) != 0) {
Token *token_struct =
create_token(token, yyget_lineno(scanner), state.current_column + 1,
yyget_text(scanner));
darray_push(state.tokens, token_struct);
free(token_struct);
if (token == TOKEN_NEW_LINE) {
state.current_column = 0;
} else {
state.current_column += yyget_leng(scanner);
}
yylex_destroy(scanner);
}
yylex_destroy(scanner);
}