From 88d1ab421a4730504aabd1e61e8380027ec96545 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 2 Feb 2020 07:44:31 +0100 Subject: [PATCH] java: add access to the number of errors * data/skeletons/lalr1.java (yynewrrs, getNumberOfErrors): New. Formatting changes. --- data/skeletons/lalr1.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/data/skeletons/lalr1.java b/data/skeletons/lalr1.java index ecdd70b0..de912383 100644 --- a/data/skeletons/lalr1.java +++ b/data/skeletons/lalr1.java @@ -64,8 +64,7 @@ m4_define([b4_define_state],[[ YYStack yystack = new YYStack (); int label = YYNEWSTATE; - /* Error handling. */ - int yynerrs_ = 0;]b4_locations_if([[ +]b4_locations_if([[ /* The location where the error started. */ ]b4_location_type[ yyerrloc = null; @@ -285,6 +284,13 @@ m4_define([b4_define_state],[[ public final void setDebugLevel (int level) { yydebug = level; } ]])[ + private int yynerrs = 0; + + /** + * The number of syntax errors so far. + */ + public final int getNumberOfErrors () { return yynerrs; } + /** * Print an error message via the lexer. *]b4_locations_if([[ Use a null location.]])[ @@ -561,6 +567,7 @@ m4_define([b4_define_state],[[ ]b4_define_state[]b4_parse_trace_if([[ yycdebug ("Starting parse\n");]])[ yyerrstatus_ = 0; + yynerrs = 0; /* Initialize the stack. */ yystack.push (yystate, yylval]b4_locations_if([, yylloc])[); @@ -700,7 +707,7 @@ b4_dollar_popdef[]dnl /* If not already recovering from an error, report this error. */ if (yyerrstatus_ == 0) { - ++yynerrs_; + ++yynerrs; if (yychar == yyempty_) yytoken = yyempty_; yyerror (]b4_locations_if([yylloc, ])[yysyntax_error (yystate, yytoken)); @@ -825,7 +832,7 @@ b4_dollar_popdef[]dnl this.label = YYNEWSTATE; /* Error handling. */ - this.yynerrs_ = 0;]b4_locations_if([[ + this.yynerrs = 0;]b4_locations_if([[ /* The location where the error started. */ this.yyerrloc = null; this.yylloc = new ]b4_location_type[ (null, null);]])[