summaryrefslogtreecommitdiffstats
path: root/parser.l
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-08-07 06:57:19 -0700
committerKaz Kylheku <kaz@kylheku.com>2014-08-07 06:57:19 -0700
commite76f2a2c79e6ba45a5036888e9bc668fc8324365 (patch)
treea1a54ecef682f08813b7f51396a6c63415d70c7c /parser.l
parent3ef6cb7a6bc3e9ec77ad5ef590f1c7ad8164659a (diff)
downloadtxr-e76f2a2c79e6ba45a5036888e9bc668fc8324365.tar.gz
txr-e76f2a2c79e6ba45a5036888e9bc668fc8324365.tar.bz2
txr-e76f2a2c79e6ba45a5036888e9bc668fc8324365.zip
Reentrant parser regression.
* parser.y (yybadtok): New macro. (yybadtoken): Function must take parser argument. (grammar): Replace uses of yybadtoken with yybadtok. * parser.h (yybadtoken): Declaration updated. * parser.l (grammar): Fix incorrect yyprepf calls that are missing the yyscanner parameter.
Diffstat (limited to 'parser.l')
-rw-r--r--parser.l19
1 files changed, 9 insertions, 10 deletions
diff --git a/parser.l b/parser.l
index 315b5ab8..44f4f54a 100644
--- a/parser.l
+++ b/parser.l
@@ -694,14 +694,13 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
<SPECIAL,QSPECIAL,NESTED,BRACED>{UANYN} {
- yyerrprepf(lit("bad character in directive: '~a'"),
+ yyerrprepf(yyscanner, lit("bad character in directive: '~a'"),
string_utf8(yytext), nao);
return ERRTOK;
}
<SPECIAL,QSPECIAL,NESTED,BRACED>. {
- yyerrprepf(lit("non-UTF-8 byte in directive: "
- "'\\x~02x'"),
+ yyerrprepf(yyscanner, lit("non-UTF-8 byte in directive: '\\x~02x'"),
num((unsigned char) yytext[0]), nao);
return ERRTOK;
}
@@ -733,7 +732,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
<REGEX>\n {
yyextra->lineno++;
- yyerrprepf(lit("newline in regex"), nao);
+ yyerrprepf(yyscanner, lit("newline in regex"), nao);
return ERRTOK;
}
@@ -758,7 +757,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
<REGEX>[\\] {
- yyerrprepf(lit("dangling backslash in regex"), nao);
+ yyerrprepf(yyscanner, lit("dangling backslash in regex"), nao);
return ERRTOK;
}
@@ -770,7 +769,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
<REGEX>. {
- yyerrprepf(lit("non-UTF-8 byte in regex: '\\x~02x'"),
+ yyerrprepf(yyscanner, lit("non-UTF-8 byte in regex: '\\x~02x'"),
num((unsigned char) yytext[0]), nao);
return ERRTOK;
}
@@ -863,21 +862,21 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
<STRLIT>\n {
- yyerrprepf(lit("newline in string literal"), nao);
+ yyerrprepf(yyscanner, lit("newline in string literal"), nao);
yyextra->lineno++;
yylval->chr = yytext[0];
return ERRTOK;
}
<CHRLIT>\n {
- yyerrprepf(lit("newline in character literal"), nao);
+ yyerrprepf(yyscanner, lit("newline in character literal"), nao);
yyextra->lineno++;
yylval->chr = yytext[0];
return ERRTOK;
}
<QSILIT>\n {
- yyerrprepf(lit("newline in string quasiliteral"), nao);
+ yyerrprepf(yyscanner, lit("newline in string quasiliteral"), nao);
yyextra->lineno++;
yylval->chr = yytext[0];
return ERRTOK;
@@ -904,7 +903,7 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
<STRLIT,CHRLIT,QSILIT,WLIT,QWLIT>. {
- yyerrprepf(lit("non-UTF-8 byte in literal: '\\x~02x'"),
+ yyerrprepf(yyscanner, lit("non-UTF-8 byte in literal: '\\x~02x'"),
num((unsigned char) yytext[0]), nao);
return ERRTOK;
}