parserPeek, parserConsume

This commit is contained in:
2026-02-22 17:10:20 +11:00
parent d6a942367e
commit 9409086f3e
2 changed files with 45 additions and 0 deletions

View File

@@ -17,3 +17,27 @@ ResultType(SolsParser, charptr) createSolsParser(SolsTokens* input) {
parser.currentParent = &parser.output;
return Success(SolsParser, charptr, parser);
}
ResultType(Nothing, charptr) parse(SolsParser* parser) {
return Error(Nothing, charptr, "Work in progress");
}
ResultType(SolsToken, Nothing) parserPeek(SolsParser* parser, size_t ahead) {
if (parser->input == NULL) {
return Error(SolsToken, Nothing, {});
}
if (parser->current + ahead - 1 >= parser->input->count) {
return Error(SolsToken, Nothing, {});
}
return Success(SolsToken, Nothing, parser->input->at[parser->current + ahead - 1]);
}
ResultType(SolsToken, Nothing) parserConsume(SolsParser* parser) {
if (parser->input == NULL) {
return Error(SolsToken, Nothing, {});
}
if (parser->current + 1 >= parser->input->count) {
return Error(SolsToken, Nothing, {});
}
return Success(SolsToken, Nothing, parser->input->at[parser->current ++]);
}