Implements setting table values
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -26,6 +26,8 @@ void Evaluator::EvaluateStatement(const BoundStatement *statement) {
|
||||
case BoundStatementKind ::Block: return this->EvaluateBlockStatement((BoundBlockStatement *) statement);
|
||||
case BoundStatementKind ::Expression: return this -> EvaluateExpressionStatement((BoundExpressionStatement*)statement);
|
||||
case BoundStatementKind ::Assignment: return this -> EvaluateAssignmentStatement((BoundAssignmentStatement*)statement);
|
||||
case BoundStatementKind::IndexAssignment:
|
||||
return this -> EvaluateIndexAssignmentStatement((BoundIndexAssignmentStatement*)statement);
|
||||
case BoundStatementKind ::FunctionDeclaration: return this->EvaluateFunctionDeclarationStatement((BoundFunctionDeclarationStatement*)statement);
|
||||
case BoundStatementKind::Return: return this -> EvaluateReturnStatement((BoundReturnStatement*)statement);
|
||||
case BoundStatementKind::Conditional: return this -> EvaluateConditionalStatement((BoundConditionalStatement*)statement);
|
||||
@@ -58,6 +60,15 @@ void Evaluator::EvaluateAssignmentStatement(const BoundAssignmentStatement *stat
|
||||
}
|
||||
}
|
||||
|
||||
void Evaluator::EvaluateIndexAssignmentStatement(const BoundIndexAssignmentStatement *statement) {
|
||||
auto indexExpression = statement -> GetIndexExpression();
|
||||
auto value = this -> EvaluateExpression(statement -> GetValueExpression());
|
||||
auto index = ((BoundIndexExpression*)indexExpression);
|
||||
auto table = this -> EvaluateExpression(index -> GetIndexableExpression());
|
||||
auto key = this -> EvaluateExpression(index->GetIndexExpression());
|
||||
table -> SetIndexValue(key.get(), value);
|
||||
}
|
||||
|
||||
void Evaluator::EvaluateFunctionDeclarationStatement(const BoundFunctionDeclarationStatement *statement) {
|
||||
auto type = statement->GetType();
|
||||
auto key = statement->GetKey();
|
||||
@@ -300,3 +311,4 @@ shared_ptr<EvalValue> Evaluator::EvaluateUserDataExpression(const BoundExpressio
|
||||
default: throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user