code: func (s *Scanner) scanNumber(ch rune) token.Type {
  	zero := ch == '0'
  	pos := s.srcPos
  
  	s.scanMantissa(ch)
  	ch = s.next() // seek forward
  	if ch == 'e' || ch == 'E' {
  		ch = s.scanExponent(ch)
  		return token.FLOAT
  	}
  
  	if ch == '.' {
  		ch = s.scanFraction(ch)
  		if ch == 'e' || ch == 'E' {
  			ch = s.next()
  			ch = s.scanExponent(ch)
  		}
  		return token.FLOAT
  	}
  
  	if ch != eof {
  		s.unread()
  	}
  
  	// If we have a larger number and this is zero, error
  	if zero && pos != s.srcPos {
  		s.err("numbers cannot start with 0")
  	}
  
  	return token.NUMBER
  }
docs: // scanNumber scans a HCL number definition starting with the given rune