code: func (p *Parser) parseFill() (FillOption, interface{}, error) {
  	// Parse the expression first.
  	tok, _, lit := p.ScanIgnoreWhitespace()
  	p.Unscan()
  	if tok != IDENT || strings.ToLower(lit) != "fill" {
  		return NullFill, nil, nil
  	}
  
  	expr, err := p.ParseExpr()
  	if err != nil {
  		return NullFill, nil, err
  	}
  	fill, ok := expr.(*Call)
  	if !ok {
  		return NullFill, nil, errors.New("fill must be a function call")
  	} else if len(fill.Args) != 1 {
  		return NullFill, nil, errors.New("fill requires an argument, e.g.: 0, null, none, previous, linear")
  	}
  	switch fill.Args[0].String() {
  	case "null":
  		return NullFill, nil, nil
  	case "none":
  		return NoFill, nil, nil
  	case "previous":
  		return PreviousFill, nil, nil
  	case "linear":
  		return LinearFill, nil, nil
  	default:
  		switch num := fill.Args[0].(type) {
  		case *IntegerLiteral:
  			return NumberFill, num.Val, nil
  		case *NumberLiteral:
  			return NumberFill, num.Val, nil
  		default:
  			return NullFill, nil, fmt.Errorf("expected number argument in fill()")
  		}
  	}
  }
docs: // parseFill parses the fill call and its options.