Skip to content

Commit ebfe918

Browse files
committed
Require at least one digit before or after '.' in a float
Refs atom/language-python#281
1 parent febcfe0 commit ebfe918

File tree

3 files changed

+4322
-4490
lines changed

3 files changed

+4322
-4490
lines changed

grammar.js

+11-12
Original file line numberDiff line numberDiff line change
@@ -772,20 +772,19 @@ module.exports = grammar({
772772
)
773773
)),
774774

775-
float: $ => token(
776-
seq(
775+
float: $ => {
776+
const digits = repeat1(/[0-9]+_?/);
777+
const exponent = seq(/[eE][\+-]?/, digits)
778+
779+
return token(seq(
777780
choice(
778-
seq(repeat(/[0-9]+_?/), '.', repeat(/[0-9]+_?/), optional(/[eE][\+-]?/), repeat(/[0-9]+_?/)),
779-
seq(repeat(/[0-9]+_?/), optional(/[eE][\+-]?/), repeat1(/[0-9]+_?/))
781+
seq(digits, '.', optional(digits), optional(exponent)),
782+
seq(optional(digits), '.', digits, optional(exponent)),
783+
seq(digits, exponent)
780784
),
781-
optional(
782-
choice(
783-
optional(/[Ll]/), // long numbers
784-
optional(/[jJ]/) // complex numbers
785-
)
786-
)
787-
)
788-
),
785+
optional(choice(/[Ll]/, /[jJ]/))
786+
))
787+
},
789788

790789
identifier: $ => /[a-zA-Zα-ωΑ-Ω_][a-zA-Zα-ωΑ-Ω_0-9]*/,
791790

src/grammar.json

+88-39
Original file line numberDiff line numberDiff line change
@@ -3814,7 +3814,7 @@
38143814
"type": "SEQ",
38153815
"members": [
38163816
{
3817-
"type": "REPEAT",
3817+
"type": "REPEAT1",
38183818
"content": {
38193819
"type": "PATTERN",
38203820
"value": "[0-9]+_?"
@@ -3824,39 +3824,71 @@
38243824
"type": "STRING",
38253825
"value": "."
38263826
},
3827-
{
3828-
"type": "REPEAT",
3829-
"content": {
3830-
"type": "PATTERN",
3831-
"value": "[0-9]+_?"
3832-
}
3833-
},
38343827
{
38353828
"type": "CHOICE",
38363829
"members": [
38373830
{
3838-
"type": "PATTERN",
3839-
"value": "[eE][\\+-]?"
3831+
"type": "REPEAT1",
3832+
"content": {
3833+
"type": "PATTERN",
3834+
"value": "[0-9]+_?"
3835+
}
38403836
},
38413837
{
38423838
"type": "BLANK"
38433839
}
38443840
]
38453841
},
38463842
{
3847-
"type": "REPEAT",
3848-
"content": {
3849-
"type": "PATTERN",
3850-
"value": "[0-9]+_?"
3851-
}
3843+
"type": "CHOICE",
3844+
"members": [
3845+
{
3846+
"type": "SEQ",
3847+
"members": [
3848+
{
3849+
"type": "PATTERN",
3850+
"value": "[eE][\\+-]?"
3851+
},
3852+
{
3853+
"type": "REPEAT1",
3854+
"content": {
3855+
"type": "PATTERN",
3856+
"value": "[0-9]+_?"
3857+
}
3858+
}
3859+
]
3860+
},
3861+
{
3862+
"type": "BLANK"
3863+
}
3864+
]
38523865
}
38533866
]
38543867
},
38553868
{
38563869
"type": "SEQ",
38573870
"members": [
38583871
{
3859-
"type": "REPEAT",
3872+
"type": "CHOICE",
3873+
"members": [
3874+
{
3875+
"type": "REPEAT1",
3876+
"content": {
3877+
"type": "PATTERN",
3878+
"value": "[0-9]+_?"
3879+
}
3880+
},
3881+
{
3882+
"type": "BLANK"
3883+
}
3884+
]
3885+
},
3886+
{
3887+
"type": "STRING",
3888+
"value": "."
3889+
},
3890+
{
3891+
"type": "REPEAT1",
38603892
"content": {
38613893
"type": "PATTERN",
38623894
"value": "[0-9]+_?"
@@ -3866,20 +3898,53 @@
38663898
"type": "CHOICE",
38673899
"members": [
38683900
{
3869-
"type": "PATTERN",
3870-
"value": "[eE][\\+-]?"
3901+
"type": "SEQ",
3902+
"members": [
3903+
{
3904+
"type": "PATTERN",
3905+
"value": "[eE][\\+-]?"
3906+
},
3907+
{
3908+
"type": "REPEAT1",
3909+
"content": {
3910+
"type": "PATTERN",
3911+
"value": "[0-9]+_?"
3912+
}
3913+
}
3914+
]
38713915
},
38723916
{
38733917
"type": "BLANK"
38743918
}
38753919
]
3876-
},
3920+
}
3921+
]
3922+
},
3923+
{
3924+
"type": "SEQ",
3925+
"members": [
38773926
{
38783927
"type": "REPEAT1",
38793928
"content": {
38803929
"type": "PATTERN",
38813930
"value": "[0-9]+_?"
38823931
}
3932+
},
3933+
{
3934+
"type": "SEQ",
3935+
"members": [
3936+
{
3937+
"type": "PATTERN",
3938+
"value": "[eE][\\+-]?"
3939+
},
3940+
{
3941+
"type": "REPEAT1",
3942+
"content": {
3943+
"type": "PATTERN",
3944+
"value": "[0-9]+_?"
3945+
}
3946+
}
3947+
]
38833948
}
38843949
]
38853950
}
@@ -3892,28 +3957,12 @@
38923957
"type": "CHOICE",
38933958
"members": [
38943959
{
3895-
"type": "CHOICE",
3896-
"members": [
3897-
{
3898-
"type": "PATTERN",
3899-
"value": "[Ll]"
3900-
},
3901-
{
3902-
"type": "BLANK"
3903-
}
3904-
]
3960+
"type": "PATTERN",
3961+
"value": "[Ll]"
39053962
},
39063963
{
3907-
"type": "CHOICE",
3908-
"members": [
3909-
{
3910-
"type": "PATTERN",
3911-
"value": "[jJ]"
3912-
},
3913-
{
3914-
"type": "BLANK"
3915-
}
3916-
]
3964+
"type": "PATTERN",
3965+
"value": "[jJ]"
39173966
}
39183967
]
39193968
},

0 commit comments

Comments
 (0)