AST: Add error node
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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(); }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user