diff --git a/src/lexer/lexer.c b/src/lexer/lexer.c index de9e7ad..28a48b6 100644 --- a/src/lexer/lexer.c +++ b/src/lexer/lexer.c @@ -7,7 +7,7 @@ #include struct _SolsTokenTypeMap SolsTokenTypeMap[] = { - {"puts", STT_KW_STRUCT}, + {"puts", STT_KW_PUTS}, {"if", STT_KW_IF}, {"while", STT_KW_WHILE}, {"def", STT_KW_DEF}, @@ -17,7 +17,7 @@ struct _SolsTokenTypeMap SolsTokenTypeMap[] = { {"(", STT_OPEN_PAREN}, {")", STT_CLOSE_PAREN}, {"+", STT_OP_ADD}, - {"-", STT_OP_DIV}, + {"-", STT_OP_SUB}, {"*", STT_OP_MUL}, {"/", STT_OP_DIV}, {"=", STT_OP_SET}, @@ -98,6 +98,9 @@ ResultType(SolsLexer, charptr) createLexer(char* input) { ResultType(char, Nothing) lexerPeek(SolsLexer* lexer, size_t ahead) { + // Reduce by 1 so peeking at the next token with 1 works + ahead--; + // Bounds and null checking if (lexer->input == NULL) { return Error(char, Nothing, {}); @@ -497,7 +500,7 @@ ResultType(Nothing, charptr) lex(SolsLexer* lexer) { buf = CREATE_ESTR(""); } ResultType(char, Nothing) next = lexerPeek(lexer, 1); - if (next.error || next.as.success != chr.as.success || next.as.success != '=') { + if (next.error || (next.as.success != chr.as.success && next.as.success != '=')) { char tmp[] = {chr.as.success, '\0'}; ResultType(SolsToken, charptr) result = identifyToken(tmp); if (result.error) {