diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-02-27 08:13:27 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-02-27 08:13:27 -0800 |
commit | 98d21a0fab0508bc82498a288c0c66adba1637cb (patch) | |
tree | 7bcc0bd18f6b566716c6023c2fc963ff9aeb8e92 | |
parent | 73bcd69a66e50e08bace63cc2392803fd991f6f0 (diff) | |
download | txr-98d21a0fab0508bc82498a288c0c66adba1637cb.tar.gz txr-98d21a0fab0508bc82498a288c0c66adba1637cb.tar.bz2 txr-98d21a0fab0508bc82498a288c0c66adba1637cb.zip |
* parser.l: Regression: valid floating-point literals tagged
as having trailing junk. The fix is to put the junk-matching rule after
the valid rules.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | parser.l | 18 |
2 files changed, 15 insertions, 9 deletions
@@ -1,5 +1,11 @@ 2014-02-27 Kaz Kylheku <kaz@kylheku.com> + * parser.l: Regression: valid floating-point literals tagged + as having trailing junk. The fix is to put the junk-matching rule after + the valid rules. + +2014-02-27 Kaz Kylheku <kaz@kylheku.com> + * lib.c (copy): New function. * lib.h (copy): Declared. @@ -237,12 +237,8 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return NUMBER; } -<SPECIAL>({FLO}|{FLODOT}){TOK} | -<BRACED>({FLO}|{FLODOT}){BTOK} | -<NESTED>({FLO}|{FLODOT}){NTOK} { - val str = string_utf8(yytext); - - yyerrorf(lit("trailing junk in floating-point literal: ~a"), str, nao); +<SPECIAL,NESTED,BRACED>{FLO} { + val str = string_own(utf8_dup_from(yytext)); if (yy_top_state() == INITIAL || yy_top_state() == QSILIT) @@ -252,7 +248,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return NUMBER; } -<SPECIAL,NESTED,BRACED>{FLO} { +<SPECIAL,NESTED,BRACED>{FLODOT}/[^.] { val str = string_own(utf8_dup_from(yytext)); if (yy_top_state() == INITIAL @@ -263,8 +259,12 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return NUMBER; } -<SPECIAL,NESTED,BRACED>{FLODOT}/[^.] { - val str = string_own(utf8_dup_from(yytext)); +<SPECIAL>({FLO}|{FLODOT}){TOK} | +<BRACED>({FLO}|{FLODOT}){BTOK} | +<NESTED>({FLO}|{FLODOT}){NTOK} { + val str = string_utf8(yytext); + + yyerrorf(lit("trailing junk in floating-point literal: ~a"), str, nao); if (yy_top_state() == INITIAL || yy_top_state() == QSILIT) |