#include "BinaryOperator.h" #include #include "bscript/compiler/ast/NodeVisitor.h" namespace Pol::Bscript::Compiler { BinaryOperator::BinaryOperator( const SourceLocation& source_location, std::unique_ptr lhs, std::string op, BTokenId token_id, std::unique_ptr rhs ) : Expression( source_location ), op( std::move( op ) ), token_id( token_id ) { children.reserve( 2 ); children.push_back( std::move( lhs ) ); children.push_back( std::move( rhs ) ); } void BinaryOperator::accept( NodeVisitor& visitor ) { visitor.visit_binary_operator( *this ); } void BinaryOperator::describe_to( std::string& w ) const { fmt::format_to( std::back_inserter( w ), "binary-operator({})", op ); } Expression& BinaryOperator::lhs() { return child( 0 ); } Expression& BinaryOperator::rhs() { return child( 1 ); } std::unique_ptr BinaryOperator::take_lhs() { return take_child( 0 ); } std::unique_ptr BinaryOperator::take_rhs() { return take_child( 1 ); } } // namespace Pol::Bscript::Compiler