code: function parseMultiplicative() {
                      var token, left, right, r;
  
                      left = parseExponentiation();
                      token = lexer.peek();
                      if (matchOp(token, '*') || matchOp(token, '/')) {
                          token = lexer.next();
  
                          right = parseMultiplicative();
  
                          // Multiplication and division is left associative:
                          // a/b/c should be (a/b)/c and not a/(b/c)
                          if (right.subtype === 'naryOperator' || right.subtype === 'binaryOperator') {
                              r = right;
                              while (r.content[0].subtype === 'naryOperator' || r.content[0].subtype === 'binaryOperator') {
                                  r = r.content[0];
                              }
  
                              r.content[0] = new MathLib.Expression({
                                  subtype: token.value === '*' ? 'naryOperator' : 'binaryOperator',
                                  content: [left, r.content[0]],
                                  value: token.value,
                                  name: token.value === '*' ? 'times' : 'divide'
                              });
                              return right;
                          } else {
                              return new MathLib.Expression({
                                  subtype: token.value === '*' ? 'naryOperator' : 'binaryOperator',
                                  value: token.value,
                                  name: token.value === '*' ? 'times' : 'divide',
                                  content: [left, right]
                              });
                          }
                      }
                      return left;
                  }
docs: Multiplicative ::= Exponentiation | Multiplicative '*' Exponentiation | Multiplicative '/' Exponentiation