wip
This commit is contained in:
@@ -8,6 +8,12 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
class Statement;
|
||||
class StatementBlock;
|
||||
class StatementReturn;
|
||||
class StatementExpression;
|
||||
class StatementInvalid;
|
||||
|
||||
class Statement {
|
||||
public:
|
||||
enum Kind {
|
||||
@@ -20,22 +26,71 @@ public:
|
||||
|
||||
private:
|
||||
Kind kind;
|
||||
shared_ptr<Token> token;
|
||||
shared_ptr<Expression> expression;
|
||||
shared_ptr<Statement> blockStatement;
|
||||
vector<shared_ptr<Statement>> statements;
|
||||
string name;
|
||||
//shared_ptr<Token> token;
|
||||
//shared_ptr<Expression> expression;
|
||||
//shared_ptr<Statement> blockStatement;
|
||||
//vector<shared_ptr<Statement>> statements;
|
||||
//string name;
|
||||
|
||||
public:
|
||||
Statement(Kind kind, shared_ptr<Token> token, shared_ptr<Expression> expression, shared_ptr<Statement> blockStatement, vector<shared_ptr<Statement>> statements, string name);
|
||||
Statement(Kind kind);
|
||||
//Statement(Kind kind, shared_ptr<Token> token, shared_ptr<Expression> expression, shared_ptr<Statement> blockStatement, vector<shared_ptr<Statement>> statements, string name);
|
||||
Kind getKind();
|
||||
shared_ptr<Token> getToken();
|
||||
shared_ptr<Expression> getExpression();
|
||||
shared_ptr<Statement> getBlockStatement();
|
||||
vector<shared_ptr<Statement>> getStatements();
|
||||
string getName();
|
||||
//shared_ptr<Token> getToken();
|
||||
//shared_ptr<Expression> getExpression();
|
||||
//shared_ptr<Statement> getBlockStatement();
|
||||
//vector<shared_ptr<Statement>> getStatements();
|
||||
//string getName();
|
||||
bool isValid();
|
||||
string toString();
|
||||
};
|
||||
|
||||
class StatementFunctionDeclaration: public Statement {
|
||||
private:
|
||||
string name;
|
||||
shared_ptr<StatementBlock> statementBlock;
|
||||
|
||||
public:
|
||||
StatementFunctionDeclaration(string name, shared_ptr<StatementBlock> statementBlock);
|
||||
string getName();
|
||||
shared_ptr<StatementBlock> getStatementBlock();
|
||||
};
|
||||
|
||||
class StatementBlock: public Statement {
|
||||
private:
|
||||
vector<shared_ptr<Statement>> statements;
|
||||
|
||||
public:
|
||||
StatementBlock(vector<shared_ptr<Statement>> statements);
|
||||
vector<shared_ptr<Statement>> getStatements();
|
||||
};
|
||||
|
||||
class StatementReturn: public Statement {
|
||||
private:
|
||||
shared_ptr<Expression> expression;
|
||||
|
||||
public:
|
||||
StatementReturn(shared_ptr<Expression> expression);
|
||||
shared_ptr<Expression> getExpression();
|
||||
};
|
||||
|
||||
class StatementExpression: public Statement {
|
||||
private:
|
||||
shared_ptr<Expression> expression;
|
||||
|
||||
public:
|
||||
StatementExpression(shared_ptr<Expression> expression);
|
||||
shared_ptr<Expression> getExpression();
|
||||
};
|
||||
|
||||
class StatementInvalid: public Statement {
|
||||
//private:
|
||||
// string message;
|
||||
|
||||
public:
|
||||
StatementInvalid();
|
||||
//StatementInvalid(string message);
|
||||
//string getMessage();
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user