binary_op : '(' subexpression (op subexpression {[\@item[1..2]]} )(s?) ')' { [ \$item[2], map { \@\$_ } \@{\$item[3]} ] }