Skip to content

Commit cf00477

Browse files
committed
gcmsg "fix decimal part & exponent part of float"
Fix the part that makes the following cases invalid: 1.01, 1.101, 1.0e01, 1.0e101
1 parent 25a713c commit cf00477

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

Diff for: coml.ebnf

+8-7
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@ basicTypes ::= number | boolean | string | array | hash | patchKey | patch | "ni
1313
1414
(* Basic Types: Number *)
1515
16-
digit ::= #'[1-9]';
17-
decInteger ::= digit | "0" | decInteger "0" | digit decInteger;
16+
decDigit ::= #'[0-9]';
17+
nonZeroDecDigit ::= #'[1-9]';
18+
decInteger ::= "0" | nonZeroDecDigit decDigit*;
1819
1920
exponentIndicator ::= "e" | "E";
20-
exponentPart ::= exponentIndicator decInteger
21-
| exponentIndicator "-" decInteger
22-
| exponentIndicator "+" decInteger;
21+
exponentPart ::= exponentIndicator decDigit+
22+
| exponentIndicator "-" decDigit+
23+
| exponentIndicator "+" decDigit+;
2324
unsignedFloat ::= decInteger "f"
24-
| decInteger "." decInteger exponentPart*;
25+
| decInteger "." decDigit+ exponentPart*;
2526
2627
binDigit ::= #'[0-1]';
2728
binInteger ::= "0b" binDigit+;
@@ -58,7 +59,7 @@ array ::= "[" splitter? arrayElements splitter? "]"
5859
5960
keyCharStart ::= #'[a-zA-Z_]';
6061
61-
keyCharMiddle ::= keyCharStart | digit | "0" | "_";
62+
keyCharMiddle ::= keyCharStart | decDigit | "_";
6263
key ::= keyCharStart keyCharMiddle*;
6364
hashElement ::= (whitespaces?) key (splitter?) ":" (splitter?) expr;
6465
hash ::= hashElement | hashElement eol+ hash;

0 commit comments

Comments
 (0)