diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2013-07-13 16:19:42 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2013-07-13 16:19:42 -0700 |
commit | 354b6cf42c3dad99aed8d7ed49454e69b5460824 (patch) | |
tree | 36166707a5855619c21456bdcf32d61eb104feb6 | |
parent | de3d43c9c1c102de5705984b016c0ab8d5cec602 (diff) | |
download | txr-354b6cf42c3dad99aed8d7ed49454e69b5460824.tar.gz txr-354b6cf42c3dad99aed8d7ed49454e69b5460824.tar.bz2 txr-354b6cf42c3dad99aed8d7ed49454e69b5460824.zip |
* parser.l: Diagnose unrecognized escape sequences in string
literals and quasiliterals and after @\.
Support "\ " (backslash space) escape in string literals
and quasiliterals.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | parser.l | 10 |
2 files changed, 16 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2013-07-13 Kaz Kylheku <kaz@kylheku.com> + + * parser.l: Diagnose unrecognized escape sequences in string + literals and quasiliterals and after @\. + Support "\ " (backslash space) escape in string literals + and quasiliterals. + 2013-07-12 Kaz Kylheku <kaz@kylheku.com> * txr.1: Fix slipup, where call is referred to as funcall. @@ -564,6 +564,10 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return TEXT; } +<SPECIAL>[\\]. { + yyerrorf(lit("unrecognized escape: \\~a"), chr(yytext[1]), nao); +} + <SPECIAL,NESTED,BRACED>[;].* { /* comment */ } @@ -688,7 +692,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return yytext[0]; } -<STRLIT,QSILIT>[\\][abtnvfre"`'\\] { +<STRLIT,QSILIT>[\\][abtnvfre "`'\\ ] { yylval.chr = char_esc(yytext[1]); return LITCHAR; } @@ -702,6 +706,10 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return LITCHAR; } +<STRLIT,QSILIT>[\\]. { + yyerrorf(lit("unrecognized escape: \\~a"), chr(yytext[1]), nao); +} + <CHRLIT>(x{HEX}+|o{OCT}+) { yylval.chr = num_esc(yytext); return LITCHAR; |