From 54364715f89bf5061738a09acc822c20aae12424 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Tue, 20 Mar 1990 11:32:30 +0000 Subject: [PATCH] full support for -d --- gen.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gen.c b/gen.c index a5d8873..7f8ec61 100644 --- a/gen.c +++ b/gen.c @@ -1092,6 +1092,16 @@ make_tables() dataend(); } + if ( ddebug ) + { /* spit out table mapping rules to line numbers */ + printf( C_short_decl, "yy_rule_linenum", num_rules ); + + for ( i = 1; i < num_rules; ++i ) + mkdata( rule_linenum[i] ); + + dataend(); + } + if ( reject ) { /* declare state buffer variables */ @@ -1192,6 +1202,43 @@ make_tables() set_indent( 2 ); gen_find_action(); + skelout(); + if ( ddebug ) + { + indent_puts( "if ( yy_act == 0 )" ); + indent_up(); + indent_puts( "fprintf( stderr, \"--scanner backtracking\\n\" );" ); + indent_down(); + + do_indent(); + printf( "else if ( yy_act < %d )\n", num_rules ); + indent_up(); + indent_puts( + "fprintf( stderr, \"--accepting rule at line %d (\\\"%s\\\")\\n\"," ); + indent_puts( " yy_rule_linenum[yy_act], yytext );" ); + indent_down(); + + do_indent(); + printf( "else if ( yy_act == %d )\n", num_rules ); + indent_up(); + indent_puts( + "fprintf( stderr, \"--accepting default rule (\\\"%s\\\")\\n\"," ); + indent_puts( " yytext );" ); + indent_down(); + + do_indent(); + printf( "else if ( yy_act == %d )\n", num_rules + 1 ); + indent_up(); + indent_puts( "fprintf( stderr, \"--(end of buffer or a NUL)\\n\" );" ); + indent_down(); + + do_indent(); + printf( "else\n" ); + indent_up(); + indent_puts( "fprintf( stderr, \"--EOF\\n\" );" ); + indent_down(); + } + /* copy actions from action_file to output file */ skelout(); indent_up(); -- 2.50.1