File tree Expand file tree Collapse file tree 1 file changed +15
-10
lines changed Expand file tree Collapse file tree 1 file changed +15
-10
lines changed Original file line number Diff line number Diff line change @@ -799,17 +799,22 @@ Kokkos::View<T*> from_std_vector(const std::vector<T> &v)
799
799
800
800
void visit_StrOp (const ASR::StrOp_t &x) {
801
801
this ->visit_expr (*x.m_left );
802
- std::string left_val = src;
802
+ std::string left = std::move (src);
803
+ int left_precedence = last_expr_precedence;
803
804
this ->visit_expr (*x.m_right );
804
- std::string right_val = src;
805
- switch (x.m_op ) {
806
- case (ASR::stropType::Concat): {
807
- src = " std::string(" + left_val + " ) + std::string(" + right_val + " )" ;
808
- break ;
809
- }
810
- case (ASR::stropType::Repeat): {
811
- // TODO: implement
812
- }
805
+ std::string right = std::move (src);
806
+ int right_precedence = last_expr_precedence;
807
+ last_expr_precedence = 6 ;
808
+ if (left_precedence <= last_expr_precedence) {
809
+ src += " std::string(" + left + " )" ;
810
+ } else {
811
+ src += left;
812
+ }
813
+ src += " + " ; // handle only concatenation for now
814
+ if (right_precedence <= last_expr_precedence) {
815
+ src += " std::string(" + right + " )" ;
816
+ } else {
817
+ src += right;
813
818
}
814
819
}
815
820
You can’t perform that action at this time.
0 commit comments