Lines Matching refs:AstNode
46 class AstNode;
49 using NodeTransformer = std::function<AstNode *(AstNode *)>;
50 using NodeTraverser = std::function<void(AstNode *)>;
51 using NodePredicate = std::function<bool(AstNode *)>;
83 class AstNode {
85 explicit AstNode(AstNodeType type) : type_(type) {};
86 explicit AstNode(AstNodeType type, ModifierFlags flags) : type_(type), flags_(flags) {};
87 virtual ~AstNode() = default;
89 AstNode() = delete;
90 NO_MOVE_SEMANTIC(AstNode);
134 Typed<AstNode> *AsTyped()
137 return reinterpret_cast<Typed<AstNode> *>(this);
140 Typed<AstNode> const *AsTyped() const
143 return reinterpret_cast<Typed<AstNode> const *>(this);
245 [[nodiscard]] AstNode *Parent() noexcept
250 [[nodiscard]] const AstNode *Parent() const noexcept
255 void SetParent(AstNode *const parent) noexcept
452 static varbinder::Scope *EnclosingScope(const ir::AstNode *expr);
462 [[nodiscard]] virtual AstNode *Clone(ArenaAllocator *const allocator, AstNode *const parent);
476 AstNode *FindChild(const NodePredicate &cb) const;
488 void SetTransformedNode(std::string_view transformationName, AstNode *transformedNode);
500 void SetOriginalNode(AstNode *originalNode);
503 AstNode(AstNode const &other);
511 AstNode *parent_ {};
520 AstNode &operator=(const AstNode &) = default;
523 AstNode *originalNode_ = nullptr;
525 std::optional<std::pair<std::string_view, AstNode *>> transformedNode_ = std::nullopt;