code: func (l *Lexer) scanNumber() bool {
  	// Optional leading sign.
  	l.accept("+-")
  
  	// Is it hex?
  	digits := "0123456789"
  
  	if l.accept("0") && l.accept("xX") {
  		digits = "0123456789abcdefABCDEF"
  	}
  
  	l.acceptRun(digits)
  
  	if l.accept(".") {
  		l.acceptRun(digits)
  	}
  
  	if l.accept("eE") {
  		l.accept("+-")
  		l.acceptRun("0123456789")
  	}
  
  	// Is it imaginary?
  	l.accept("i")
  
  	// Next thing mustn't be alphanumeric.
  	if isAlphaNumeric(l.peek()) {
  		l.next()
  		return false
  	}
  
  	return true
  }
docs: // scanNumber scans a number
  //
  // NOTE: borrowed from https://github.com/golang/go/tree/master/src/text/template/parse/lex.go