Use parsee results

This commit is contained in:
Rafał Grodziński
2025-07-17 17:14:19 +09:00
parent 502e4d2f6f
commit 8a708d8936
6 changed files with 102 additions and 32 deletions

View File

@@ -10,9 +10,9 @@ Parsee Parsee::tokenParsee(TokenKind tokenKind, bool isRequired, bool shouldRetu
return parsee;
}
Parsee Parsee::typeParsee() {
Parsee parsee;
parsee.kind = ParseeKind::TYPE;
Parsee Parsee::valueTypeParsee() {
Parsee parsee;
parsee.kind = ParseeKind::VALUE_TYPE;
return parsee;
}

View File

@@ -5,7 +5,7 @@ enum class TokenKind;
enum class ParseeKind {
TOKEN,
TYPE
VALUE_TYPE
};
class Parsee {
@@ -14,15 +14,13 @@ private:
TokenKind tokenKind;
bool isRequired;
bool shouldReturn;
Parsee();
public:
static Parsee tokenParsee(TokenKind tokenKind, bool isRequired, bool shouldReturn);
static Parsee typeParsee();
static Parsee valueTypeParsee();
ParseeKind getKind();
TokenKind getTokenKind();
bool getIsRequired();
bool getShouldReturn();

View File

@@ -0,0 +1,33 @@
#include "ParseeResult.h"
#include "Lexer/Token.h"
#include "Parser/ValueType.h"
ParseeResult ParseeResult::tokenResult(shared_ptr<Token> token) {
ParseeResult parseeResult;
parseeResult.kind = ParseeResultKind::TOKEN;
parseeResult.token = token;
return parseeResult;
}
ParseeResult ParseeResult::valueTypeResult(shared_ptr<ValueType> valueType) {
ParseeResult parseeResult;
parseeResult.kind = ParseeResultKind::VALUE_TYPE;
parseeResult.valueType = valueType;
return parseeResult;
}
ParseeResult::ParseeResult() { }
ParseeResultKind ParseeResult::getKind() {
return kind;
}
shared_ptr<Token> ParseeResult::getToken() {
return token;
}
shared_ptr<ValueType> ParseeResult::getValueType() {
return valueType;
}

View File

@@ -0,0 +1,32 @@
#ifndef PARSEE_RESULT_H
#define PARSEE_RESULT_H
#include <memory>
class Token;
class ValueType;
using namespace std;
enum class ParseeResultKind {
TOKEN,
VALUE_TYPE,
};
class ParseeResult {
private:
ParseeResultKind kind;
shared_ptr<Token> token;
shared_ptr<ValueType> valueType;
ParseeResult();
public:
static ParseeResult tokenResult(shared_ptr<Token> token);
static ParseeResult valueTypeResult(shared_ptr<ValueType> valueType);
ParseeResultKind getKind();
shared_ptr<Token> getToken();
shared_ptr<ValueType> getValueType();
};
#endif