# Lexing numeric literals

# From issue #199

# UUIDs

virsh start 61a6a312-86d3-458c-824a-fa0adc2bd22c
virsh start 61969312-86d3-458c-8249-fa0adc2bd22c
virsh restore /opt/61a6a312-86d3-458c-824a-fa0adc2bd22c-suspend

# Git items

git checkout 998d611b516b0e485803089ecd53fdf0ea707a8c

git log --no-walk 0e2ba9c
git log --no-walk rel-5-2-4-97-g7405d4e7

# Arithmetic and character ranges

declare -i a=1+1; echo $a
[[ $a == [0-9] ]] && echo 1

# Brace expansion

for i in {1..10..2}; do
	echo $i
done
for a in {A..Z..2}; do
	echo $a
done

# From Kein-Hong Man

#--------------------------------------------------------------------------
# Bash number formats
# (20070712)
# Octal lexing relaxed to allow hex digits to avoid flagging unnecessary
# and misleading number errors; radix-prefixed lexing behaviour is unchanged,
# as those cases are uncommon (to get strict lexing, define PEDANTIC_OCTAL).

# NOTE: Some people may want an entire non-number to be lexed in the normal
# style and not as part-number part-normal. If the user thinks there is a
# better case for the former, please lobby for it on the SF issue tracker.

0123 0567	# octal good
08 0789 077ABC	# octal bad (disabled 20070712, now lexed as numbers)
066XYZ		# octal bad
0xDEAD 0X1234	# hex good
0xABCMNO 0XGHI	# hex bad

# extended "[base#]n" format where base is between 2-64
# digits range are 0-9a-zA-Z@_
# if base <= 36, then alphabets are case insensitive
# this style isn't likely in non-number code, so the lexer currently
# opts to colour the error in red -- send feedback if this is too
# intrusive; 'invalid octals' (but valid text) in red proved annoying...

2#10101		# binary
2#23456		# error (in red)
8#0123456789AB	# error (in red)
16#abcDEF123
16#abcpqr	# bad
64#xyzXYZ@_789	# full base-64
99#xyzXYZ@_789	# error (in red; invalid base)
111#xyzXYZ@_789	# error (in red; invalid base)

567+0123*0xBCD	# with operators
(4#0123-3#012)

# 20070712:
# Octal lexing relaxed to avoid marking some number sequences as octal
# errors. This is because the elements or apps controlled by bash may
# have a different view of numbers, so we avoid flagging unnecessary
# (and misleading) number errors. Radix-prefixed number lexing is
# unchanged, as those cases are uncommon (no feedback on it yet.)

# In the following, red-flagged 'octals' should now be lexed as normal
# numbers, allowing hex digits.

# flightgear missing.sh
scriptversion=2004-09-07.08

# git t/t0000/basic.sh
P=087704a96baf1c2d1c869a8b084481e121c88b5b

# openssh config.guess
    *:procnto*:*:* | *:QNX:[0123456789]*:*)

# with hex digits, the following will still be an invalid number
066XYZ
