Bug fixes
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
#include <ctype.h>
|
||||
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user