Changed statement kinds

This commit is contained in:
Rafał Grodziński
2025-06-23 11:33:57 +09:00
parent f1ae9c61bc
commit fefde721c0
7 changed files with 12 additions and 15 deletions

View File

@@ -29,10 +29,10 @@ shared_ptr<llvm::Module> ModuleBuilder::getModule() {
void ModuleBuilder::buildStatement(shared_ptr<Statement> statement) { void ModuleBuilder::buildStatement(shared_ptr<Statement> statement) {
switch (statement->getKind()) { switch (statement->getKind()) {
case StatementKind::FUNCTION_DECLARATION: case StatementKind::FUNCTION:
buildFunctionDeclaration(dynamic_pointer_cast<StatementFunction>(statement)); buildFunctionDeclaration(dynamic_pointer_cast<StatementFunction>(statement));
break; break;
case StatementKind::VAR_DECLARATION: case StatementKind::VARIABLE:
buildVarDeclaration(dynamic_pointer_cast<StatementVariable>(statement)); buildVarDeclaration(dynamic_pointer_cast<StatementVariable>(statement));
break; break;
case StatementKind::BLOCK: case StatementKind::BLOCK:

View File

@@ -2,9 +2,9 @@
#include "Parser/Statement/StatementExpression.h" #include "Parser/Statement/StatementExpression.h"
#include "Parser/Statement/StatementBlock.h" #include "Parser/Statement/StatementBlock.h"
#include "Parser/Statement/StatementReturn.h"
#include "Parser/Statement/StatementFunction.h" #include "Parser/Statement/StatementFunction.h"
#include "Parser/Statement/StatementVariable.h" #include "Parser/Statement/StatementVariable.h"
#include "Parser/Statement/StatementReturn.h"
#include "Parser/Statement/StatementMetaExternFunction.h" #include "Parser/Statement/StatementMetaExternFunction.h"
#include "Parser/Statement/StatementInvalid.h" #include "Parser/Statement/StatementInvalid.h"

View File

@@ -7,6 +7,8 @@
#include "Expression.h" #include "Expression.h"
#include "Parser/Statement/Statement.h" #include "Parser/Statement/Statement.h"
class StatementInvalid;
using namespace std; using namespace std;
class Parser { class Parser {

View File

@@ -5,21 +5,14 @@
#include "Types.h" #include "Types.h"
class Expression;
class Statement;
class StatementBlock;
class StatementReturn;
class StatementExpression;
class StatementInvalid;
using namespace std; using namespace std;
enum class StatementKind { enum class StatementKind {
FUNCTION_DECLARATION, EXPRESSION,
VAR_DECLARATION,
BLOCK, BLOCK,
RETURN, RETURN,
EXPRESSION, FUNCTION,
VARIABLE,
META_EXTERN_FUNCTION, META_EXTERN_FUNCTION,
INVALID INVALID
}; };

View File

@@ -1,5 +1,7 @@
#include "Parser/Statement/Statement.h" #include "Parser/Statement/Statement.h"
class StatementExpression;
class StatementBlock: public Statement { class StatementBlock: public Statement {
private: private:
vector<shared_ptr<Statement>> statements; vector<shared_ptr<Statement>> statements;

View File

@@ -16,7 +16,7 @@ static string valueTypeToString(ValueType valueType) {
} }
StatementFunction::StatementFunction(string name, vector<pair<string, ValueType>> arguments, ValueType returnValueType, shared_ptr<StatementBlock> statementBlock): StatementFunction::StatementFunction(string name, vector<pair<string, ValueType>> arguments, ValueType returnValueType, shared_ptr<StatementBlock> statementBlock):
Statement(StatementKind::FUNCTION_DECLARATION), name(name), arguments(arguments), returnValueType(returnValueType), statementBlock(statementBlock) { } Statement(StatementKind::FUNCTION), name(name), arguments(arguments), returnValueType(returnValueType), statementBlock(statementBlock) { }
string StatementFunction::getName() { string StatementFunction::getName() {
return name; return name;

View File

@@ -16,7 +16,7 @@ static string valueTypeToString(ValueType valueType) {
} }
StatementVariable::StatementVariable(string name, ValueType valueType, shared_ptr<Expression> expression): StatementVariable::StatementVariable(string name, ValueType valueType, shared_ptr<Expression> expression):
Statement(StatementKind::VAR_DECLARATION), name(name), valueType(valueType), expression(expression) { } Statement(StatementKind::VARIABLE), name(name), valueType(valueType), expression(expression) { }
string StatementVariable::getName() { string StatementVariable::getName() {
return name; return name;