@@ -54,16 +54,16 @@ def maybe(*choices): return group(*choices) + '?'
54
54
Ignore = Whitespace + any (r'\\\r?\n' + Whitespace ) + maybe (Comment )
55
55
Name = r'[a-zA-Z_]\w*'
56
56
57
- Binnumber = r'0[bB][01]*'
58
- Hexnumber = r'0[xX][\da-fA-F]*[lL]?'
59
- Octnumber = r'0[oO]?[0-7]*[lL]?'
60
- Decnumber = r'[1-9]\d*[lL]?'
57
+ Binnumber = r'0[bB]_? [01]+(?:_[01]+) *'
58
+ Hexnumber = r'0[xX]_? [\da-fA-F]+(?:_[\da-fA-F]+) *[lL]?'
59
+ Octnumber = r'0[oO]?_? [0-7]+(?:_[0-7]+) *[lL]?'
60
+ Decnumber = group ( r'[1-9]\d*(?:_\d+)* [lL]?' , '0[lL]?' )
61
61
Intnumber = group (Binnumber , Hexnumber , Octnumber , Decnumber )
62
- Exponent = r'[eE][-+]?\d+'
63
- Pointfloat = group (r'\d+\.\d* ' , r'\.\d+' ) + maybe (Exponent )
64
- Expfloat = r'\d+' + Exponent
62
+ Exponent = r'[eE][-+]?\d+(?:_\d+)* '
63
+ Pointfloat = group (r'\d+(?:_\d+)*\.(?:\d+(?:_\d+)*)? ' , r'\.\d+(?:_\d+)* ' ) + maybe (Exponent )
64
+ Expfloat = r'\d+(?:_\d+)* ' + Exponent
65
65
Floatnumber = group (Pointfloat , Expfloat )
66
- Imagnumber = group (r'\d+[jJ]' , Floatnumber + r'[jJ]' )
66
+ Imagnumber = group (r'\d+(?:_\d+)* [jJ]' , Floatnumber + r'[jJ]' )
67
67
Number = group (Imagnumber , Floatnumber , Intnumber )
68
68
69
69
# Tail end of ' string.
0 commit comments