diff options
Diffstat (limited to 'src/ast/expr.cpp')
-rw-r--r-- | src/ast/expr.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp index 780b480c..ecd60def 100644 --- a/src/ast/expr.cpp +++ b/src/ast/expr.cpp @@ -5,6 +5,19 @@ namespace AST { + +Expr::Expr(unique_ptr<ExprNode> node): + m_node(node.release()) +{ +} +Expr::Expr(ExprNode* node): + m_node(node) +{ +} +Expr::Expr(): + m_node(nullptr) +{ +} void Expr::visit_nodes(NodeVisitor& v) { if( m_node ) @@ -21,6 +34,17 @@ void Expr::visit_nodes(NodeVisitor& v) const m_node->visit(v); } } + +Expr Expr::clone() const +{ + if( m_node ) { + return Expr( m_node->clone() ); + } + else { + return Expr(); + } +} + ::std::ostream& operator<<(::std::ostream& os, const Expr& pat) { if( pat.m_node.get() ) |