diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2012-02-25 15:51:43 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2012-02-25 15:51:43 -0800 |
commit | cb0c0a6144346521d6cf3b02703ba15f67b9b4f3 (patch) | |
tree | e023920384a808a8b412f7e524bb5767e42e9724 /parser.l | |
parent | d3069e9fabe241d6f6c3bc659902e4191bfd5e08 (diff) | |
download | txr-cb0c0a6144346521d6cf3b02703ba15f67b9b4f3.tar.gz txr-cb0c0a6144346521d6cf3b02703ba15f67b9b4f3.tar.bz2 txr-cb0c0a6144346521d6cf3b02703ba15f67b9b4f3.zip |
* parser.l (num_esc): Skip octal indicator 'o' if present.
This is needed for character constants.
(CHRLIT): Fix broken hex constants, being treated as octal.
* txr.1: Document octal character constants.
Diffstat (limited to 'parser.l')
-rw-r--r-- | parser.l | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -134,6 +134,8 @@ static wchar_t num_esc(char *num) yyerror("too many digits in hex character escape"); return strtol(num + 1, 0, 16); } else { + if (num[0] == 'o') + num++; if (strlen(num) > 8) yyerror("too many digits in octal character escape"); return strtol(num, 0, 8); @@ -609,7 +611,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} } <CHRLIT>(x{HEX}+|o{OCT}+) { - yylval.chr = num_esc(yytext+1); + yylval.chr = num_esc(yytext); return LITCHAR; } |