From 176c8e70f56bbbbe5ab2063f22000b9af0180e85 Mon Sep 17 00:00:00 2001 From: Nagi5Yeq Date: Fri, 5 Jun 2020 01:25:59 +0800 Subject: add case statement support --- node/StatementNode.hh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'node/StatementNode.hh') diff --git a/node/StatementNode.hh b/node/StatementNode.hh index b729001..81cbb93 100644 --- a/node/StatementNode.hh +++ b/node/StatementNode.hh @@ -105,6 +105,24 @@ class ContinueStatementNode : public BaseNode { virtual Value CodeGen() override; virtual int Travel(Traveler& traveler) override; }; + +using CasePair = + std::pair, std::shared_ptr>; + +class SwitchStatementNode : public BaseNode { + public: + SwitchStatementNode(Context* context, + std::shared_ptr CaseVariable, + std::list&& CasePairs, + std::shared_ptr DefaultAction); + virtual Value CodeGen() override; + virtual int Travel(Traveler& traveler) override; + + protected: + std::shared_ptr CaseVariable_; + std::list CasePairs_; + std::shared_ptr DefaultAction_; +}; } // namespace pcc #endif -- cgit