This commit is contained in:
Rafał Grodziński
2025-06-03 12:04:43 +09:00
parent f5952ad3ee
commit 4665a1f5f5
7 changed files with 184 additions and 74 deletions

View File

@@ -1,39 +1,41 @@
#include "Statement.h"
Statement::Statement(Kind kind, shared_ptr<Token> token, shared_ptr<Expression> expression, shared_ptr<Statement> blockStatement, vector<shared_ptr<Statement>> statements, string name):
/*Statement::Statement(Kind kind, shared_ptr<Token> token, shared_ptr<Expression> expression, shared_ptr<Statement> blockStatement, vector<shared_ptr<Statement>> statements, string name):
kind(kind), token(token), expression(expression), blockStatement(blockStatement), statements(statements), name(name) {
}*/
Statement::Statement(Kind kind): kind(kind) {
}
Statement::Kind Statement::getKind() {
return kind;
}
shared_ptr<Token> Statement::getToken() {
/*shared_ptr<Token> Statement::getToken() {
return token;
}
}*/
shared_ptr<Expression> Statement::getExpression() {
/*shared_ptr<Expression> Statement::getExpression() {
return expression;
}
}*/
shared_ptr<Statement> Statement::getBlockStatement() {
/*shared_ptr<Statement> Statement::getBlockStatement() {
return blockStatement;
}
}*/
vector<shared_ptr<Statement>> Statement::getStatements() {
/*vector<shared_ptr<Statement>> Statement::getStatements() {
return statements;
}
}*/
string Statement::getName() {
/*string Statement::getName() {
return name;
}
}*/
bool Statement::isValid() {
return kind != Statement::Kind::INVALID;
}
string Statement::toString() {
switch (kind) {
/*switch (kind) {
case EXPRESSION:
return expression->toString();
case BLOCK: {
@@ -56,5 +58,57 @@ string Statement::toString() {
}
case INVALID:
return "INVALID";
}
}
}*/
return "abc";
}
//
// StatementFunctionDeclaration
StatementFunctionDeclaration::StatementFunctionDeclaration(string name, shared_ptr<StatementBlock> statementBlock):
Statement(Statement::Kind::FUNCTION_DECLARATION), name(name), statementBlock(statementBlock) {
}
string StatementFunctionDeclaration::getName() {
return name;
}
shared_ptr<StatementBlock> StatementFunctionDeclaration::getStatementBlock() {
return statementBlock;
}
//
// StatementBlock
StatementBlock::StatementBlock(vector<shared_ptr<Statement>> statements):
Statement(Statement::Kind::BLOCK), statements(statements) {
}
vector<shared_ptr<Statement>> StatementBlock::getStatements() {
return statements;
}
//
// StatementReturn
StatementReturn::StatementReturn(shared_ptr<Expression> expression):
Statement(Statement::Kind::RETURN), expression(expression) {
}
shared_ptr<Expression> StatementReturn::getExpression() {
return expression;
}
//
// StatementExpression
StatementExpression::StatementExpression(shared_ptr<Expression> expression):
Statement(Statement::Kind::EXPRESSION), expression(expression) {
}
shared_ptr<Expression> StatementExpression::getExpression() {
return expression;
}
//
// StatementInvalid
StatementInvalid::StatementInvalid():
Statement(Statement::Kind::INVALID) {
}