parserPeek, parserConsume
This commit is contained in:
@@ -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 ++]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user