Remove the paren expression

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-29 20:33:24 +02:00
committed by CHatingPython
parent b8b13d1635
commit 1fa9e50b57
4 changed files with 3 additions and 35 deletions
-20
View File
@@ -94,26 +94,6 @@ private:
using binop_expression_node_h = node_handle<binop_expression_node>; using binop_expression_node_h = node_handle<binop_expression_node>;
class paren_expression_node : public expression_node {
public:
paren_expression_node(expression_node_h&& node)
: m_node(std::move(node)) {}
const expression_node_h& get_node() const { return m_node; }
expression_node_h& get_node() { return m_node; }
expression_node_h&& move_node() { return std::move(m_node); }
public:
expression_node_t expression_type() const override { return expression_node_t::Paren; }
std::ostream& print(std::ostream& os) const override;
protected:
bool equal(const node& rhs) const override;
private:
expression_node_h m_node;
};
using paren_expression_node_h = node_handle<paren_expression_node>;
} // namespace ast } // namespace ast
} // namespace furc } // namespace furc
-9
View File
@@ -82,15 +82,6 @@ bool binop_expression_node::equal(const node& rhsNode) const {
return expression_node::equal(rhsNode) && m_type == rhs.m_type && m_lhs == rhs.m_lhs && m_rhs == rhs.m_rhs; return expression_node::equal(rhsNode) && m_type == rhs.m_type && m_lhs == rhs.m_lhs && m_rhs == rhs.m_rhs;
} }
std::ostream& paren_expression_node::print(std::ostream& os) const {
return os << *m_node;
}
bool paren_expression_node::equal(const node& rhsNode) const {
const auto& rhs = reinterpret_cast<const paren_expression_node&>(rhsNode);
return expression_node::equal(rhsNode) && m_node == rhs.m_node;
}
bool declaration_node::equal(const node& rhs) const { bool declaration_node::equal(const node& rhs) const {
return declaration_type() == reinterpret_cast<const declaration_node&>(rhs).declaration_type(); return declaration_type() == reinterpret_cast<const declaration_node&>(rhs).declaration_type();
} }
+1 -1
View File
@@ -151,7 +151,7 @@ ast::expression_node_h parser::parse_expression_primary() {
auto node = parse_expression(); auto node = parse_expression();
auto err = eat_token(token_t::Rparen); auto err = eat_token(token_t::Rparen);
if (err.has_error()) return err; if (err.has_error()) return err;
return ast::paren_expression_node_h{ tok.location(), m_arena, std::move(node) }; return node;
} }
default: { default: {
auto literal = parse_literal(); auto literal = parse_literal();
+2 -5
View File
@@ -200,11 +200,8 @@ TEST(Parser, Paren) {
unaryop_expression_node_h dec = retVal; unaryop_expression_node_h dec = retVal;
EXPECT_EQ(dec->type(), unaryop_expression_node_t::PrefixDecrement); EXPECT_EQ(dec->type(), unaryop_expression_node_t::PrefixDecrement);
EXPECT_EQ(dec->get_node()->expression_type(), expression_node_t::Paren); EXPECT_EQ(dec->get_node()->expression_type(), expression_node_t::Unaryop);
paren_expression_node_h paren = dec->get_node(); unaryop_expression_node_h inc = dec->get_node();
EXPECT_EQ(paren->get_node()->expression_type(), expression_node_t::Unaryop);
unaryop_expression_node_h inc = paren->get_node();
EXPECT_EQ(inc->type(), unaryop_expression_node_t::PostfixIncrement); EXPECT_EQ(inc->type(), unaryop_expression_node_t::PostfixIncrement);
EXPECT_INTLIT(inc->get_node(), 5); EXPECT_INTLIT(inc->get_node(), 5);
} }