add more parses and fix minor memory leak
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user