code: function() {
      var withBlock = this.accept('+');
      if ('url' == this.peek().val.name) return this.url();
      var name = this.expect('function').val.name;
      this.state.push('function arguments');
      this.parens++;
      var args = this.args();
      this.expect(')');
      this.parens--;
      this.state.pop();
      var call = new nodes.Call(name, args);
      if (withBlock) {
        this.state.push('function');
        call.block = this.block(call);
        this.state.pop();
      }
      return call;
    }
docs: '+'? ident '(' expression ')' block?