add more parses and fix minor memory leak

This commit is contained in:
2025-05-31 20:03:06 +01:00
parent d18ff96f8f
commit a614eab8fc
16 changed files with 188 additions and 50 deletions

View File

@@ -18,6 +18,16 @@ int yywrap(void *) {
"," {return TOKEN_COMMA; }
":" {return TOKEN_COLON; }
"=" { return TOKEN_ASSIGN; }
"+=" { return TOKEN_ASSIGN_PLUS; }
"-=" { return TOKEN_ASSIGN_MINUS; }
"//=" { return TOKEN_ASSIGN_FLOORDIV; }
"/=" { return TOKEN_ASSIGN_SLASH; }
"%=" { return TOKEN_ASSIGN_MODULO; }
"*=" { return TOKEN_ASSIGN_STAR; }
"^=" { return TOKEN_ASSIGN_CARET; }
"not"[ \t]+"in" { return TOKEN_NOT_IN; }
"&&" { return TOKEN_AND; }
"||" { return TOKEN_OR; }
@@ -25,7 +35,6 @@ int yywrap(void *) {
">=" { return TOKEN_GE; }
"!=" { return TOKEN_NE; }
"==" { return TOKEN_EQ; }
"=" { return TOKEN_ASSIGN; }
"//" { return TOKEN_FLOORDIV; }
"<" { return TOKEN_LT; }
">" { return TOKEN_GT; }

View File

@@ -19,6 +19,7 @@ void lexer(LexerState state) {
yyget_text(scanner)
);
darray_push(state.tokens, token_struct);
free(token_struct);
if (token == TOKEN_NEW_LINE) {
state.current_column = 0;
} else {

View File

@@ -1,3 +1,6 @@
#ifndef LEXER_H
#define LEXER_H
#include "token.h"
#include "../dynamic_array/darray.h"
#include <stdio.h>
@@ -11,3 +14,6 @@ typedef struct {
} LexerState;
void lexer(LexerState state);
#endif // LEXER_H

View File

@@ -10,6 +10,15 @@ typedef enum {
TOKEN_NEW_LINE,
TOKEN_INDENT,
TOKEN_ASSIGN,
TOKEN_ASSIGN_PLUS,
TOKEN_ASSIGN_MINUS,
TOKEN_ASSIGN_FLOORDIV,
TOKEN_ASSIGN_SLASH,
TOKEN_ASSIGN_MODULO,
TOKEN_ASSIGN_STAR,
TOKEN_ASSIGN_CARET,
// Operators
TOKEN_AND, // &&
TOKEN_OR, // ||
@@ -20,7 +29,6 @@ typedef enum {
TOKEN_GT, // >
TOKEN_NE, // !=
TOKEN_EQ, // ==
TOKEN_ASSIGN,
TOKEN_PLUS, // +
TOKEN_MINUS, // -
TOKEN_MODULO, // %
@@ -72,5 +80,5 @@ typedef struct {
} Token;
Token *create_token(TokenType type, int line, int column, char *value);
void free_token(void * ptr);
void free_token(void *ptr);
#endif