summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-04-02 21:07:18 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-04-02 21:07:18 -0700
commit385d7fd25c3dc29d8ec67cd287a9e48cf3c6d6bd (patch)
tree2662547031b75455c17a6a550d6636a915a9fd69
parent03d6ca49a78008d368bed9e7a474d7d7eab4ccc6 (diff)
downloadtxr-385d7fd25c3dc29d8ec67cd287a9e48cf3c6d6bd.tar.gz
txr-385d7fd25c3dc29d8ec67cd287a9e48cf3c6d6bd.tar.bz2
txr-385d7fd25c3dc29d8ec67cd287a9e48cf3c6d6bd.zip
parser: diagnose syntax like 0.1.2 and .1.1.
Currently (list .1.1) yields (0.1 0.1). This is evading the rule for catching cramped floating-point literals. * parser.l (grammar): Carefully weaken the pattern match in the relevant rule for catching cramped floating-point literals, so it matches these cases.
-rw-r--r--parser.l6
1 files changed, 3 insertions, 3 deletions
diff --git a/parser.l b/parser.l
index fbff9bb4..1191618e 100644
--- a/parser.l
+++ b/parser.l
@@ -308,9 +308,9 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return NUMBER;
}
-<SPECIAL>{WS}({FLO}|{FLODOT}){TOK} |
-<BRACED>{WS}({FLO}|{FLODOT}){BTOK} |
-<NESTED>{WS}({FLO}|{FLODOT}){NTOK} |
+<SPECIAL>{WS}({FLO}[.]?|{FLODOT}){TOK} |
+<BRACED>{WS}({FLO}[.]?|{FLODOT}){BTOK} |
+<NESTED>{WS}({FLO}[.]?|{FLODOT}){NTOK} |
<SPECIAL,NESTED,BRACED>{FLO}[.][^.]? {
val str = string_utf8(yytext);