stuff (nearly crashing)
This commit is contained in:
@@ -9,6 +9,7 @@ ResultType(SolsParser, charptr) createSolsParser(SolsTokens* input) {
|
||||
if (node.error) {
|
||||
Estr str = CREATE_ESTR(node.as.error);
|
||||
APPEND_ESTR(str, " (in createSolsParser() function)");
|
||||
return Error(SolsParser, charptr, str.str);
|
||||
}
|
||||
SolsParser parser = {
|
||||
.input = input,
|
||||
@@ -60,6 +61,7 @@ void createParserError(SolsParser* parser, char* what) {
|
||||
parser->errors.at[parser->errors.count - 1] = "Failed to allocate more memory for createParserError function";
|
||||
return;
|
||||
}
|
||||
parser->errors.at = tmp;
|
||||
}
|
||||
Estr err = CREATE_ESTR(ESC_BOLD ESC_RED_FG "error: " ESC_RESET ESC_BOLD);
|
||||
|
||||
@@ -96,13 +98,30 @@ void createParserError(SolsParser* parser, char* what) {
|
||||
|
||||
static inline ResultType(Nothing, charptr) parseIdentifier(SolsParser* parser) {
|
||||
ResultType(SolsToken, Nothing) peek = parserPeek(parser, 0);
|
||||
return Error(Nothing, charptr, "Not an error, just curious what errors look like");
|
||||
|
||||
if (peek.error) {
|
||||
return Error(Nothing, charptr, "ruh roh");
|
||||
}
|
||||
ResultType(SolsNode, charptr) node = createSolsNode(SNT_IDENTIFIER, peek.as.success.as.idName);
|
||||
if (node.error) {
|
||||
Estr err = CREATE_ESTR(node.as.error);
|
||||
APPEND_ESTR(err, " (in parseLiteral() function)");
|
||||
return Error(Nothing, charptr, err.str);
|
||||
}
|
||||
// addChildToSolsNode(parser->currentParent, node.as.success);
|
||||
return Success(Nothing, charptr, {});
|
||||
}
|
||||
static inline ResultType(Nothing, charptr) parseLiteral(SolsParser* parser) {
|
||||
return Error(Nothing, charptr, "Not an error, just curious what errors look like");
|
||||
|
||||
ResultType(SolsToken, Nothing) peek = parserPeek(parser, 0);
|
||||
if (peek.error) {
|
||||
return Error(Nothing, charptr, "ruh roh");
|
||||
}
|
||||
ResultType(SolsNode, charptr) node = createSolsNode(SNT_LITERAL, peek.as.success.as.literal);
|
||||
if (node.error) {
|
||||
Estr err = CREATE_ESTR(node.as.error);
|
||||
APPEND_ESTR(err, " (in parseLiteral() function)");
|
||||
return Error(Nothing, charptr, err.str);
|
||||
}
|
||||
// addChildToSolsNode(parser->currentParent, node.as.success);
|
||||
return Success(Nothing, charptr, {});
|
||||
}
|
||||
|
||||
@@ -144,7 +163,7 @@ ResultType(SolsToken, Nothing) parserLookAt(SolsParser* parser, size_t where) {
|
||||
return Success(SolsToken, Nothing, parser->input->at[where]);
|
||||
}
|
||||
|
||||
ResultType(SolsToken, Nothing) parserPeek(SolsParser* parser, size_t ahead) {
|
||||
ResultType(SolsToken, Nothing) parserPeek(SolsParser* parser, int64_t ahead) {
|
||||
if (parser->input == NULL) {
|
||||
return Error(SolsToken, Nothing, {});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user