diff options
author | John Hodge <tpg@mutabah.net> | 2015-03-08 17:53:17 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2015-03-08 17:53:17 +0800 |
commit | 54ab187e82a41f7221660c7b1dc7777ce8a17228 (patch) | |
tree | 7666a9f00e43a29a709cac83643519824a8a6aad /src/dump_as_rust.cpp | |
parent | 6817bc18309f903a07cb86dbd13eeed97b1ca995 (diff) | |
download | mrust-54ab187e82a41f7221660c7b1dc7777ce8a17228.tar.gz |
Correct parsing of macro expansion template.
Diffstat (limited to 'src/dump_as_rust.cpp')
-rw-r--r-- | src/dump_as_rust.cpp | 22 |
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: |