code: function() {
      var node
        , expr = new nodes.Expression;
      this.state.push('expression');
      while (node = this.negation()) {
        if (!node) this.error('unexpected token {peek} in expression');
        expr.push(node);
      }
      this.state.pop();
      if (expr.nodes.length) {
        expr.lineno = expr.nodes[0].lineno;
        expr.column = expr.nodes[0].column;
      }
      return expr;
    }
docs: negation+