1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 21:47:46 +00:00

LibJS: Parse "if" statements

This patch implements basic parsing of "if" statements. We don't yet
support parsing "else", so I added a FIXME about that.
This commit is contained in:
Andreas Kling 2020-03-21 18:40:17 +01:00
parent 55c845713a
commit 7c48c3c8e1
4 changed files with 26 additions and 7 deletions

View file

@ -211,7 +211,7 @@ private:
class IfStatement : public Statement {
public:
IfStatement(NonnullRefPtr<Expression> predicate, NonnullRefPtr<ScopeNode> consequent, NonnullRefPtr<ScopeNode> alternate)
IfStatement(NonnullRefPtr<Expression> predicate, NonnullRefPtr<ScopeNode> consequent, RefPtr<ScopeNode> alternate)
: m_predicate(move(predicate))
, m_consequent(move(consequent))
, m_alternate(move(alternate))
@ -220,7 +220,7 @@ public:
const Expression& predicate() const { return *m_predicate; }
const ScopeNode& consequent() const { return *m_consequent; }
const ScopeNode& alternate() const { return *m_alternate; }
const ScopeNode* alternate() const { return m_alternate; }
virtual Value execute(Interpreter&) const override;
virtual void dump(int indent) const override;
@ -230,7 +230,7 @@ private:
NonnullRefPtr<Expression> m_predicate;
NonnullRefPtr<ScopeNode> m_consequent;
NonnullRefPtr<ScopeNode> m_alternate;
RefPtr<ScopeNode> m_alternate;
};
class WhileStatement : public Statement {