added parsee and parsee group
This commit is contained in:
36
src/Parser/Parsee/Parsee.cpp
Normal file
36
src/Parser/Parsee/Parsee.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
#include "Parsee.h"
|
||||
|
||||
Parsee Parsee::tokenParsee(TokenKind tokenKind, bool isRequired, bool shouldReturn) {
|
||||
Parsee parsee;
|
||||
parsee.kind = ParseeKind::TOKEN;
|
||||
parsee.tokenKind = tokenKind;
|
||||
parsee.isRequired = isRequired;
|
||||
parsee.shouldReturn = shouldReturn;
|
||||
|
||||
return parsee;
|
||||
}
|
||||
|
||||
Parsee Parsee::typeParsee() {
|
||||
Parsee parsee;
|
||||
parsee.kind = ParseeKind::TYPE;
|
||||
|
||||
return parsee;
|
||||
}
|
||||
|
||||
Parsee::Parsee() { }
|
||||
|
||||
ParseeKind Parsee::getKind() {
|
||||
return kind;
|
||||
}
|
||||
|
||||
TokenKind Parsee::getTokenKind() {
|
||||
return tokenKind;
|
||||
}
|
||||
|
||||
bool Parsee::getIsRequired() {
|
||||
return isRequired;
|
||||
}
|
||||
|
||||
bool Parsee::getShouldReturn() {
|
||||
return shouldReturn;
|
||||
}
|
||||
31
src/Parser/Parsee/Parsee.h
Normal file
31
src/Parser/Parsee/Parsee.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef PARSEE_H
|
||||
#define PARSEE_H
|
||||
|
||||
enum class TokenKind;
|
||||
|
||||
enum class ParseeKind {
|
||||
TOKEN,
|
||||
TYPE
|
||||
};
|
||||
|
||||
class Parsee {
|
||||
private:
|
||||
ParseeKind kind;
|
||||
TokenKind tokenKind;
|
||||
bool isRequired;
|
||||
bool shouldReturn;
|
||||
|
||||
Parsee();
|
||||
|
||||
public:
|
||||
static Parsee tokenParsee(TokenKind tokenKind, bool isRequired, bool shouldReturn);
|
||||
static Parsee typeParsee();
|
||||
|
||||
ParseeKind getKind();
|
||||
|
||||
TokenKind getTokenKind();
|
||||
bool getIsRequired();
|
||||
bool getShouldReturn();
|
||||
};
|
||||
|
||||
#endif
|
||||
24
src/Parser/Parsee/ParseeGroup.cpp
Normal file
24
src/Parser/Parsee/ParseeGroup.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
#include "ParseeGroup.h"
|
||||
|
||||
#include "Parsee.h"
|
||||
|
||||
ParseeGroup::ParseeGroup(bool isRequired, vector<Parsee> parsees, optional<ParseeGroup> repeatedGroup):
|
||||
isRequired(isRequired), parsees(parsees) {
|
||||
if (repeatedGroup) {
|
||||
this->repeatedGroup = *repeatedGroup;
|
||||
} else {
|
||||
this->repeatedGroup = {};
|
||||
}
|
||||
}
|
||||
|
||||
bool ParseeGroup::getIsRequired() {
|
||||
return isRequired;
|
||||
}
|
||||
|
||||
vector<Parsee> ParseeGroup::getParsees() {
|
||||
return parsees;
|
||||
}
|
||||
|
||||
optional<reference_wrapper<ParseeGroup>> ParseeGroup::getRepeatedGroup() {
|
||||
return repeatedGroup;
|
||||
}
|
||||
24
src/Parser/Parsee/ParseeGroup.h
Normal file
24
src/Parser/Parsee/ParseeGroup.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef PARSEE_GROUP_H
|
||||
#define PARSEE_GROUP_H
|
||||
|
||||
#include <vector>
|
||||
#include <optional>
|
||||
|
||||
class Parsee;
|
||||
|
||||
using namespace std;
|
||||
|
||||
class ParseeGroup {
|
||||
private:
|
||||
bool isRequired;
|
||||
vector<Parsee> parsees;
|
||||
optional<reference_wrapper<ParseeGroup>> repeatedGroup;
|
||||
|
||||
public:
|
||||
ParseeGroup(bool isRequired, vector<Parsee> parsees, optional<ParseeGroup> repeatedGroup);
|
||||
bool getIsRequired();
|
||||
vector<Parsee> getParsees();
|
||||
optional<reference_wrapper<ParseeGroup>> getRepeatedGroup();
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user