complex_add(' + left + ',' + right + ')'; },
          "-": function(left, right) { return 'complex_sub(' + left + ',' + right + ')'; }
        });
      }

  Term
    = first:Powered rest:(_ ("*" / "/") _ Powered)* {
        return combine(first, rest, {
          "*": function(left, right) { return 'complex_mul(' + left + ',' + right + ')'; },
          "/": function(left, right) { return 'complex_div(' + left + ',' + right + ')'; }
        });
      }

  Powered
    =  _ left:Factor _ "^" _ right:Factor 