summaryrefslogtreecommitdiff
path: root/grammar
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2019-11-30 09:01:25 -0800
committerAdrian Thurston <thurston@colm.net>2019-11-30 09:01:25 -0800
commitdac2c1d90de23ca6cb3db88992885b116199a848 (patch)
tree2b28f89cb728ab60ba7557dacd875b68679c26e5 /grammar
parent26698c0cf88015653e2503d0ab5e44f63f77e6fe (diff)
downloadcolm-dac2c1d90de23ca6cb3db88992885b116199a848.tar.gz
rust grammar: handle floats specified with just a trailing dot
let a = 0. + 1.- 2.3;
Diffstat (limited to 'grammar')
-rw-r--r--grammar/rust.lm9
1 files changed, 8 insertions, 1 deletions
diff --git a/grammar/rust.lm b/grammar/rust.lm
index ad6d25d8..b5cc7bb6 100644
--- a/grammar/rust.lm
+++ b/grammar/rust.lm
@@ -37,7 +37,14 @@ lex
rl float_suffix
/ ( 'f32' | 'f64' )? /
- # Not implemented: DEC_LITERAL . (not immediately followed by ., _ or an identifier)
+ # Handles: DEC_LITERAL . (not immediately followed by ., _ or an identifier)
+ token hanging_float
+ / [0-9]+ '.' [^0-9._a-zA-Z] /
+ {
+ Float: str = input->pull( match_length - 1 )
+ input->push( make_token( typeid<float>, Float ) )
+ }
+
token float/
[0-9]+ float_exponent |
[0-9]+ '.' [0-9]+ float_exponent? |