# HG changeset patch # User John W. Eaton # Date 1361997649 18000 # Node ID 26d65d677557e51693849a4dc136b357ea5e8e77 # Parent c6b2409672e9271eb12e4b2c9f92f229416682db rename yyerror to bison_error and make it a member of octave_parser class * parse.h, oct-parse.yy (octave_parser::bison_error): New function derived from yyerror. Change all explicit calls of yyerror to call bison_error instead. (yyerror): Forward to bison_error for the current parser. diff -r c6b2409672e9 -r 26d65d677557 libinterp/parse-tree/oct-parse.yy --- a/libinterp/parse-tree/oct-parse.yy Wed Feb 27 14:51:21 2013 -0500 +++ b/libinterp/parse-tree/oct-parse.yy Wed Feb 27 15:40:49 2013 -0500 @@ -155,9 +155,7 @@ // Forward declarations for some functions defined at the bottom of // the file. -// Generic error messages. -static void -yyerror (const char *s); +static void yyerror (const char *s); // Finish building a statement. template @@ -1042,7 +1040,7 @@ primary_fcn_scope = symbol_table::current_scope (); if (reading_script_file && current_function_depth > 1) - yyerror ("nested functions not implemented in this context"); + curr_parser->bison_error ("nested functions not implemented in this context"); } ; @@ -1078,7 +1076,7 @@ } | param_list_beg error { - yyerror ("invalid parameter list"); + curr_parser->bison_error ("invalid parameter list"); $$ = 0; ABORT_PARSE; } @@ -1248,13 +1246,13 @@ // A lot of tests are based on the assumption that this is OK // if (reading_script_file) // { -// yyerror ("function body open at end of script"); +// curr_parser->bison_error ("function body open at end of script"); // YYABORT; // } if (endfunction_found) { - yyerror ("inconsistent function endings -- " + curr_parser->bison_error ("inconsistent function endings -- " "if one function is explicitly ended, " "so must all the others"); YYABORT; @@ -1263,13 +1261,13 @@ if (! (reading_fcn_file || reading_script_file || get_input_from_eval_string)) { - yyerror ("function body open at end of input"); + curr_parser->bison_error ("function body open at end of input"); YYABORT; } if (reading_classdef_file) { - yyerror ("classdef body open at end of input"); + curr_parser->bison_error ("classdef body open at end of input"); YYABORT; } @@ -1445,7 +1443,7 @@ ; parse_error : LEXICAL_ERROR - { yyerror ("parse error"); } + { curr_parser->bison_error ("parse error"); } | error ; @@ -1498,6 +1496,12 @@ static void yyerror (const char *s) { + curr_parser->bison_error (s); +} + +void +octave_parser::bison_error (const char *s) +{ int err_col = curr_lexer->current_input_column - 1; std::ostringstream output_buf; @@ -1612,7 +1616,7 @@ { retval = false; - yyerror ("parse error"); + bison_error ("parse error"); int l = tok->line (); int c = tok->column (); @@ -2324,7 +2328,7 @@ else { if (parfor) - yyerror ("invalid syntax for parfor statement"); + bison_error ("invalid syntax for parfor statement"); else retval = new tree_complex_for_command (lhs, expr, body, lc, tc, l, c); @@ -2578,7 +2582,7 @@ else if (t == octave_value::op_asn_eq) return new tree_multi_assignment (lhs, rhs, false, l, c); else - yyerror ("computed multiple assignment not allowed"); + bison_error ("computed multiple assignment not allowed"); return retval; } @@ -2857,7 +2861,7 @@ if (args && args->has_magic_tilde ()) { - yyerror ("invalid use of empty argument (~) in index expression"); + bison_error ("invalid use of empty argument (~) in index expression"); return retval; } @@ -2975,7 +2979,7 @@ octave_parser::validate_matrix_row (tree_argument_list *row) { if (row && row->has_magic_tilde ()) - yyerror ("invalid use of tilde (~) in matrix expression"); + bison_error ("invalid use of tilde (~) in matrix expression"); return row; } diff -r c6b2409672e9 -r 26d65d677557 libinterp/parse-tree/parse.h --- a/libinterp/parse-tree/parse.h Wed Feb 27 14:51:21 2013 -0500 +++ b/libinterp/parse-tree/parse.h Wed Feb 27 15:40:49 2013 -0500 @@ -326,6 +326,9 @@ append_statement_list (tree_statement_list *list, char sep, tree_statement *stmt, bool warn_missing_semi); + // Generic error messages. + void bison_error (const char *s); + // TRUE means that we have encountered EOF on the input stream. bool end_of_input;