code: function parseExponentiation() {
                      var token, left, right;
  
                      left = parseUnary();
                      token = lexer.peek();
                      if (matchOp(token, '^')) {
                          token = lexer.next();
  
                          right = parseExponentiation();
  
                          // Exponentiation is right associative
                          // a^b^c should be a^(b^c) and not (a^b)^c
                          return new MathLib.Expression({
                              subtype: 'binaryOperator',
                              value: '^',
                              content: [left, right],
                              name: 'pow'
                          });
                      }
                      return left;
                  }
docs: Exponentiation ::= Unary | Unary '^' Exponentiation