Alexandre Julliard : wrc: Add a workaround for older bison versions.

Alexandre Julliard julliard at winehq.org
Fri Jan 21 16:39:04 CST 2022


Module: wine
Branch: master
Commit: c09a5da157585d171ad896e9862db00d505e4363
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c09a5da157585d171ad896e9862db00d505e4363

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Jan 21 23:30:59 2022 +0100

wrc: Add a workaround for older bison versions.

Bison < 3.6 doesn't apply api.prefix to YYEMPTY.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/widl/parser.y | 3 +--
 tools/wrc/parser.y  | 9 ++++++---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index e16e30e98a9..b708faff6a6 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -483,8 +483,7 @@ typedecl:
 
 cppquote: tCPPQUOTE '(' aSTRING ')'		{ $$ = $3; }
 	;
-import_start: tIMPORT aSTRING ';'		{ assert(yychar == PARSER_EMPTY);
-						  $$ = xmalloc(sizeof(struct _import_t));
+import_start: tIMPORT aSTRING ';'		{ $$ = xmalloc(sizeof(struct _import_t));
 						  $$->name = $2;
 						  $$->import_performed = do_import($2);
 						  if (!$$->import_performed) yychar = aEOF;
diff --git a/tools/wrc/parser.y b/tools/wrc/parser.y
index 944cffd0064..cc5dc2935a9 100644
--- a/tools/wrc/parser.y
+++ b/tools/wrc/parser.y
@@ -199,6 +199,9 @@ static resource_t *build_fontdirs(resource_t *tail);
 static resource_t *build_fontdir(resource_t **fnt, int nfnt);
 static int rsrcid_to_token(int lookahead);
 
+/* bison >= 3.6 applies api.prefix also to YYEMPTY */
+#define YYEMPTY (-2)
+
 %}
 
 %define api.prefix {parser_}
@@ -490,11 +493,11 @@ resource
 		 * want_id because we already have a lookahead that
 		 * cannot be undone.
 		 */
-		if(yychar != PARSER_EMPTY && yychar != tNL)
+		if(yychar != YYEMPTY && yychar != tNL)
 			dont_want_id = 1;
 
 		if(yychar == tNL)
-			yychar = PARSER_EMPTY;	/* Could use 'yyclearin', but we already need the*/
+			yychar = YYEMPTY;	/* Could use 'yyclearin', but we already need the*/
 						/* direct access to yychar in rule 'usrcvt' below. */
 		else if(yychar == tIDENT)
 			parser_warning("LANGUAGE statement not delimited with newline; next identifier might be wrong\n");
@@ -2725,7 +2728,7 @@ static int rsrcid_to_token(int lookahead)
 	int token;
 
 	/* Get a token if we don't have one yet */
-	if(lookahead == PARSER_EMPTY)
+	if(lookahead == YYEMPTY)
 		lookahead = yylex();
 
 	/* Only numbers are possibly interesting */




More information about the wine-cvs mailing list