Single parsing logic

This commit is contained in:
Rafał Grodziński
2025-07-22 15:03:34 +09:00
parent 8a708d8936
commit 3041c4383b
6 changed files with 95 additions and 70 deletions

View File

@@ -13,6 +13,7 @@ Parsee Parsee::tokenParsee(TokenKind tokenKind, bool isRequired, bool shouldRetu
Parsee Parsee::valueTypeParsee() {
Parsee parsee;
parsee.kind = ParseeKind::VALUE_TYPE;
parsee.shouldReturn = true;
return parsee;
}

View File

@@ -7,13 +7,15 @@ ParseeResult ParseeResult::tokenResult(shared_ptr<Token> token) {
ParseeResult parseeResult;
parseeResult.kind = ParseeResultKind::TOKEN;
parseeResult.token = token;
parseeResult.tokensCount = 1;
return parseeResult;
}
ParseeResult ParseeResult::valueTypeResult(shared_ptr<ValueType> valueType) {
ParseeResult ParseeResult::valueTypeResult(shared_ptr<ValueType> valueType, int tokensCount) {
ParseeResult parseeResult;
parseeResult.kind = ParseeResultKind::VALUE_TYPE;
parseeResult.valueType = valueType;
parseeResult.tokensCount = tokensCount;
return parseeResult;
}
@@ -30,4 +32,8 @@ shared_ptr<Token> ParseeResult::getToken() {
shared_ptr<ValueType> ParseeResult::getValueType() {
return valueType;
}
int ParseeResult::getTokensCount() {
return tokensCount;
}

View File

@@ -18,15 +18,17 @@ private:
ParseeResultKind kind;
shared_ptr<Token> token;
shared_ptr<ValueType> valueType;
int tokensCount;
ParseeResult();
public:
static ParseeResult tokenResult(shared_ptr<Token> token);
static ParseeResult valueTypeResult(shared_ptr<ValueType> valueType);
static ParseeResult valueTypeResult(shared_ptr<ValueType> valueType, int tokensCount);
ParseeResultKind getKind();
shared_ptr<Token> getToken();
shared_ptr<ValueType> getValueType();
int getTokensCount();
};
#endif