paren: '(' binary_op ')' { \$item [2] } # parens belong here, and only here! | subexpression subexpression: function_call | var | literal | binary_op : paren (op paren { [ \@item[1..2] ] })(s?) # any parenned expression will sink down here { [ \$item[1], map { \@\$_ } \@{\$item[2]} ] }