@@ -499,26 +499,34 @@ contexts:
499
499
scope : constant.language.null.coffee
500
500
501
501
numbers :
502
- - match : \b (0b)([01] +)\b
502
+ - match : (0b)({{bin_digit}} +)\b
503
503
scope : meta.number.integer.binary.coffee
504
504
captures :
505
505
1 : constant.numeric.base.coffee
506
506
2 : constant.numeric.value.coffee
507
- - match : \b (0o)([0-7] +)\b
507
+ - match : (0o)({{oct_digit}} +)\b
508
508
scope : meta.number.integer.octal.coffee
509
509
captures :
510
510
1 : constant.numeric.base.coffee
511
511
2 : constant.numeric.value.coffee
512
- - match : \b (0x)(\h +)\b
512
+ - match : (0x)({{hex_digit}} +)\b
513
513
scope : meta.number.integer.hexadecimal.coffee
514
514
captures :
515
515
1 : constant.numeric.base.coffee
516
516
2 : constant.numeric.value.coffee
517
- - match : \b\d+(?:(\.)\d*(?:e[-+]?\d+)?|(?:e[-+]?\d+))\b
517
+ # floats
518
+ - match : |-
519
+ (?x:
520
+ # 1., 1.1, 1.1e1, 1.1e-1, 1.e1, 1.e-1 | 1e1, 1e-1
521
+ {{dec_integer}} (?: (\.) {{dec_digit}}* (?:{{dec_exponent}})? | {{dec_exponent}} )
522
+ # .1, .1e1, .1e-1
523
+ | (\.) {{dec_digit}}+ (?:{{dec_exponent}})?
524
+ )\b
518
525
scope: meta.number.float.decimal.coffee constant.numeric.value.coffee
519
526
captures:
520
527
1: punctuation.separator.decimal.coffee
521
- - match : \b\d+\b
528
+ 2: punctuation.separator.decimal.coffee
529
+ - match : ' {{dec_integer}}\b'
522
530
scope : meta.number.integer.decimal.coffee constant.numeric.value.coffee
523
531
524
532
triple-double-quoted-strings :
@@ -865,6 +873,13 @@ variables:
865
873
# in embed...escape statements.
866
874
no_escape_behind : (?<![^\\]\\)(?<![\\]{3})
867
875
876
+ bin_digit : ' [01_]'
877
+ oct_digit : ' [0-7_]'
878
+ dec_digit : ' [0-9_]'
879
+ hex_digit : ' [\h_]'
880
+ dec_integer : (?:0|[1-9]{{dec_digit}}*)
881
+ dec_exponent : ' [Ee](?:[-+]|(?![-+])){{dec_digit}}*'
882
+
868
883
identifier : ' [[:alpha:]_$]\w*'
869
884
870
885
component_names : ' [A-Z][[:alnum:]_.-]*'
0 commit comments