code: func (st *state) number() int {
  	neg := false
  	if len(st.str) > 0 && st.str[0] == 'n' {
  		neg = true
  		st.advance(1)
  	}
  	if len(st.str) == 0 || !isDigit(st.str[0]) {
  		st.fail("missing number")
  	}
  	val := 0
  	for len(st.str) > 0 && isDigit(st.str[0]) {
  		// Number picked to ensure we can't overflow with 32-bit int.
  		// Any very large number here is bogus.
  		if val >= 0x80000000/10-10 {
  			st.fail("numeric overflow")
  		}
  		val = val*10 + int(st.str[0]-'0')
  		st.advance(1)
  	}
  	if neg {
  		val = -val
  	}
  	return val
  }
docs: // number ::= [n] <(non-negative decimal integer)>