Browse Source

AST: Add error node

master
Riyyi 2 years ago
parent
commit
b604d7ddb5
  1. 7
      src/ast.cpp
  2. 19
      src/ast.h

7
src/ast.cpp

@ -10,6 +10,13 @@
namespace blaze { namespace blaze {
Error::Error(const std::string& error)
: m_error(error)
{
}
// -----------------------------------------
List::~List() List::~List()
{ {
for (auto node : m_nodes) { for (auto node : m_nodes) {

19
src/ast.h

@ -23,6 +23,7 @@ public:
template<typename T> template<typename T>
bool fastIs() const = delete; bool fastIs() const = delete;
virtual bool isError() const { return false; }
virtual bool isVector() const { return false; } virtual bool isVector() const { return false; }
virtual bool isHashMap() const { return false; } virtual bool isHashMap() const { return false; }
virtual bool isList() const { return false; } virtual bool isList() const { return false; }
@ -34,6 +35,21 @@ public:
// ----------------------------------------- // -----------------------------------------
class Error final : public ASTNode {
public:
Error(const std::string& error);
virtual ~Error() = default;
virtual bool isError() const override { return true; }
const std::string& error() const { return m_error; }
private:
std::string m_error;
};
// -----------------------------------------
// [] // []
class Vector final : public ASTNode { class Vector final : public ASTNode {
public: public:
@ -143,6 +159,9 @@ private:
// ----------------------------------------- // -----------------------------------------
// clang-format off // clang-format off
template<>
inline bool ASTNode::fastIs<Error>() const { return isError(); }
template<> template<>
inline bool ASTNode::fastIs<Vector>() const { return isVector(); } inline bool ASTNode::fastIs<Vector>() const { return isVector(); }

Loading…
Cancel
Save