# HG changeset patch # User Martin Blais # Date 1407690283 14400 # Node ID e3cdca0088916446b019dcbf8ea7164cc5f788ac # Parent 5ebaec3d8cb9bb8eaf0600acee495a1ffc28b67c Applied patch from for bison 3.0.2 diff --git a/src/resParser.cpp b/src/resParser.cpp --- a/src/resParser.cpp +++ b/src/resParser.cpp @@ -73,7 +73,7 @@ //------------------------------------------------------------------------------ // -void resParsererror( const char* msg ) +void resParsererror( XxResources *, const char* msg ) { // Send errors to stdout so we can filter out the debug info shmeglu while // debugging parser. @@ -794,7 +794,7 @@ QString os; QTextStream oss( &os ); oss << "Unknown " << errmsg << ": " << name << flush; - resParsererror( os.toLatin1().constData() ); + resParsererror( NULL, os.toLatin1().constData() ); } num = ERROR_TOKEN; return ERROR_TOKEN; diff --git a/src/resParser.l b/src/resParser.l --- a/src/resParser.l +++ b/src/resParser.l @@ -76,7 +76,7 @@ result = YY_NULL; \ } \ else { \ - int ii = 0; \ + unsigned ii = 0; \ for ( ; (ii < max_size) && (!input_stream_ptr->atEnd()); ++ii ) { \ (*input_stream_ptr) >> buf[ii]; \ } \ diff --git a/src/resParser.y b/src/resParser.y --- a/src/resParser.y +++ b/src/resParser.y @@ -20,11 +20,6 @@ * ******************************************************************************/ -%union -{ - int num; - char* str; -} %{ // xxdiff imports @@ -39,12 +34,22 @@ // The parser input is the resources object to fill in. #define RESOURCES ( static_cast(resources) ) -#define YYPARSE_PARAM resources +%} +%define api.pure full +%parse-param {XxResources * resources} + +%union +{ + int num; + char* str; +} + +%{ // Declare lexer from other compilation unit. int resParserlex( YYSTYPE* yylval ); -void resParsererror( const char* msg ); +void resParsererror( XxResources *, const char* msg ); // Declare some parser functions and data defined in resParser.cpp namespace XxResParserNS { @@ -144,7 +149,6 @@ %type boolkwd %start xxdiffrc -%pure_parser %% xxdiffrc : stmts @@ -188,7 +192,7 @@ RESOURCES->setPreferredGeometry( geometry ); } else { - yyerror( "Bad geometry specification." ); + yyerror( NULL, "Bad geometry specification." ); // Should never happen, the lexer regexp should be tough // enough. } @@ -212,7 +216,7 @@ QString err = QString( "Requested style key does not exist." ); err += QString( "\nValid styles are: " ); err += styles.join( ", " ); - yyerror( err.toLatin1().constData() ); + yyerror( NULL, err.toLatin1().constData() ); } } ; @@ -224,7 +228,7 @@ char buf[2048]; ::snprintf( buf, 2048, "Unrecognized accelerator: %s\n", $5 ); - yyerror( buf ); + yyerror( NULL, buf ); } } ;