anchor.diff:     * parsed `operator` and `value`.
      */
     void prefix(Parser operator, [void action(operator, value)]) {
  -    _prefix.add(new _PrefixOperator(operator, action));
  +    _operators.putIfAbsent(_PREFIX, () => new List())
  +        .add(new _ExpressionOperator(operator, action, (operators, next) {
  +          return new _SequenceParser([operators, next]).map((results) {
  +            return results.first.action(results.first.value, results.last);
  +          });
  +        }));
     }
   
     /**
  
positive.code:    * term.
     */
    void right(Parser operator, [void action(left, operator, right)]) {
      _right.add(new _RightOperator(operator, action));
    }
  
    /**
  
negative.code:    * or to recurse into another group.
     */
    void primitive(Parser parser, [void action(value)]) {
      // TODO(renggli): kill all the unnecessary indirection
      _operators.putIfAbsent(_PRIMITIVE, () => new List())
          .add(new _ExpressionOperator(parser, action, (parsers, next) {
            return parsers.map((result) => result.action(result.value));
          }));
    }
  
    /**
  