1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 14:55:08 +00:00

LibJS: Implement While statements

This commit is contained in:
howar6hill 2020-03-09 03:22:21 +08:00 committed by Andreas Kling
parent 4dee1ec0be
commit 1c83c5ed08
2 changed files with 41 additions and 0 deletions

View file

@ -71,6 +71,16 @@ Value IfStatement::execute(Interpreter& interpreter) const
return interpreter.run(*m_alternate);
}
Value WhileStatement::execute(Interpreter& interpreter) const
{
Value last_value = js_undefined();
while (m_predicate->execute(interpreter).as_bool()) {
last_value = interpreter.run(*m_body);
}
return last_value;
}
Value add(Value lhs, Value rhs)
{
ASSERT(lhs.is_number());
@ -259,4 +269,14 @@ void IfStatement::dump(int indent) const
alternate().dump(indent + 1);
}
void WhileStatement::dump(int indent) const
{
ASTNode::dump(indent);
print_indent(indent);
printf("While\n");
predicate().dump(indent + 1);
body().dump(indent + 1);
}
}