#include "Statement.h" /*Statement::Statement(Kind kind, shared_ptr token, shared_ptr expression, shared_ptr blockStatement, vector> 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 Statement::getToken() { return token; }*/ /*shared_ptr Statement::getExpression() { return expression; }*/ /*shared_ptr Statement::getBlockStatement() { return blockStatement; }*/ /*vector> Statement::getStatements() { return statements; }*/ /*string Statement::getName() { return name; }*/ bool Statement::isValid() { return kind != Statement::Kind::INVALID; } string Statement::toString() { /*switch (kind) { case EXPRESSION: return expression->toString(); case BLOCK: { string value; for (int i=0; itoString(); if (i < statements.size() - 1) value += "\n"; } return value; } case FUNCTION_DECLARATION: return "FUNCTION " + name + "\n" + blockStatement->toString() + "\n;"; case RETURN: { string value = "RETURN"; if (expression != nullptr) { value += " " + expression->toString(); } return value; } case INVALID: return "INVALID"; }*/ return "abc"; } // // StatementFunctionDeclaration StatementFunctionDeclaration::StatementFunctionDeclaration(string name, shared_ptr statementBlock): Statement(Statement::Kind::FUNCTION_DECLARATION), name(name), statementBlock(statementBlock) { } string StatementFunctionDeclaration::getName() { return name; } shared_ptr StatementFunctionDeclaration::getStatementBlock() { return statementBlock; } // // StatementBlock StatementBlock::StatementBlock(vector> statements): Statement(Statement::Kind::BLOCK), statements(statements) { } vector> StatementBlock::getStatements() { return statements; } // // StatementReturn StatementReturn::StatementReturn(shared_ptr expression): Statement(Statement::Kind::RETURN), expression(expression) { } shared_ptr StatementReturn::getExpression() { return expression; } // // StatementExpression StatementExpression::StatementExpression(shared_ptr expression): Statement(Statement::Kind::EXPRESSION), expression(expression) { } shared_ptr StatementExpression::getExpression() { return expression; } // // StatementInvalid StatementInvalid::StatementInvalid(): Statement(Statement::Kind::INVALID) { }