cue: fix number parsing
- allow 0. for floats
- allow old-school octal numbers (just too common)
- fix productions in spec.
Change-Id: Ifaf9bbc8f221c637875a26ab02d379865d4af151
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2164
Reviewed-by: Marcel van Lohuizen <mpvl@google.com>
diff --git a/doc/ref/spec.md b/doc/ref/spec.md
index 5263f29..0e3439b 100644
--- a/doc/ref/spec.md
+++ b/doc/ref/spec.md
@@ -293,14 +293,20 @@
towards zero if it is not an integer.
```
-int_lit = decimal_lit | octal_lit | binary_lit | hex_lit .
-decimals = ( "0" … "9" ) { [ "_" ] decimal_digit } .
-decimal_lit = ( "1" … "9" ) { [ "_" ] decimal_digit } [ [ "." decimals ] multiplier ] |
- "." decimals multiplier.
+int_lit = decimal_lit | si_lit | octal_lit | binary_lit | hex_lit .
+decimal_lit = ( "1" … "9" ) { [ "_" ] decimal_digit } .
+decimals = decimal_digit { [ "_" ] decimal_digit } .
+si_it = decimals [ "." decimals ] multiplier |
+ "." decimals multiplier .
binary_lit = "0b" binary_digit { binary_digit } .
hex_lit = "0" ( "x" | "X" ) hex_digit { [ "_" ] hex_digit } .
-octal_lit = "0o" octal_digit { [ "_" ] octal_digit } .
+octal_lit = "0" [ "o" ] octal_digit { [ "_" ] octal_digit } .
multiplier = ( "K" | "M" | "G" | "T" | "P" | "E" | "Y" | "Z" ) [ "i" ]
+
+float_lit = decimals "." [ decimals ] [ exponent ] |
+ decimals exponent |
+ "." decimals [ exponent ].
+exponent = ( "e" | "E" ) [ "+" | "-" ] decimals .
```
```