stuff
This commit is contained in:
@@ -61,3 +61,15 @@ void freeSolsToken(SolsToken* token) {
|
||||
freeSolsType(&token->as.type);
|
||||
}
|
||||
}
|
||||
|
||||
ResultType(SolsTokens, charptr) createSolsTokens() {
|
||||
SolsTokens tokens = {
|
||||
.at = malloc(sizeof(SolsToken) * 32),
|
||||
.capacity = 32,
|
||||
.count = 0
|
||||
};
|
||||
if (tokens.at == NULL) {
|
||||
return Error(SolsTokens, charptr, "Failed to allocate memory (in createSolsTokens() function)");
|
||||
}
|
||||
return Success(SolsTokens, charptr, tokens);
|
||||
}
|
||||
|
||||
@@ -50,5 +50,9 @@ typedef struct SolsTokens {
|
||||
size_t capacity;
|
||||
} SolsTokens;
|
||||
|
||||
Result(SolsTokens, charptr);
|
||||
// Creates a SolsTokens holder.
|
||||
ResultType(SolsTokens, charptr) createSolsTokens();
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "lexer.h"
|
||||
#include "SolsToken.h"
|
||||
#include "../include/error.h"
|
||||
#include "../include/estr.h"
|
||||
|
||||
ResultType(SolsLexer, charptr) createLexer(char* input) {
|
||||
char* inputcopy = malloc(strlen(input) + 1);
|
||||
@@ -7,8 +9,15 @@ ResultType(SolsLexer, charptr) createLexer(char* input) {
|
||||
return Error(SolsLexer, charptr, "Couldn't copy string into lexer (in createLexer() function)");
|
||||
}
|
||||
strcpy(inputcopy, input);
|
||||
ResultType(SolsTokens, charptr) tokens = createSolsTokens();
|
||||
if (tokens.error) {
|
||||
Estr e = CREATE_ESTR(tokens.as.error);
|
||||
APPEND_ESTR(e, " (in createLexer() function)");
|
||||
return Error(SolsLexer, charptr, e.str);
|
||||
}
|
||||
SolsLexer lexer = {
|
||||
.input = inputcopy,
|
||||
.output = tokens.as.success,
|
||||
.current = 0,
|
||||
};
|
||||
return Success(SolsLexer, charptr, lexer);
|
||||
|
||||
Reference in New Issue
Block a user