mirror of
https://github.com/alecthomas/chroma.git
synced 2025-04-21 12:06:53 +02:00
fix: add underscore parsing in numbers for haskell (#1020)
This commit is contained in:
parent
2e669a272c
commit
5e7b53e590
@ -95,19 +95,22 @@
|
|||||||
<rule pattern="[:!#$%&*+.\\/<=>?@^|~-]+">
|
<rule pattern="[:!#$%&*+.\\/<=>?@^|~-]+">
|
||||||
<token type="Operator"/>
|
<token type="Operator"/>
|
||||||
</rule>
|
</rule>
|
||||||
<rule pattern="\d+[eE][+-]?\d+">
|
<rule pattern="\d+_*[eE][+-]?\d+">
|
||||||
<token type="LiteralNumberFloat"/>
|
<token type="LiteralNumberFloat"/>
|
||||||
</rule>
|
</rule>
|
||||||
<rule pattern="\d+\.\d+([eE][+-]?\d+)?">
|
<rule pattern="\d+(_+[\d]+)*\.\d+(_+[\d]+)*([eE][+-]?\d+)?">
|
||||||
<token type="LiteralNumberFloat"/>
|
<token type="LiteralNumberFloat"/>
|
||||||
</rule>
|
</rule>
|
||||||
<rule pattern="0[oO][0-7]+">
|
<rule pattern="0[oO](_*[0-7])+">
|
||||||
<token type="LiteralNumberOct"/>
|
<token type="LiteralNumberOct"/>
|
||||||
</rule>
|
</rule>
|
||||||
<rule pattern="0[xX][\da-fA-F]+">
|
<rule pattern="0[xX](_*[\da-fA-F])+">
|
||||||
<token type="LiteralNumberHex"/>
|
<token type="LiteralNumberHex"/>
|
||||||
</rule>
|
</rule>
|
||||||
<rule pattern="\d+">
|
<rule pattern="0[bB](_*[01])+">
|
||||||
|
<token type="LiteralNumberBin"/>
|
||||||
|
</rule>
|
||||||
|
<rule pattern="\d+(_*[\d])*">
|
||||||
<token type="LiteralNumberInteger"/>
|
<token type="LiteralNumberInteger"/>
|
||||||
</rule>
|
</rule>
|
||||||
<rule pattern="'">
|
<rule pattern="'">
|
||||||
|
43
lexers/testdata/haskell.actual
vendored
Normal file
43
lexers/testdata/haskell.actual
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
1_000_000
|
||||||
|
1__000000
|
||||||
|
1000000_
|
||||||
|
_1000000
|
||||||
|
|
||||||
|
0.0001
|
||||||
|
0.000_1
|
||||||
|
0_.0001
|
||||||
|
_0.0001
|
||||||
|
0._0001
|
||||||
|
0.0001_
|
||||||
|
|
||||||
|
1e+23
|
||||||
|
1_e+23
|
||||||
|
1__e+23
|
||||||
|
1e_+23
|
||||||
|
|
||||||
|
1e+23
|
||||||
|
1e+_23
|
||||||
|
1e+23_
|
||||||
|
|
||||||
|
0x
|
||||||
|
0xffff
|
||||||
|
0xff_ff
|
||||||
|
0x_ffff
|
||||||
|
0x__ffff
|
||||||
|
_0xffff
|
||||||
|
|
||||||
|
0b
|
||||||
|
0b01_0000__0000
|
||||||
|
0b01_
|
||||||
|
0b_01
|
||||||
|
0b__01
|
||||||
|
|
||||||
|
3.141_592_653_589_793
|
||||||
|
96_485.332_89
|
||||||
|
6.022_140_857e+23
|
||||||
|
|
||||||
|
0o
|
||||||
|
0o7_77
|
||||||
|
0o700_
|
||||||
|
0o_700
|
||||||
|
0o__700
|
95
lexers/testdata/haskell.expected
vendored
Normal file
95
lexers/testdata/haskell.expected
vendored
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
[
|
||||||
|
{"type":"LiteralNumberInteger","value":"1_000_000"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"1__000000"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"1000000"},
|
||||||
|
{"type":"Name","value":"_"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"NameFunction","value":"_1000000"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"0.0001"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"0.000_1"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0"},
|
||||||
|
{"type":"Name","value":"_"},
|
||||||
|
{"type":"Operator","value":"."},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0001"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"NameFunction","value":"_0"},
|
||||||
|
{"type":"Operator","value":"."},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0001"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0"},
|
||||||
|
{"type":"Operator","value":"."},
|
||||||
|
{"type":"Name","value":"_0001"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"0.0001"},
|
||||||
|
{"type":"Name","value":"_"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"1e+23"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"1_e+23"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"1__e+23"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"1"},
|
||||||
|
{"type":"Name","value":"e_"},
|
||||||
|
{"type":"Operator","value":"+"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"23"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"1e+23"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"1"},
|
||||||
|
{"type":"Name","value":"e"},
|
||||||
|
{"type":"Operator","value":"+"},
|
||||||
|
{"type":"Name","value":"_23"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"1e+23"},
|
||||||
|
{"type":"Name","value":"_"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0"},
|
||||||
|
{"type":"Name","value":"x"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberHex","value":"0xffff"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberHex","value":"0xff_ff"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberHex","value":"0x_ffff"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberHex","value":"0x__ffff"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"NameFunction","value":"_0xffff"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0"},
|
||||||
|
{"type":"Name","value":"b"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberBin","value":"0b01_0000__0000"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberBin","value":"0b01"},
|
||||||
|
{"type":"Name","value":"_"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberBin","value":"0b_01"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberBin","value":"0b__01"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"3.141_592_653_589_793"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"96_485.332_89"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberFloat","value":"6.022_140_857e+23"},
|
||||||
|
{"type":"Text","value":"\n\n"},
|
||||||
|
{"type":"LiteralNumberInteger","value":"0"},
|
||||||
|
{"type":"Name","value":"o"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberOct","value":"0o7_77"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberOct","value":"0o700"},
|
||||||
|
{"type":"Name","value":"_"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberOct","value":"0o_700"},
|
||||||
|
{"type":"Text","value":"\n"},
|
||||||
|
{"type":"LiteralNumberOct","value":"0o__700"},
|
||||||
|
{"type":"Text","value":"\n"}
|
||||||
|
]
|
Loading…
x
Reference in New Issue
Block a user