code: func (i item) String() string {
  	switch {
  	case i.typ == ItemEOF:
  		return "EOF"
  	case i.typ == ItemError:
  		return i.val
  	case i.typ == ItemIdentifier || i.typ == ItemMetricIdentifier:
  		return fmt.Sprintf("%q", i.val)
  	case i.typ.isKeyword():
  		return fmt.Sprintf("<%s>", i.val)
  	case i.typ.isOperator():
  		return fmt.Sprintf("<op:%s>", i.val)
  	case i.typ.isAggregator():
  		return fmt.Sprintf("<aggr:%s>", i.val)
  	case len(i.val) > 10:
  		return fmt.Sprintf("%.10q...", i.val)
  	}
  	return fmt.Sprintf("%q", i.val)
  }
docs: // String returns a descriptive string for the item.