1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 08:37:34 +00:00

Shell: Make the parser read consecutive sequences without recursing

This fixes (the easy) part of #4976.
This commit is contained in:
AnotherTest 2021-01-16 23:20:52 +03:30 committed by Andreas Kling
parent 212c90d68f
commit 2bd77bc93b
7 changed files with 130 additions and 100 deletions

View file

@ -1139,14 +1139,13 @@ private:
class Sequence final : public Node {
public:
Sequence(Position, NonnullRefPtr<Node>, NonnullRefPtr<Node>, Position separator_position);
Sequence(Position, NonnullRefPtrVector<Node>, Vector<Position> separator_positions);
virtual ~Sequence();
virtual void visit(NodeVisitor& visitor) override { visitor.visit(this); }
const NonnullRefPtr<Node>& left() const { return m_left; }
const NonnullRefPtr<Node>& right() const { return m_right; }
const NonnullRefPtrVector<Node>& entries() const { return m_entries; }
const Position& separator_position() const { return m_separator_position; }
const Vector<Position>& separator_positions() const { return m_separator_positions; }
private:
NODE(Sequence);
@ -1157,9 +1156,8 @@ private:
virtual bool is_list() const override { return true; }
virtual bool should_override_execution_in_current_process() const override { return true; }
NonnullRefPtr<Node> m_left;
NonnullRefPtr<Node> m_right;
Position m_separator_position;
NonnullRefPtrVector<Node> m_entries;
Vector<Position> m_separator_positions;
};
class Subshell final : public Node {