summaryrefslogtreecommitdiff
path: root/src/dump_as_rust.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dump_as_rust.cpp')
-rw-r--r--src/dump_as_rust.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/dump_as_rust.cpp b/src/dump_as_rust.cpp
index cfe9b5d6..1a7737ba 100644
--- a/src/dump_as_rust.cpp
+++ b/src/dump_as_rust.cpp
@@ -274,11 +274,18 @@ public:
{
case AST::ExprNode_BinOp::CMPEQU: m_os << "=="; break;
case AST::ExprNode_BinOp::CMPNEQU:m_os << "!="; break;
+ case AST::ExprNode_BinOp::CMPLT: m_os << "<"; break;
+ case AST::ExprNode_BinOp::CMPLTE: m_os << "<="; break;
+ case AST::ExprNode_BinOp::CMPGT: m_os << ">"; break;
+ case AST::ExprNode_BinOp::CMPGTE: m_os << ">="; break;
case AST::ExprNode_BinOp::BITAND: m_os << "&"; break;
case AST::ExprNode_BinOp::BITOR: m_os << "|"; break;
case AST::ExprNode_BinOp::BITXOR: m_os << "^"; break;
case AST::ExprNode_BinOp::SHL: m_os << "<<"; break;
case AST::ExprNode_BinOp::SHR: m_os << ">>"; break;
+ case AST::ExprNode_BinOp::MULTIPLY: m_os << "*"; break;
+ case AST::ExprNode_BinOp::DIVIDE: m_os << "/"; break;
+ case AST::ExprNode_BinOp::MODULO: m_os << "%"; break;
}
m_os << " ";
if( IS(*n.m_right, AST::ExprNode_BinOp) )
@@ -286,6 +293,21 @@ public:
else
AST::NodeVisitor::visit(n.m_right);
}
+ virtual void visit(AST::ExprNode_UniOp& n) override {
+ m_expr_root = false;
+ switch(n.m_type)
+ {
+ case AST::ExprNode_UniOp::NEGATE: m_os << "-"; break;
+ case AST::ExprNode_UniOp::INVERT: m_os << "!"; break;
+ case AST::ExprNode_UniOp::BOX: m_os << "box "; break;
+ case AST::ExprNode_UniOp::REF: m_os << "&"; break;
+ //case AST::ExprNode_UniOp::REFMUT: m_os << "&mut "; break;
+ }
+
+ if( IS(*n.m_value, AST::ExprNode_BinOp) )
+ m_os << " ";
+ AST::NodeVisitor::visit(n.m_value);
+ }
private: