diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2020-11-15 11:55:50 -0500 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2020-11-15 12:24:35 -0500 |
commit | df632cf2eb1e1def8f63d08d54055862ac6d8978 (patch) | |
tree | 69f405283362aefcced101270dc818fc82ce1a37 | |
parent | 3603f033509d5a214b603f60ce4dd6ed7819843e (diff) | |
download | flex-git-df632cf2eb1e1def8f63d08d54055862ac6d8978.tar.gz |
Fix typo revealed by Go porting work, and improve test coverage to match.
We a ruleset test for BOL matching and a test for the array case of yymore.
Improve yymore testing by adding tests that require a BOL match in
both array and pointer cases.
Also, convert lineno sporadic test to be ruleset-based so it's
applied on all back ends.
No cide changes.
-rw-r--r-- | src/c99-flex.skl | 2 | ||||
-rw-r--r-- | src/cpp-flex.skl | 2 | ||||
-rw-r--r-- | tests/.gitignore | 15 | ||||
-rw-r--r-- | tests/Makefile.am | 3 | ||||
-rw-r--r-- | tests/bol.rules | 35 | ||||
-rw-r--r-- | tests/lineno.rules | 71 | ||||
-rw-r--r-- | tests/lineno_c99.l | 98 | ||||
-rw-r--r-- | tests/lineno_nr.l | 94 | ||||
-rw-r--r-- | tests/lineno_r.l | 97 | ||||
-rw-r--r-- | tests/ruleset.am | 52 | ||||
-rw-r--r-- | tests/yymore.rules | 5 | ||||
-rw-r--r-- | tests/yymorearray.rules | 36 | ||||
-rw-r--r-- | tests/yymorearraybol.rules | 39 |
13 files changed, 248 insertions, 301 deletions
diff --git a/src/c99-flex.skl b/src/c99-flex.skl index 408761a..fe63912 100644 --- a/src/c99-flex.skl +++ b/src/c99-flex.skl @@ -2180,7 +2180,7 @@ m4_ifdef([[M4_MODE_FIND_ACTION_COMPRESSED]], [[ yy_act = yy_accept[yy_current_s m4_ifdef( [[M4_MODE_YYLINENO]],[[ m4_define([[M4_YYL_BASE]], [[m4_ifdef([[M4_MODE_YYMORE_USED]], - [[m4_ifdef([[M4_MODE_YYTECT_IS_ARRAY]], + [[m4_ifdef([[M4_MODE_YYTEXT_IS_ARRAY]], [["yyscanner->yy_prev_more_offset"]], [["yyscanner->yy_more_len"]])]], [[0]])]]) if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { int yyl; diff --git a/src/cpp-flex.skl b/src/cpp-flex.skl index 4432126..e31f448 100644 --- a/src/cpp-flex.skl +++ b/src/cpp-flex.skl @@ -2052,7 +2052,7 @@ m4_ifdef([[M4_MODE_FIND_ACTION_COMPRESSED]], [[ yy_act = yy_accept[yy_current_s m4_ifdef( [[M4_MODE_YYLINENO]],[[ m4_define([[M4_YYL_BASE]], [[m4_ifdef([[M4_MODE_YYMORE_USED]], - [[m4_ifdef([[M4_MODE_YYTECT_IS_ARRAY]], + [[m4_ifdef([[M4_MODE_YYTEXT_IS_ARRAY]], [["YY_G(yy_prev_more_offset)"]], [["YY_G(yy_more_len)"]])]], [[0]])]]) if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { int yyl; diff --git a/tests/.gitignore b/tests/.gitignore index b449a38..52efe99 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -19,6 +19,8 @@ bison_yylloc_scanner.[ch] bison_yylval bison_yylval_parser.[ch] bison_yylval_scanner.[ch] +bol* +!bol.rules c_cxx_nr c_cxx_nr.cc c_cxx_r @@ -56,13 +58,18 @@ include_by_reentrant.direct.c lexcompat* !lexcompat.rules lineno_nr.one -lineno_nr.c lineno_r.one -lineno_r.c lineno_c99.one -lineno_c99.c lineno_trailing.one lineno_trailing.c +lineno*.c +lineno*.l +lineno_nr +lineno_r +lineno_c99 +lineno_go +lineno.txt +!lineno.rules mem_nr mem_nr.c mem_r @@ -117,6 +124,8 @@ yyless* !yyless.rules yymore* !yymore.rules +!yymorearray.rules +!yymorearraybol.rules yyunput* !yyunput.rules test-yydecl-* diff --git a/tests/Makefile.am b/tests/Makefile.am index 4c8f42f..9d4677a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -214,9 +214,6 @@ CLEANFILES = \ include_by_buffer.direct.c \ include_by_push.direct.c \ include_by_reentrant.direct.c \ - lineno_nr.c \ - lineno_r.c \ - lineno_c99.c \ lineno_trailing.c \ mem_nr.c \ mem_r.c \ diff --git a/tests/bol.rules b/tests/bol.rules new file mode 100644 index 0000000..f9031ae --- /dev/null +++ b/tests/bol.rules @@ -0,0 +1,35 @@ +/* + * This file is part of flex. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/* Test BOL matching, + * If the ^ operator does not constrain pattern patching, these rules + * will false-match on after :bar: the line of input and fail. + */ + +%option nounput noyywrap noyylineno warn nodefault noinput +%% +^foo {M4_TEST_FAILMESSAGE} +.|\n {} + +### +barfoo diff --git a/tests/lineno.rules b/tests/lineno.rules new file mode 100644 index 0000000..7fc9c31 --- /dev/null +++ b/tests/lineno.rules @@ -0,0 +1,71 @@ +/* + * This file is part of flex. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/* The goal here is to test the yylineno processing by: + * - providing some rules than CAN match newlines and + * other rules that can NOT match newlines, + * - matching several newlines in one rule, + * - directly modifying yylineno. + * FIXME: Exposes a bug, probably in the Flex scanner. + * If "--yylineno" in the action is "yylineno--", the pattern + * is not recognized and the magic rewrite rule for yylineo + * does not fire. Only an issue for non-default back ends that + * do magic rewrites rather than rtelying on the C preprocessor. + */ +%option 8bit +%option nounput nomain noyywrap noinput yylineno +%option warn + +WORD [[:alpha:]]+ +DIGIT [[:digit:]] + +%% +"yylineno++" ++yylineno; +"yylineno--" --yylineno; +[[:blank:]]+ +{WORD} +{DIGIT}+(\n{DIGIT}+)* +\n +. +<<EOF>> {M4_TEST_ASSERT(yylineno == 20) M4_TEST_DO(yyterminate())} + +### +These words +are separated +by newlines +and sometimes + spaces +too. +The next three lines are numbers with only intervening newlines +01123 +581321 +34 +And now for some blank lines.... + + +Finally, we directly modify yylineno, but then change it back afterwards +(see scanner.l): + +yylineno++ + +yylineno-- diff --git a/tests/lineno_c99.l b/tests/lineno_c99.l deleted file mode 100644 index 11d402c..0000000 --- a/tests/lineno_c99.l +++ /dev/null @@ -1,98 +0,0 @@ -/* - * This file is part of flex. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. - */ - -%{ -/* A template scanner file to build "scanner.c". - Run as: - test-lineno-r # report flex's yylineno - test-lineno-r 1 # report count_newlines(stdin) -*/ - -#include <stdio.h> -#include <stdlib.h> -#include "config.h" - -%} - -%option emit="c99" -%option 8bit prefix="test" -%option nounput nomain noyywrap noinput yylineno -%option warn - -WORD [[:alpha:]]+ -DIGIT [[:digit:]] - -%% - /* The goal here is to test the yylineno processing by: - - providing some rules than CAN match newlines and - other rules that can NOT match newlines, - - matching several newlines in one rule, - - directly modifying yylineno. - */ - -"yylineno--" --yylineno; -"yylineno++" ++yylineno; -[[:blank:]]+ -{WORD} -{DIGIT}+(\n{DIGIT}+)* -\n -. -<<EOF>> { printf("%d\n", yylineno); - yyterminate(); - } - -%% - -/* returns number of '\n' characters in input, plus one. - This is what flex does, essentially. */ - -static int -count_newlines (FILE* in) -{ - int n=1,c; - while ((c=fgetc(in)) != EOF) - if( c == '\n') - n++; - return n; -} - -int main ( int argc, char** argv ); - -int -main (int argc, char **argv) -{ - (void)argv; - - if( argc > 1 ) - printf("%d\n", count_newlines(stdin)); - - else{ - yyscan_t s; - testlex_init(&s); - testset_in(stdin,s); - testset_out(stdout,s); - testlex(s); - testlex_destroy(s); - } - return 0; -} diff --git a/tests/lineno_nr.l b/tests/lineno_nr.l deleted file mode 100644 index dbe6b2d..0000000 --- a/tests/lineno_nr.l +++ /dev/null @@ -1,94 +0,0 @@ -/* - * This file is part of flex. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. - */ - -%{ -/* A template scanner file to build "scanner.c". - Run as: - test-lineno-nr # report flex's yylineno - test-lineno-nr 1 # report count_newlines(stdin) -*/ - -#include <stdio.h> -#include <stdlib.h> -#include "config.h" - -%} - -%option 8bit prefix="test" -%option nounput nomain noyywrap noinput yylineno -%option warn - -WORD [[:alpha:]]+ -DIGIT [[:digit:]] - -%% - /* The goal here is to test the yylineno processing by: - - providing some rules than CAN match newlines and - other rules that can NOT match newlines, - - matching several newlines in one rule, - - directly modifying yylineno. - */ - -"yylineno++" yylineno++; -"yylineno--" yylineno--; -[[:blank:]]+ -{WORD} -{DIGIT}+(\n{DIGIT}+)* -\n -. -<<EOF>> { printf("%d\n", yylineno); - yyterminate(); - } - -%% - -/* returns number of '\n' characters in input, plus one. - This is what flex does, essentially. */ - -static int -count_newlines (FILE* in) -{ - int n=1,c; - while ((c=fgetc(in)) != EOF) - if( c == '\n') - n++; - return n; -} - -int main ( int, char**); - -int -main ( int argc, char **argv ) -{ - (void)argv; - - if( argc > 1 ) - printf("%d\n", count_newlines(stdin)); - - else{ - yyin = stdin; - yyout = stdout; - yylex(); - } - return 0; -} diff --git a/tests/lineno_r.l b/tests/lineno_r.l deleted file mode 100644 index d7230d7..0000000 --- a/tests/lineno_r.l +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is part of flex. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. - */ - -%{ -/* A template scanner file to build "scanner.c". - Run as: - test-lineno-r # report flex's yylineno - test-lineno-r 1 # report count_newlines(stdin) -*/ - -#include <stdio.h> -#include <stdlib.h> -#include "config.h" - -%} - -%option 8bit prefix="test" -%option nounput nomain noyywrap noinput yylineno reentrant -%option warn - -WORD [[:alpha:]]+ -DIGIT [[:digit:]] - -%% - /* The goal here is to test the yylineno processing by: - - providing some rules than CAN match newlines and - other rules that can NOT match newlines, - - matching several newlines in one rule, - - directly modifying yylineno. - */ - -"yylineno++" yylineno++; -"yylineno--" yylineno--; -[[:blank:]]+ -{WORD} -{DIGIT}+(\n{DIGIT}+)* -\n -. -<<EOF>> { printf("%d\n", yylineno); - yyterminate(); - } - -%% - -/* returns number of '\n' characters in input, plus one. - This is what flex does, essentially. */ - -static int -count_newlines (FILE* in) -{ - int n=1,c; - while ((c=fgetc(in)) != EOF) - if( c == '\n') - n++; - return n; -} - -int main ( int argc, char** argv ); - -int -main (int argc, char **argv) -{ - (void)argv; - - if( argc > 1 ) - printf("%d\n", count_newlines(stdin)); - - else{ - yyscan_t s; - testlex_init(&s); - testset_in(stdin,s); - testset_out(stdout,s); - testlex(s); - testlex_destroy(s); - } - return 0; -} diff --git a/tests/ruleset.am b/tests/ruleset.am index 13968f5..1f4fd6d 100644 --- a/tests/ruleset.am +++ b/tests/ruleset.am @@ -9,6 +9,10 @@ basic_nr_SOURCES = basic_nr.l basic_nr.l: $(srcdir)/basic.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +bol_nr_SOURCES = bol_nr.l +bol_nr.l: $(srcdir)/bol.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + ccl_nr_SOURCES = ccl_nr.l ccl_nr.l: $(srcdir)/ccl.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -25,6 +29,10 @@ lexcompat_nr_SOURCES = lexcompat_nr.l lexcompat_nr.l: $(srcdir)/lexcompat.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +lineno_nr_SOURCES = lineno_nr.l +lineno_nr.l: $(srcdir)/lineno.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + posixlycorrect_nr_SOURCES = posixlycorrect_nr.l posixlycorrect_nr.l: $(srcdir)/posixlycorrect.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -57,6 +65,14 @@ yyless_nr_SOURCES = yyless_nr.l yyless_nr.l: $(srcdir)/yyless.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +yymorearraybol_nr_SOURCES = yymorearraybol_nr.l +yymorearraybol_nr.l: $(srcdir)/yymorearraybol.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + +yymorearray_nr_SOURCES = yymorearray_nr.l +yymorearray_nr.l: $(srcdir)/yymorearray.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + yymore_nr_SOURCES = yymore_nr.l yymore_nr.l: $(srcdir)/yymore.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -205,6 +221,10 @@ basic_r_SOURCES = basic_r.l basic_r.l: $(srcdir)/basic.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +bol_r_SOURCES = bol_r.l +bol_r.l: $(srcdir)/bol.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + ccl_r_SOURCES = ccl_r.l ccl_r.l: $(srcdir)/ccl.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -217,6 +237,10 @@ flexname_r_SOURCES = flexname_r.l flexname_r.l: $(srcdir)/flexname.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +lineno_r_SOURCES = lineno_r.l +lineno_r.l: $(srcdir)/lineno.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + posix_r_SOURCES = posix_r.l posix_r.l: $(srcdir)/posix.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -245,6 +269,14 @@ yyless_r_SOURCES = yyless_r.l yyless_r.l: $(srcdir)/yyless.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +yymorearraybol_r_SOURCES = yymorearraybol_r.l +yymorearraybol_r.l: $(srcdir)/yymorearraybol.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + +yymorearray_r_SOURCES = yymorearray_r.l +yymorearray_r.l: $(srcdir)/yymorearray.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + yymore_r_SOURCES = yymore_r.l yymore_r.l: $(srcdir)/yymore.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -393,6 +425,10 @@ basic_c99_SOURCES = basic_c99.l basic_c99.l: $(srcdir)/basic.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +bol_c99_SOURCES = bol_c99.l +bol_c99.l: $(srcdir)/bol.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + ccl_c99_SOURCES = ccl_c99.l ccl_c99.l: $(srcdir)/ccl.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -405,6 +441,10 @@ flexname_c99_SOURCES = flexname_c99.l flexname_c99.l: $(srcdir)/flexname.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +lineno_c99_SOURCES = lineno_c99.l +lineno_c99.l: $(srcdir)/lineno.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + posix_c99_SOURCES = posix_c99.l posix_c99.l: $(srcdir)/posix.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -433,6 +473,14 @@ yyless_c99_SOURCES = yyless_c99.l yyless_c99.l: $(srcdir)/yyless.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ +yymorearraybol_c99_SOURCES = yymorearraybol_c99.l +yymorearraybol_c99.l: $(srcdir)/yymorearraybol.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + +yymorearray_c99_SOURCES = yymorearray_c99.l +yymorearray_c99.l: $(srcdir)/yymorearray.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 + $(SHELL) $(srcdir)/testmaker.sh $@ + yymore_c99_SOURCES = yymore_c99.l yymore_c99.l: $(srcdir)/yymore.rules $(srcdir)/testmaker.sh $(srcdir)/testmaker.m4 $(SHELL) $(srcdir)/testmaker.sh $@ @@ -596,6 +644,6 @@ test-yydecl-c99.sh$(EXEEXT): test-yydecl-gen.sh # End generated test rules -RULESET_TESTS = array_nr basic_nr ccl_nr extended_nr flexname_nr lexcompat_nr posixlycorrect_nr posix_nr preposix_nr quoteincomment_nr reject_nr tableopts_nr trailing_nr yyless_nr yymore_nr yyunput_nr tableopts_opt_nr-Ca.opt tableopts_opt_nr-Ce.opt tableopts_opt_nr-Cf.opt tableopts_opt_nr-CxF.opt tableopts_opt_nr-Cm.opt tableopts_opt_nr-Cem.opt tableopts_opt_nr-Cae.opt tableopts_opt_nr-Caef.opt tableopts_opt_nr-CaexF.opt tableopts_opt_nr-Cam.opt tableopts_opt_nr-Caem.opt tableopts_ser_nr-Ca.ser tableopts_ser_nr-Ce.ser tableopts_ser_nr-Cf.ser tableopts_ser_nr-CxF.ser tableopts_ser_nr-Cm.ser tableopts_ser_nr-Cem.ser tableopts_ser_nr-Cae.ser tableopts_ser_nr-Caef.ser tableopts_ser_nr-CaexF.ser tableopts_ser_nr-Cam.ser tableopts_ser_nr-Caem.ser tableopts_ver_nr-Ca.ver tableopts_ver_nr-Ce.ver tableopts_ver_nr-Cf.ver tableopts_ver_nr-CxF.ver tableopts_ver_nr-Cm.ver tableopts_ver_nr-Cem.ver tableopts_ver_nr-Cae.ver tableopts_ver_nr-Caef.ver tableopts_ver_nr-CaexF.ver tableopts_ver_nr-Cam.ver tableopts_ver_nr-Caem.ver array_r basic_r ccl_r extended_r flexname_r posix_r preposix_r quoteincomment_r reject_r tableopts_r trailing_r yyless_r yymore_r yyunput_r tableopts_opt_r-Ca.opt tableopts_opt_r-Ce.opt tableopts_opt_r-Cf.opt tableopts_opt_r-CxF.opt tableopts_opt_r-Cm.opt tableopts_opt_r-Cem.opt tableopts_opt_r-Cae.opt tableopts_opt_r-Caef.opt tableopts_opt_r-CaexF.opt tableopts_opt_r-Cam.opt tableopts_opt_r-Caem.opt tableopts_ser_r-Ca.ser tableopts_ser_r-Ce.ser tableopts_ser_r-Cf.ser tableopts_ser_r-CxF.ser tableopts_ser_r-Cm.ser tableopts_ser_r-Cem.ser tableopts_ser_r-Cae.ser tableopts_ser_r-Caef.ser tableopts_ser_r-CaexF.ser tableopts_ser_r-Cam.ser tableopts_ser_r-Caem.ser tableopts_ver_r-Ca.ver tableopts_ver_r-Ce.ver tableopts_ver_r-Cf.ver tableopts_ver_r-CxF.ver tableopts_ver_r-Cm.ver tableopts_ver_r-Cem.ver tableopts_ver_r-Cae.ver tableopts_ver_r-Caef.ver tableopts_ver_r-CaexF.ver tableopts_ver_r-Cam.ver tableopts_ver_r-Caem.ver array_c99 basic_c99 ccl_c99 extended_c99 flexname_c99 posix_c99 preposix_c99 quoteincomment_c99 reject_c99 tableopts_c99 trailing_c99 yyless_c99 yymore_c99 yyunput_c99 tableopts_opt_c99-Ca.opt tableopts_opt_c99-Ce.opt tableopts_opt_c99-Cf.opt tableopts_opt_c99-CxF.opt tableopts_opt_c99-Cm.opt tableopts_opt_c99-Cem.opt tableopts_opt_c99-Cae.opt tableopts_opt_c99-Caef.opt tableopts_opt_c99-CaexF.opt tableopts_opt_c99-Cam.opt tableopts_opt_c99-Caem.opt tableopts_ser_c99-Ca.ser tableopts_ser_c99-Ce.ser tableopts_ser_c99-Cf.ser tableopts_ser_c99-CxF.ser tableopts_ser_c99-Cm.ser tableopts_ser_c99-Cem.ser tableopts_ser_c99-Cae.ser tableopts_ser_c99-Caef.ser tableopts_ser_c99-CaexF.ser tableopts_ser_c99-Cam.ser tableopts_ser_c99-Caem.ser tableopts_ver_c99-Ca.ver tableopts_ver_c99-Ce.ver tableopts_ver_c99-Cf.ver tableopts_ver_c99-CxF.ver tableopts_ver_c99-Cm.ver tableopts_ver_c99-Cem.ver tableopts_ver_c99-Cae.ver tableopts_ver_c99-Caef.ver tableopts_ver_c99-CaexF.ver tableopts_ver_c99-Cam.ver tableopts_ver_c99-Caem.ver test-yydecl-nr.sh test-yydecl-r.sh test-yydecl-c99.sh -RULESET_REMOVABLES = array_nr array_nr.c array_nr.l array_nr.txt basic_nr basic_nr.c basic_nr.l basic_nr.txt ccl_nr ccl_nr.c ccl_nr.l ccl_nr.txt extended_nr extended_nr.c extended_nr.l extended_nr.txt flexname_nr flexname_nr.c flexname_nr.l flexname_nr.txt lexcompat_nr lexcompat_nr.c lexcompat_nr.l lexcompat_nr.txt posixlycorrect_nr posixlycorrect_nr.c posixlycorrect_nr.l posixlycorrect_nr.txt posix_nr posix_nr.c posix_nr.l posix_nr.txt preposix_nr preposix_nr.c preposix_nr.l preposix_nr.txt quoteincomment_nr quoteincomment_nr.c quoteincomment_nr.l quoteincomment_nr.txt reject_nr reject_nr.c reject_nr.l reject_nr.txt tableopts_nr tableopts_nr.c tableopts_nr.l tableopts_nr.txt trailing_nr trailing_nr.c trailing_nr.l trailing_nr.txt yyless_nr yyless_nr.c yyless_nr.l yyless_nr.txt yymore_nr yymore_nr.c yymore_nr.l yymore_nr.txt yyunput_nr yyunput_nr.c yyunput_nr.l yyunput_nr.txt tableopts_opt_nr-Ca.opt tableopts_opt_nr-Ca.opt.c tableopts_opt_nr-Ca.opt.l tableopts_opt_nr-Ca.opt.tables tableopts_opt_nr-Ce.opt tableopts_opt_nr-Ce.opt.c tableopts_opt_nr-Ce.opt.l tableopts_opt_nr-Ce.opt.tables tableopts_opt_nr-Cf.opt tableopts_opt_nr-Cf.opt.c tableopts_opt_nr-Cf.opt.l tableopts_opt_nr-Cf.opt.tables tableopts_opt_nr-CxF.opt tableopts_opt_nr-CxF.opt.c tableopts_opt_nr-CxF.opt.l tableopts_opt_nr-CxF.opt.tables tableopts_opt_nr-Cm.opt tableopts_opt_nr-Cm.opt.c tableopts_opt_nr-Cm.opt.l tableopts_opt_nr-Cm.opt.tables tableopts_opt_nr-Cem.opt tableopts_opt_nr-Cem.opt.c tableopts_opt_nr-Cem.opt.l tableopts_opt_nr-Cem.opt.tables tableopts_opt_nr-Cae.opt tableopts_opt_nr-Cae.opt.c tableopts_opt_nr-Cae.opt.l tableopts_opt_nr-Cae.opt.tables tableopts_opt_nr-Caef.opt tableopts_opt_nr-Caef.opt.c tableopts_opt_nr-Caef.opt.l tableopts_opt_nr-Caef.opt.tables tableopts_opt_nr-CaexF.opt tableopts_opt_nr-CaexF.opt.c tableopts_opt_nr-CaexF.opt.l tableopts_opt_nr-CaexF.opt.tables tableopts_opt_nr-Cam.opt tableopts_opt_nr-Cam.opt.c tableopts_opt_nr-Cam.opt.l tableopts_opt_nr-Cam.opt.tables tableopts_opt_nr-Caem.opt tableopts_opt_nr-Caem.opt.c tableopts_opt_nr-Caem.opt.l tableopts_opt_nr-Caem.opt.tables tableopts_ser_nr-Ca.ser tableopts_ser_nr-Ca.ser.c tableopts_ser_nr-Ca.ser.l tableopts_ser_nr-Ca.ser.tables tableopts_ser_nr-Ce.ser tableopts_ser_nr-Ce.ser.c tableopts_ser_nr-Ce.ser.l tableopts_ser_nr-Ce.ser.tables tableopts_ser_nr-Cf.ser tableopts_ser_nr-Cf.ser.c tableopts_ser_nr-Cf.ser.l tableopts_ser_nr-Cf.ser.tables tableopts_ser_nr-CxF.ser tableopts_ser_nr-CxF.ser.c tableopts_ser_nr-CxF.ser.l tableopts_ser_nr-CxF.ser.tables tableopts_ser_nr-Cm.ser tableopts_ser_nr-Cm.ser.c tableopts_ser_nr-Cm.ser.l tableopts_ser_nr-Cm.ser.tables tableopts_ser_nr-Cem.ser tableopts_ser_nr-Cem.ser.c tableopts_ser_nr-Cem.ser.l tableopts_ser_nr-Cem.ser.tables tableopts_ser_nr-Cae.ser tableopts_ser_nr-Cae.ser.c tableopts_ser_nr-Cae.ser.l tableopts_ser_nr-Cae.ser.tables tableopts_ser_nr-Caef.ser tableopts_ser_nr-Caef.ser.c tableopts_ser_nr-Caef.ser.l tableopts_ser_nr-Caef.ser.tables tableopts_ser_nr-CaexF.ser tableopts_ser_nr-CaexF.ser.c tableopts_ser_nr-CaexF.ser.l tableopts_ser_nr-CaexF.ser.tables tableopts_ser_nr-Cam.ser tableopts_ser_nr-Cam.ser.c tableopts_ser_nr-Cam.ser.l tableopts_ser_nr-Cam.ser.tables tableopts_ser_nr-Caem.ser tableopts_ser_nr-Caem.ser.c tableopts_ser_nr-Caem.ser.l tableopts_ser_nr-Caem.ser.tables tableopts_ver_nr-Ca.ver tableopts_ver_nr-Ca.ver.c tableopts_ver_nr-Ca.ver.l tableopts_ver_nr-Ca.ver.tables tableopts_ver_nr-Ce.ver tableopts_ver_nr-Ce.ver.c tableopts_ver_nr-Ce.ver.l tableopts_ver_nr-Ce.ver.tables tableopts_ver_nr-Cf.ver tableopts_ver_nr-Cf.ver.c tableopts_ver_nr-Cf.ver.l tableopts_ver_nr-Cf.ver.tables tableopts_ver_nr-CxF.ver tableopts_ver_nr-CxF.ver.c tableopts_ver_nr-CxF.ver.l tableopts_ver_nr-CxF.ver.tables tableopts_ver_nr-Cm.ver tableopts_ver_nr-Cm.ver.c tableopts_ver_nr-Cm.ver.l tableopts_ver_nr-Cm.ver.tables tableopts_ver_nr-Cem.ver tableopts_ver_nr-Cem.ver.c tableopts_ver_nr-Cem.ver.l tableopts_ver_nr-Cem.ver.tables tableopts_ver_nr-Cae.ver tableopts_ver_nr-Cae.ver.c tableopts_ver_nr-Cae.ver.l tableopts_ver_nr-Cae.ver.tables tableopts_ver_nr-Caef.ver tableopts_ver_nr-Caef.ver.c tableopts_ver_nr-Caef.ver.l tableopts_ver_nr-Caef.ver.tables tableopts_ver_nr-CaexF.ver tableopts_ver_nr-CaexF.ver.c tableopts_ver_nr-CaexF.ver.l tableopts_ver_nr-CaexF.ver.tables tableopts_ver_nr-Cam.ver tableopts_ver_nr-Cam.ver.c tableopts_ver_nr-Cam.ver.l tableopts_ver_nr-Cam.ver.tables tableopts_ver_nr-Caem.ver tableopts_ver_nr-Caem.ver.c tableopts_ver_nr-Caem.ver.l tableopts_ver_nr-Caem.ver.tables array_r array_r.c array_r.l array_r.txt basic_r basic_r.c basic_r.l basic_r.txt ccl_r ccl_r.c ccl_r.l ccl_r.txt extended_r extended_r.c extended_r.l extended_r.txt flexname_r flexname_r.c flexname_r.l flexname_r.txt posix_r posix_r.c posix_r.l posix_r.txt preposix_r preposix_r.c preposix_r.l preposix_r.txt quoteincomment_r quoteincomment_r.c quoteincomment_r.l quoteincomment_r.txt reject_r reject_r.c reject_r.l reject_r.txt tableopts_r tableopts_r.c tableopts_r.l tableopts_r.txt trailing_r trailing_r.c trailing_r.l trailing_r.txt yyless_r yyless_r.c yyless_r.l yyless_r.txt yymore_r yymore_r.c yymore_r.l yymore_r.txt yyunput_r yyunput_r.c yyunput_r.l yyunput_r.txt tableopts_opt_r-Ca.opt tableopts_opt_r-Ca.opt.c tableopts_opt_r-Ca.opt.l tableopts_opt_r-Ca.opt.tables tableopts_opt_r-Ce.opt tableopts_opt_r-Ce.opt.c tableopts_opt_r-Ce.opt.l tableopts_opt_r-Ce.opt.tables tableopts_opt_r-Cf.opt tableopts_opt_r-Cf.opt.c tableopts_opt_r-Cf.opt.l tableopts_opt_r-Cf.opt.tables tableopts_opt_r-CxF.opt tableopts_opt_r-CxF.opt.c tableopts_opt_r-CxF.opt.l tableopts_opt_r-CxF.opt.tables tableopts_opt_r-Cm.opt tableopts_opt_r-Cm.opt.c tableopts_opt_r-Cm.opt.l tableopts_opt_r-Cm.opt.tables tableopts_opt_r-Cem.opt tableopts_opt_r-Cem.opt.c tableopts_opt_r-Cem.opt.l tableopts_opt_r-Cem.opt.tables tableopts_opt_r-Cae.opt tableopts_opt_r-Cae.opt.c tableopts_opt_r-Cae.opt.l tableopts_opt_r-Cae.opt.tables tableopts_opt_r-Caef.opt tableopts_opt_r-Caef.opt.c tableopts_opt_r-Caef.opt.l tableopts_opt_r-Caef.opt.tables tableopts_opt_r-CaexF.opt tableopts_opt_r-CaexF.opt.c tableopts_opt_r-CaexF.opt.l tableopts_opt_r-CaexF.opt.tables tableopts_opt_r-Cam.opt tableopts_opt_r-Cam.opt.c tableopts_opt_r-Cam.opt.l tableopts_opt_r-Cam.opt.tables tableopts_opt_r-Caem.opt tableopts_opt_r-Caem.opt.c tableopts_opt_r-Caem.opt.l tableopts_opt_r-Caem.opt.tables tableopts_ser_r-Ca.ser tableopts_ser_r-Ca.ser.c tableopts_ser_r-Ca.ser.l tableopts_ser_r-Ca.ser.tables tableopts_ser_r-Ce.ser tableopts_ser_r-Ce.ser.c tableopts_ser_r-Ce.ser.l tableopts_ser_r-Ce.ser.tables tableopts_ser_r-Cf.ser tableopts_ser_r-Cf.ser.c tableopts_ser_r-Cf.ser.l tableopts_ser_r-Cf.ser.tables tableopts_ser_r-CxF.ser tableopts_ser_r-CxF.ser.c tableopts_ser_r-CxF.ser.l tableopts_ser_r-CxF.ser.tables tableopts_ser_r-Cm.ser tableopts_ser_r-Cm.ser.c tableopts_ser_r-Cm.ser.l tableopts_ser_r-Cm.ser.tables tableopts_ser_r-Cem.ser tableopts_ser_r-Cem.ser.c tableopts_ser_r-Cem.ser.l tableopts_ser_r-Cem.ser.tables tableopts_ser_r-Cae.ser tableopts_ser_r-Cae.ser.c tableopts_ser_r-Cae.ser.l tableopts_ser_r-Cae.ser.tables tableopts_ser_r-Caef.ser tableopts_ser_r-Caef.ser.c tableopts_ser_r-Caef.ser.l tableopts_ser_r-Caef.ser.tables tableopts_ser_r-CaexF.ser tableopts_ser_r-CaexF.ser.c tableopts_ser_r-CaexF.ser.l tableopts_ser_r-CaexF.ser.tables tableopts_ser_r-Cam.ser tableopts_ser_r-Cam.ser.c tableopts_ser_r-Cam.ser.l tableopts_ser_r-Cam.ser.tables tableopts_ser_r-Caem.ser tableopts_ser_r-Caem.ser.c tableopts_ser_r-Caem.ser.l tableopts_ser_r-Caem.ser.tables tableopts_ver_r-Ca.ver tableopts_ver_r-Ca.ver.c tableopts_ver_r-Ca.ver.l tableopts_ver_r-Ca.ver.tables tableopts_ver_r-Ce.ver tableopts_ver_r-Ce.ver.c tableopts_ver_r-Ce.ver.l tableopts_ver_r-Ce.ver.tables tableopts_ver_r-Cf.ver tableopts_ver_r-Cf.ver.c tableopts_ver_r-Cf.ver.l tableopts_ver_r-Cf.ver.tables tableopts_ver_r-CxF.ver tableopts_ver_r-CxF.ver.c tableopts_ver_r-CxF.ver.l tableopts_ver_r-CxF.ver.tables tableopts_ver_r-Cm.ver tableopts_ver_r-Cm.ver.c tableopts_ver_r-Cm.ver.l tableopts_ver_r-Cm.ver.tables tableopts_ver_r-Cem.ver tableopts_ver_r-Cem.ver.c tableopts_ver_r-Cem.ver.l tableopts_ver_r-Cem.ver.tables tableopts_ver_r-Cae.ver tableopts_ver_r-Cae.ver.c tableopts_ver_r-Cae.ver.l tableopts_ver_r-Cae.ver.tables tableopts_ver_r-Caef.ver tableopts_ver_r-Caef.ver.c tableopts_ver_r-Caef.ver.l tableopts_ver_r-Caef.ver.tables tableopts_ver_r-CaexF.ver tableopts_ver_r-CaexF.ver.c tableopts_ver_r-CaexF.ver.l tableopts_ver_r-CaexF.ver.tables tableopts_ver_r-Cam.ver tableopts_ver_r-Cam.ver.c tableopts_ver_r-Cam.ver.l tableopts_ver_r-Cam.ver.tables tableopts_ver_r-Caem.ver tableopts_ver_r-Caem.ver.c tableopts_ver_r-Caem.ver.l tableopts_ver_r-Caem.ver.tables array_c99 array_c99.c array_c99.l array_c99.txt basic_c99 basic_c99.c basic_c99.l basic_c99.txt ccl_c99 ccl_c99.c ccl_c99.l ccl_c99.txt extended_c99 extended_c99.c extended_c99.l extended_c99.txt flexname_c99 flexname_c99.c flexname_c99.l flexname_c99.txt posix_c99 posix_c99.c posix_c99.l posix_c99.txt preposix_c99 preposix_c99.c preposix_c99.l preposix_c99.txt quoteincomment_c99 quoteincomment_c99.c quoteincomment_c99.l quoteincomment_c99.txt reject_c99 reject_c99.c reject_c99.l reject_c99.txt tableopts_c99 tableopts_c99.c tableopts_c99.l tableopts_c99.txt trailing_c99 trailing_c99.c trailing_c99.l trailing_c99.txt yyless_c99 yyless_c99.c yyless_c99.l yyless_c99.txt yymore_c99 yymore_c99.c yymore_c99.l yymore_c99.txt yyunput_c99 yyunput_c99.c yyunput_c99.l yyunput_c99.txt tableopts_opt_c99-Ca.opt tableopts_opt_c99-Ca.opt.c tableopts_opt_c99-Ca.opt.l tableopts_opt_c99-Ca.opt.tables tableopts_opt_c99-Ce.opt tableopts_opt_c99-Ce.opt.c tableopts_opt_c99-Ce.opt.l tableopts_opt_c99-Ce.opt.tables tableopts_opt_c99-Cf.opt tableopts_opt_c99-Cf.opt.c tableopts_opt_c99-Cf.opt.l tableopts_opt_c99-Cf.opt.tables tableopts_opt_c99-CxF.opt tableopts_opt_c99-CxF.opt.c tableopts_opt_c99-CxF.opt.l tableopts_opt_c99-CxF.opt.tables tableopts_opt_c99-Cm.opt tableopts_opt_c99-Cm.opt.c tableopts_opt_c99-Cm.opt.l tableopts_opt_c99-Cm.opt.tables tableopts_opt_c99-Cem.opt tableopts_opt_c99-Cem.opt.c tableopts_opt_c99-Cem.opt.l tableopts_opt_c99-Cem.opt.tables tableopts_opt_c99-Cae.opt tableopts_opt_c99-Cae.opt.c tableopts_opt_c99-Cae.opt.l tableopts_opt_c99-Cae.opt.tables tableopts_opt_c99-Caef.opt tableopts_opt_c99-Caef.opt.c tableopts_opt_c99-Caef.opt.l tableopts_opt_c99-Caef.opt.tables tableopts_opt_c99-CaexF.opt tableopts_opt_c99-CaexF.opt.c tableopts_opt_c99-CaexF.opt.l tableopts_opt_c99-CaexF.opt.tables tableopts_opt_c99-Cam.opt tableopts_opt_c99-Cam.opt.c tableopts_opt_c99-Cam.opt.l tableopts_opt_c99-Cam.opt.tables tableopts_opt_c99-Caem.opt tableopts_opt_c99-Caem.opt.c tableopts_opt_c99-Caem.opt.l tableopts_opt_c99-Caem.opt.tables tableopts_ser_c99-Ca.ser tableopts_ser_c99-Ca.ser.c tableopts_ser_c99-Ca.ser.l tableopts_ser_c99-Ca.ser.tables tableopts_ser_c99-Ce.ser tableopts_ser_c99-Ce.ser.c tableopts_ser_c99-Ce.ser.l tableopts_ser_c99-Ce.ser.tables tableopts_ser_c99-Cf.ser tableopts_ser_c99-Cf.ser.c tableopts_ser_c99-Cf.ser.l tableopts_ser_c99-Cf.ser.tables tableopts_ser_c99-CxF.ser tableopts_ser_c99-CxF.ser.c tableopts_ser_c99-CxF.ser.l tableopts_ser_c99-CxF.ser.tables tableopts_ser_c99-Cm.ser tableopts_ser_c99-Cm.ser.c tableopts_ser_c99-Cm.ser.l tableopts_ser_c99-Cm.ser.tables tableopts_ser_c99-Cem.ser tableopts_ser_c99-Cem.ser.c tableopts_ser_c99-Cem.ser.l tableopts_ser_c99-Cem.ser.tables tableopts_ser_c99-Cae.ser tableopts_ser_c99-Cae.ser.c tableopts_ser_c99-Cae.ser.l tableopts_ser_c99-Cae.ser.tables tableopts_ser_c99-Caef.ser tableopts_ser_c99-Caef.ser.c tableopts_ser_c99-Caef.ser.l tableopts_ser_c99-Caef.ser.tables tableopts_ser_c99-CaexF.ser tableopts_ser_c99-CaexF.ser.c tableopts_ser_c99-CaexF.ser.l tableopts_ser_c99-CaexF.ser.tables tableopts_ser_c99-Cam.ser tableopts_ser_c99-Cam.ser.c tableopts_ser_c99-Cam.ser.l tableopts_ser_c99-Cam.ser.tables tableopts_ser_c99-Caem.ser tableopts_ser_c99-Caem.ser.c tableopts_ser_c99-Caem.ser.l tableopts_ser_c99-Caem.ser.tables tableopts_ver_c99-Ca.ver tableopts_ver_c99-Ca.ver.c tableopts_ver_c99-Ca.ver.l tableopts_ver_c99-Ca.ver.tables tableopts_ver_c99-Ce.ver tableopts_ver_c99-Ce.ver.c tableopts_ver_c99-Ce.ver.l tableopts_ver_c99-Ce.ver.tables tableopts_ver_c99-Cf.ver tableopts_ver_c99-Cf.ver.c tableopts_ver_c99-Cf.ver.l tableopts_ver_c99-Cf.ver.tables tableopts_ver_c99-CxF.ver tableopts_ver_c99-CxF.ver.c tableopts_ver_c99-CxF.ver.l tableopts_ver_c99-CxF.ver.tables tableopts_ver_c99-Cm.ver tableopts_ver_c99-Cm.ver.c tableopts_ver_c99-Cm.ver.l tableopts_ver_c99-Cm.ver.tables tableopts_ver_c99-Cem.ver tableopts_ver_c99-Cem.ver.c tableopts_ver_c99-Cem.ver.l tableopts_ver_c99-Cem.ver.tables tableopts_ver_c99-Cae.ver tableopts_ver_c99-Cae.ver.c tableopts_ver_c99-Cae.ver.l tableopts_ver_c99-Cae.ver.tables tableopts_ver_c99-Caef.ver tableopts_ver_c99-Caef.ver.c tableopts_ver_c99-Caef.ver.l tableopts_ver_c99-Caef.ver.tables tableopts_ver_c99-CaexF.ver tableopts_ver_c99-CaexF.ver.c tableopts_ver_c99-CaexF.ver.l tableopts_ver_c99-CaexF.ver.tables tableopts_ver_c99-Cam.ver tableopts_ver_c99-Cam.ver.c tableopts_ver_c99-Cam.ver.l tableopts_ver_c99-Cam.ver.tables tableopts_ver_c99-Caem.ver tableopts_ver_c99-Caem.ver.c tableopts_ver_c99-Caem.ver.l tableopts_ver_c99-Caem.ver.tables test-yydecl-nr.sh test-yydecl-r.sh test-yydecl-c99.sh +RULESET_TESTS = array_nr basic_nr bol_nr ccl_nr extended_nr flexname_nr lexcompat_nr lineno_nr posixlycorrect_nr posix_nr preposix_nr quoteincomment_nr reject_nr tableopts_nr trailing_nr yyless_nr yymorearraybol_nr yymorearray_nr yymore_nr yyunput_nr tableopts_opt_nr-Ca.opt tableopts_opt_nr-Ce.opt tableopts_opt_nr-Cf.opt tableopts_opt_nr-CxF.opt tableopts_opt_nr-Cm.opt tableopts_opt_nr-Cem.opt tableopts_opt_nr-Cae.opt tableopts_opt_nr-Caef.opt tableopts_opt_nr-CaexF.opt tableopts_opt_nr-Cam.opt tableopts_opt_nr-Caem.opt tableopts_ser_nr-Ca.ser tableopts_ser_nr-Ce.ser tableopts_ser_nr-Cf.ser tableopts_ser_nr-CxF.ser tableopts_ser_nr-Cm.ser tableopts_ser_nr-Cem.ser tableopts_ser_nr-Cae.ser tableopts_ser_nr-Caef.ser tableopts_ser_nr-CaexF.ser tableopts_ser_nr-Cam.ser tableopts_ser_nr-Caem.ser tableopts_ver_nr-Ca.ver tableopts_ver_nr-Ce.ver tableopts_ver_nr-Cf.ver tableopts_ver_nr-CxF.ver tableopts_ver_nr-Cm.ver tableopts_ver_nr-Cem.ver tableopts_ver_nr-Cae.ver tableopts_ver_nr-Caef.ver tableopts_ver_nr-CaexF.ver tableopts_ver_nr-Cam.ver tableopts_ver_nr-Caem.ver array_r basic_r bol_r ccl_r extended_r flexname_r lineno_r posix_r preposix_r quoteincomment_r reject_r tableopts_r trailing_r yyless_r yymorearraybol_r yymorearray_r yymore_r yyunput_r tableopts_opt_r-Ca.opt tableopts_opt_r-Ce.opt tableopts_opt_r-Cf.opt tableopts_opt_r-CxF.opt tableopts_opt_r-Cm.opt tableopts_opt_r-Cem.opt tableopts_opt_r-Cae.opt tableopts_opt_r-Caef.opt tableopts_opt_r-CaexF.opt tableopts_opt_r-Cam.opt tableopts_opt_r-Caem.opt tableopts_ser_r-Ca.ser tableopts_ser_r-Ce.ser tableopts_ser_r-Cf.ser tableopts_ser_r-CxF.ser tableopts_ser_r-Cm.ser tableopts_ser_r-Cem.ser tableopts_ser_r-Cae.ser tableopts_ser_r-Caef.ser tableopts_ser_r-CaexF.ser tableopts_ser_r-Cam.ser tableopts_ser_r-Caem.ser tableopts_ver_r-Ca.ver tableopts_ver_r-Ce.ver tableopts_ver_r-Cf.ver tableopts_ver_r-CxF.ver tableopts_ver_r-Cm.ver tableopts_ver_r-Cem.ver tableopts_ver_r-Cae.ver tableopts_ver_r-Caef.ver tableopts_ver_r-CaexF.ver tableopts_ver_r-Cam.ver tableopts_ver_r-Caem.ver array_c99 basic_c99 bol_c99 ccl_c99 extended_c99 flexname_c99 lineno_c99 posix_c99 preposix_c99 quoteincomment_c99 reject_c99 tableopts_c99 trailing_c99 yyless_c99 yymorearraybol_c99 yymorearray_c99 yymore_c99 yyunput_c99 tableopts_opt_c99-Ca.opt tableopts_opt_c99-Ce.opt tableopts_opt_c99-Cf.opt tableopts_opt_c99-CxF.opt tableopts_opt_c99-Cm.opt tableopts_opt_c99-Cem.opt tableopts_opt_c99-Cae.opt tableopts_opt_c99-Caef.opt tableopts_opt_c99-CaexF.opt tableopts_opt_c99-Cam.opt tableopts_opt_c99-Caem.opt tableopts_ser_c99-Ca.ser tableopts_ser_c99-Ce.ser tableopts_ser_c99-Cf.ser tableopts_ser_c99-CxF.ser tableopts_ser_c99-Cm.ser tableopts_ser_c99-Cem.ser tableopts_ser_c99-Cae.ser tableopts_ser_c99-Caef.ser tableopts_ser_c99-CaexF.ser tableopts_ser_c99-Cam.ser tableopts_ser_c99-Caem.ser tableopts_ver_c99-Ca.ver tableopts_ver_c99-Ce.ver tableopts_ver_c99-Cf.ver tableopts_ver_c99-CxF.ver tableopts_ver_c99-Cm.ver tableopts_ver_c99-Cem.ver tableopts_ver_c99-Cae.ver tableopts_ver_c99-Caef.ver tableopts_ver_c99-CaexF.ver tableopts_ver_c99-Cam.ver tableopts_ver_c99-Caem.ver test-yydecl-nr.sh test-yydecl-r.sh test-yydecl-c99.sh +RULESET_REMOVABLES = array_nr array_nr.c array_nr.l array_nr.txt basic_nr basic_nr.c basic_nr.l basic_nr.txt bol_nr bol_nr.c bol_nr.l bol_nr.txt ccl_nr ccl_nr.c ccl_nr.l ccl_nr.txt extended_nr extended_nr.c extended_nr.l extended_nr.txt flexname_nr flexname_nr.c flexname_nr.l flexname_nr.txt lexcompat_nr lexcompat_nr.c lexcompat_nr.l lexcompat_nr.txt lineno_nr lineno_nr.c lineno_nr.l lineno_nr.txt posixlycorrect_nr posixlycorrect_nr.c posixlycorrect_nr.l posixlycorrect_nr.txt posix_nr posix_nr.c posix_nr.l posix_nr.txt preposix_nr preposix_nr.c preposix_nr.l preposix_nr.txt quoteincomment_nr quoteincomment_nr.c quoteincomment_nr.l quoteincomment_nr.txt reject_nr reject_nr.c reject_nr.l reject_nr.txt tableopts_nr tableopts_nr.c tableopts_nr.l tableopts_nr.txt trailing_nr trailing_nr.c trailing_nr.l trailing_nr.txt yyless_nr yyless_nr.c yyless_nr.l yyless_nr.txt yymorearraybol_nr yymorearraybol_nr.c yymorearraybol_nr.l yymorearraybol_nr.txt yymorearray_nr yymorearray_nr.c yymorearray_nr.l yymorearray_nr.txt yymore_nr yymore_nr.c yymore_nr.l yymore_nr.txt yyunput_nr yyunput_nr.c yyunput_nr.l yyunput_nr.txt tableopts_opt_nr-Ca.opt tableopts_opt_nr-Ca.opt.c tableopts_opt_nr-Ca.opt.l tableopts_opt_nr-Ca.opt.tables tableopts_opt_nr-Ce.opt tableopts_opt_nr-Ce.opt.c tableopts_opt_nr-Ce.opt.l tableopts_opt_nr-Ce.opt.tables tableopts_opt_nr-Cf.opt tableopts_opt_nr-Cf.opt.c tableopts_opt_nr-Cf.opt.l tableopts_opt_nr-Cf.opt.tables tableopts_opt_nr-CxF.opt tableopts_opt_nr-CxF.opt.c tableopts_opt_nr-CxF.opt.l tableopts_opt_nr-CxF.opt.tables tableopts_opt_nr-Cm.opt tableopts_opt_nr-Cm.opt.c tableopts_opt_nr-Cm.opt.l tableopts_opt_nr-Cm.opt.tables tableopts_opt_nr-Cem.opt tableopts_opt_nr-Cem.opt.c tableopts_opt_nr-Cem.opt.l tableopts_opt_nr-Cem.opt.tables tableopts_opt_nr-Cae.opt tableopts_opt_nr-Cae.opt.c tableopts_opt_nr-Cae.opt.l tableopts_opt_nr-Cae.opt.tables tableopts_opt_nr-Caef.opt tableopts_opt_nr-Caef.opt.c tableopts_opt_nr-Caef.opt.l tableopts_opt_nr-Caef.opt.tables tableopts_opt_nr-CaexF.opt tableopts_opt_nr-CaexF.opt.c tableopts_opt_nr-CaexF.opt.l tableopts_opt_nr-CaexF.opt.tables tableopts_opt_nr-Cam.opt tableopts_opt_nr-Cam.opt.c tableopts_opt_nr-Cam.opt.l tableopts_opt_nr-Cam.opt.tables tableopts_opt_nr-Caem.opt tableopts_opt_nr-Caem.opt.c tableopts_opt_nr-Caem.opt.l tableopts_opt_nr-Caem.opt.tables tableopts_ser_nr-Ca.ser tableopts_ser_nr-Ca.ser.c tableopts_ser_nr-Ca.ser.l tableopts_ser_nr-Ca.ser.tables tableopts_ser_nr-Ce.ser tableopts_ser_nr-Ce.ser.c tableopts_ser_nr-Ce.ser.l tableopts_ser_nr-Ce.ser.tables tableopts_ser_nr-Cf.ser tableopts_ser_nr-Cf.ser.c tableopts_ser_nr-Cf.ser.l tableopts_ser_nr-Cf.ser.tables tableopts_ser_nr-CxF.ser tableopts_ser_nr-CxF.ser.c tableopts_ser_nr-CxF.ser.l tableopts_ser_nr-CxF.ser.tables tableopts_ser_nr-Cm.ser tableopts_ser_nr-Cm.ser.c tableopts_ser_nr-Cm.ser.l tableopts_ser_nr-Cm.ser.tables tableopts_ser_nr-Cem.ser tableopts_ser_nr-Cem.ser.c tableopts_ser_nr-Cem.ser.l tableopts_ser_nr-Cem.ser.tables tableopts_ser_nr-Cae.ser tableopts_ser_nr-Cae.ser.c tableopts_ser_nr-Cae.ser.l tableopts_ser_nr-Cae.ser.tables tableopts_ser_nr-Caef.ser tableopts_ser_nr-Caef.ser.c tableopts_ser_nr-Caef.ser.l tableopts_ser_nr-Caef.ser.tables tableopts_ser_nr-CaexF.ser tableopts_ser_nr-CaexF.ser.c tableopts_ser_nr-CaexF.ser.l tableopts_ser_nr-CaexF.ser.tables tableopts_ser_nr-Cam.ser tableopts_ser_nr-Cam.ser.c tableopts_ser_nr-Cam.ser.l tableopts_ser_nr-Cam.ser.tables tableopts_ser_nr-Caem.ser tableopts_ser_nr-Caem.ser.c tableopts_ser_nr-Caem.ser.l tableopts_ser_nr-Caem.ser.tables tableopts_ver_nr-Ca.ver tableopts_ver_nr-Ca.ver.c tableopts_ver_nr-Ca.ver.l tableopts_ver_nr-Ca.ver.tables tableopts_ver_nr-Ce.ver tableopts_ver_nr-Ce.ver.c tableopts_ver_nr-Ce.ver.l tableopts_ver_nr-Ce.ver.tables tableopts_ver_nr-Cf.ver tableopts_ver_nr-Cf.ver.c tableopts_ver_nr-Cf.ver.l tableopts_ver_nr-Cf.ver.tables tableopts_ver_nr-CxF.ver tableopts_ver_nr-CxF.ver.c tableopts_ver_nr-CxF.ver.l tableopts_ver_nr-CxF.ver.tables tableopts_ver_nr-Cm.ver tableopts_ver_nr-Cm.ver.c tableopts_ver_nr-Cm.ver.l tableopts_ver_nr-Cm.ver.tables tableopts_ver_nr-Cem.ver tableopts_ver_nr-Cem.ver.c tableopts_ver_nr-Cem.ver.l tableopts_ver_nr-Cem.ver.tables tableopts_ver_nr-Cae.ver tableopts_ver_nr-Cae.ver.c tableopts_ver_nr-Cae.ver.l tableopts_ver_nr-Cae.ver.tables tableopts_ver_nr-Caef.ver tableopts_ver_nr-Caef.ver.c tableopts_ver_nr-Caef.ver.l tableopts_ver_nr-Caef.ver.tables tableopts_ver_nr-CaexF.ver tableopts_ver_nr-CaexF.ver.c tableopts_ver_nr-CaexF.ver.l tableopts_ver_nr-CaexF.ver.tables tableopts_ver_nr-Cam.ver tableopts_ver_nr-Cam.ver.c tableopts_ver_nr-Cam.ver.l tableopts_ver_nr-Cam.ver.tables tableopts_ver_nr-Caem.ver tableopts_ver_nr-Caem.ver.c tableopts_ver_nr-Caem.ver.l tableopts_ver_nr-Caem.ver.tables array_r array_r.c array_r.l array_r.txt basic_r basic_r.c basic_r.l basic_r.txt bol_r bol_r.c bol_r.l bol_r.txt ccl_r ccl_r.c ccl_r.l ccl_r.txt extended_r extended_r.c extended_r.l extended_r.txt flexname_r flexname_r.c flexname_r.l flexname_r.txt lineno_r lineno_r.c lineno_r.l lineno_r.txt posix_r posix_r.c posix_r.l posix_r.txt preposix_r preposix_r.c preposix_r.l preposix_r.txt quoteincomment_r quoteincomment_r.c quoteincomment_r.l quoteincomment_r.txt reject_r reject_r.c reject_r.l reject_r.txt tableopts_r tableopts_r.c tableopts_r.l tableopts_r.txt trailing_r trailing_r.c trailing_r.l trailing_r.txt yyless_r yyless_r.c yyless_r.l yyless_r.txt yymorearraybol_r yymorearraybol_r.c yymorearraybol_r.l yymorearraybol_r.txt yymorearray_r yymorearray_r.c yymorearray_r.l yymorearray_r.txt yymore_r yymore_r.c yymore_r.l yymore_r.txt yyunput_r yyunput_r.c yyunput_r.l yyunput_r.txt tableopts_opt_r-Ca.opt tableopts_opt_r-Ca.opt.c tableopts_opt_r-Ca.opt.l tableopts_opt_r-Ca.opt.tables tableopts_opt_r-Ce.opt tableopts_opt_r-Ce.opt.c tableopts_opt_r-Ce.opt.l tableopts_opt_r-Ce.opt.tables tableopts_opt_r-Cf.opt tableopts_opt_r-Cf.opt.c tableopts_opt_r-Cf.opt.l tableopts_opt_r-Cf.opt.tables tableopts_opt_r-CxF.opt tableopts_opt_r-CxF.opt.c tableopts_opt_r-CxF.opt.l tableopts_opt_r-CxF.opt.tables tableopts_opt_r-Cm.opt tableopts_opt_r-Cm.opt.c tableopts_opt_r-Cm.opt.l tableopts_opt_r-Cm.opt.tables tableopts_opt_r-Cem.opt tableopts_opt_r-Cem.opt.c tableopts_opt_r-Cem.opt.l tableopts_opt_r-Cem.opt.tables tableopts_opt_r-Cae.opt tableopts_opt_r-Cae.opt.c tableopts_opt_r-Cae.opt.l tableopts_opt_r-Cae.opt.tables tableopts_opt_r-Caef.opt tableopts_opt_r-Caef.opt.c tableopts_opt_r-Caef.opt.l tableopts_opt_r-Caef.opt.tables tableopts_opt_r-CaexF.opt tableopts_opt_r-CaexF.opt.c tableopts_opt_r-CaexF.opt.l tableopts_opt_r-CaexF.opt.tables tableopts_opt_r-Cam.opt tableopts_opt_r-Cam.opt.c tableopts_opt_r-Cam.opt.l tableopts_opt_r-Cam.opt.tables tableopts_opt_r-Caem.opt tableopts_opt_r-Caem.opt.c tableopts_opt_r-Caem.opt.l tableopts_opt_r-Caem.opt.tables tableopts_ser_r-Ca.ser tableopts_ser_r-Ca.ser.c tableopts_ser_r-Ca.ser.l tableopts_ser_r-Ca.ser.tables tableopts_ser_r-Ce.ser tableopts_ser_r-Ce.ser.c tableopts_ser_r-Ce.ser.l tableopts_ser_r-Ce.ser.tables tableopts_ser_r-Cf.ser tableopts_ser_r-Cf.ser.c tableopts_ser_r-Cf.ser.l tableopts_ser_r-Cf.ser.tables tableopts_ser_r-CxF.ser tableopts_ser_r-CxF.ser.c tableopts_ser_r-CxF.ser.l tableopts_ser_r-CxF.ser.tables tableopts_ser_r-Cm.ser tableopts_ser_r-Cm.ser.c tableopts_ser_r-Cm.ser.l tableopts_ser_r-Cm.ser.tables tableopts_ser_r-Cem.ser tableopts_ser_r-Cem.ser.c tableopts_ser_r-Cem.ser.l tableopts_ser_r-Cem.ser.tables tableopts_ser_r-Cae.ser tableopts_ser_r-Cae.ser.c tableopts_ser_r-Cae.ser.l tableopts_ser_r-Cae.ser.tables tableopts_ser_r-Caef.ser tableopts_ser_r-Caef.ser.c tableopts_ser_r-Caef.ser.l tableopts_ser_r-Caef.ser.tables tableopts_ser_r-CaexF.ser tableopts_ser_r-CaexF.ser.c tableopts_ser_r-CaexF.ser.l tableopts_ser_r-CaexF.ser.tables tableopts_ser_r-Cam.ser tableopts_ser_r-Cam.ser.c tableopts_ser_r-Cam.ser.l tableopts_ser_r-Cam.ser.tables tableopts_ser_r-Caem.ser tableopts_ser_r-Caem.ser.c tableopts_ser_r-Caem.ser.l tableopts_ser_r-Caem.ser.tables tableopts_ver_r-Ca.ver tableopts_ver_r-Ca.ver.c tableopts_ver_r-Ca.ver.l tableopts_ver_r-Ca.ver.tables tableopts_ver_r-Ce.ver tableopts_ver_r-Ce.ver.c tableopts_ver_r-Ce.ver.l tableopts_ver_r-Ce.ver.tables tableopts_ver_r-Cf.ver tableopts_ver_r-Cf.ver.c tableopts_ver_r-Cf.ver.l tableopts_ver_r-Cf.ver.tables tableopts_ver_r-CxF.ver tableopts_ver_r-CxF.ver.c tableopts_ver_r-CxF.ver.l tableopts_ver_r-CxF.ver.tables tableopts_ver_r-Cm.ver tableopts_ver_r-Cm.ver.c tableopts_ver_r-Cm.ver.l tableopts_ver_r-Cm.ver.tables tableopts_ver_r-Cem.ver tableopts_ver_r-Cem.ver.c tableopts_ver_r-Cem.ver.l tableopts_ver_r-Cem.ver.tables tableopts_ver_r-Cae.ver tableopts_ver_r-Cae.ver.c tableopts_ver_r-Cae.ver.l tableopts_ver_r-Cae.ver.tables tableopts_ver_r-Caef.ver tableopts_ver_r-Caef.ver.c tableopts_ver_r-Caef.ver.l tableopts_ver_r-Caef.ver.tables tableopts_ver_r-CaexF.ver tableopts_ver_r-CaexF.ver.c tableopts_ver_r-CaexF.ver.l tableopts_ver_r-CaexF.ver.tables tableopts_ver_r-Cam.ver tableopts_ver_r-Cam.ver.c tableopts_ver_r-Cam.ver.l tableopts_ver_r-Cam.ver.tables tableopts_ver_r-Caem.ver tableopts_ver_r-Caem.ver.c tableopts_ver_r-Caem.ver.l tableopts_ver_r-Caem.ver.tables array_c99 array_c99.c array_c99.l array_c99.txt basic_c99 basic_c99.c basic_c99.l basic_c99.txt bol_c99 bol_c99.c bol_c99.l bol_c99.txt ccl_c99 ccl_c99.c ccl_c99.l ccl_c99.txt extended_c99 extended_c99.c extended_c99.l extended_c99.txt flexname_c99 flexname_c99.c flexname_c99.l flexname_c99.txt lineno_c99 lineno_c99.c lineno_c99.l lineno_c99.txt posix_c99 posix_c99.c posix_c99.l posix_c99.txt preposix_c99 preposix_c99.c preposix_c99.l preposix_c99.txt quoteincomment_c99 quoteincomment_c99.c quoteincomment_c99.l quoteincomment_c99.txt reject_c99 reject_c99.c reject_c99.l reject_c99.txt tableopts_c99 tableopts_c99.c tableopts_c99.l tableopts_c99.txt trailing_c99 trailing_c99.c trailing_c99.l trailing_c99.txt yyless_c99 yyless_c99.c yyless_c99.l yyless_c99.txt yymorearraybol_c99 yymorearraybol_c99.c yymorearraybol_c99.l yymorearraybol_c99.txt yymorearray_c99 yymorearray_c99.c yymorearray_c99.l yymorearray_c99.txt yymore_c99 yymore_c99.c yymore_c99.l yymore_c99.txt yyunput_c99 yyunput_c99.c yyunput_c99.l yyunput_c99.txt tableopts_opt_c99-Ca.opt tableopts_opt_c99-Ca.opt.c tableopts_opt_c99-Ca.opt.l tableopts_opt_c99-Ca.opt.tables tableopts_opt_c99-Ce.opt tableopts_opt_c99-Ce.opt.c tableopts_opt_c99-Ce.opt.l tableopts_opt_c99-Ce.opt.tables tableopts_opt_c99-Cf.opt tableopts_opt_c99-Cf.opt.c tableopts_opt_c99-Cf.opt.l tableopts_opt_c99-Cf.opt.tables tableopts_opt_c99-CxF.opt tableopts_opt_c99-CxF.opt.c tableopts_opt_c99-CxF.opt.l tableopts_opt_c99-CxF.opt.tables tableopts_opt_c99-Cm.opt tableopts_opt_c99-Cm.opt.c tableopts_opt_c99-Cm.opt.l tableopts_opt_c99-Cm.opt.tables tableopts_opt_c99-Cem.opt tableopts_opt_c99-Cem.opt.c tableopts_opt_c99-Cem.opt.l tableopts_opt_c99-Cem.opt.tables tableopts_opt_c99-Cae.opt tableopts_opt_c99-Cae.opt.c tableopts_opt_c99-Cae.opt.l tableopts_opt_c99-Cae.opt.tables tableopts_opt_c99-Caef.opt tableopts_opt_c99-Caef.opt.c tableopts_opt_c99-Caef.opt.l tableopts_opt_c99-Caef.opt.tables tableopts_opt_c99-CaexF.opt tableopts_opt_c99-CaexF.opt.c tableopts_opt_c99-CaexF.opt.l tableopts_opt_c99-CaexF.opt.tables tableopts_opt_c99-Cam.opt tableopts_opt_c99-Cam.opt.c tableopts_opt_c99-Cam.opt.l tableopts_opt_c99-Cam.opt.tables tableopts_opt_c99-Caem.opt tableopts_opt_c99-Caem.opt.c tableopts_opt_c99-Caem.opt.l tableopts_opt_c99-Caem.opt.tables tableopts_ser_c99-Ca.ser tableopts_ser_c99-Ca.ser.c tableopts_ser_c99-Ca.ser.l tableopts_ser_c99-Ca.ser.tables tableopts_ser_c99-Ce.ser tableopts_ser_c99-Ce.ser.c tableopts_ser_c99-Ce.ser.l tableopts_ser_c99-Ce.ser.tables tableopts_ser_c99-Cf.ser tableopts_ser_c99-Cf.ser.c tableopts_ser_c99-Cf.ser.l tableopts_ser_c99-Cf.ser.tables tableopts_ser_c99-CxF.ser tableopts_ser_c99-CxF.ser.c tableopts_ser_c99-CxF.ser.l tableopts_ser_c99-CxF.ser.tables tableopts_ser_c99-Cm.ser tableopts_ser_c99-Cm.ser.c tableopts_ser_c99-Cm.ser.l tableopts_ser_c99-Cm.ser.tables tableopts_ser_c99-Cem.ser tableopts_ser_c99-Cem.ser.c tableopts_ser_c99-Cem.ser.l tableopts_ser_c99-Cem.ser.tables tableopts_ser_c99-Cae.ser tableopts_ser_c99-Cae.ser.c tableopts_ser_c99-Cae.ser.l tableopts_ser_c99-Cae.ser.tables tableopts_ser_c99-Caef.ser tableopts_ser_c99-Caef.ser.c tableopts_ser_c99-Caef.ser.l tableopts_ser_c99-Caef.ser.tables tableopts_ser_c99-CaexF.ser tableopts_ser_c99-CaexF.ser.c tableopts_ser_c99-CaexF.ser.l tableopts_ser_c99-CaexF.ser.tables tableopts_ser_c99-Cam.ser tableopts_ser_c99-Cam.ser.c tableopts_ser_c99-Cam.ser.l tableopts_ser_c99-Cam.ser.tables tableopts_ser_c99-Caem.ser tableopts_ser_c99-Caem.ser.c tableopts_ser_c99-Caem.ser.l tableopts_ser_c99-Caem.ser.tables tableopts_ver_c99-Ca.ver tableopts_ver_c99-Ca.ver.c tableopts_ver_c99-Ca.ver.l tableopts_ver_c99-Ca.ver.tables tableopts_ver_c99-Ce.ver tableopts_ver_c99-Ce.ver.c tableopts_ver_c99-Ce.ver.l tableopts_ver_c99-Ce.ver.tables tableopts_ver_c99-Cf.ver tableopts_ver_c99-Cf.ver.c tableopts_ver_c99-Cf.ver.l tableopts_ver_c99-Cf.ver.tables tableopts_ver_c99-CxF.ver tableopts_ver_c99-CxF.ver.c tableopts_ver_c99-CxF.ver.l tableopts_ver_c99-CxF.ver.tables tableopts_ver_c99-Cm.ver tableopts_ver_c99-Cm.ver.c tableopts_ver_c99-Cm.ver.l tableopts_ver_c99-Cm.ver.tables tableopts_ver_c99-Cem.ver tableopts_ver_c99-Cem.ver.c tableopts_ver_c99-Cem.ver.l tableopts_ver_c99-Cem.ver.tables tableopts_ver_c99-Cae.ver tableopts_ver_c99-Cae.ver.c tableopts_ver_c99-Cae.ver.l tableopts_ver_c99-Cae.ver.tables tableopts_ver_c99-Caef.ver tableopts_ver_c99-Caef.ver.c tableopts_ver_c99-Caef.ver.l tableopts_ver_c99-Caef.ver.tables tableopts_ver_c99-CaexF.ver tableopts_ver_c99-CaexF.ver.c tableopts_ver_c99-CaexF.ver.l tableopts_ver_c99-CaexF.ver.tables tableopts_ver_c99-Cam.ver tableopts_ver_c99-Cam.ver.c tableopts_ver_c99-Cam.ver.l tableopts_ver_c99-Cam.ver.tables tableopts_ver_c99-Caem.ver tableopts_ver_c99-Caem.ver.c tableopts_ver_c99-Caem.ver.l tableopts_ver_c99-Caem.ver.tables test-yydecl-nr.sh test-yydecl-r.sh test-yydecl-c99.sh diff --git a/tests/yymore.rules b/tests/yymore.rules index 17600e5..50c0b87 100644 --- a/tests/yymore.rules +++ b/tests/yymore.rules @@ -21,9 +21,10 @@ * PURPOSE. */ /* - * Test yymore. What should haooen is: + * Test yymore with default pointer buffer. What should happen is: * 1. "foo" is matched by the first rule but not consumed. * 2. "bar" is matched, but the token length is 6 rather than 3. + * We use a ^ to force the extra code for BOL checking. */ %option nounput noyywrap noyylineno warn noinput @@ -31,4 +32,4 @@ foo {M4_TEST_DO(yymore())} bar {M4_TEST_ASSERT(yyleng == 6)} ### -foobar +^foobar diff --git a/tests/yymorearray.rules b/tests/yymorearray.rules new file mode 100644 index 0000000..270ff33 --- /dev/null +++ b/tests/yymorearray.rules @@ -0,0 +1,36 @@ +/* + * This file is part of flex. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + /* + * Test yymore with array buffer representation. What should happen is: + * 1. "foo" is matched by the first rule but not consumed. + * 2. "bar" is matched, but the token length is 6 rather than 3. + * Also see the yymorearraybol ruleset. + */ + +%array +%option nounput noyywrap noyylineno warn noinput +%% +foo {M4_TEST_DO(yymore())} +bar {M4_TEST_ASSERT(yyleng == 6)} +### +foobar diff --git a/tests/yymorearraybol.rules b/tests/yymorearraybol.rules new file mode 100644 index 0000000..80f6b8e --- /dev/null +++ b/tests/yymorearraybol.rules @@ -0,0 +1,39 @@ +%{ +#include <stdio.h> +%} +/* + * This file is part of flex. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED AS IS AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + /* + * Test yymore with array buffer representation. What should happen is: + * 1. "foo" is matched by the first rule but not consumed. + * 2. "bar" is matched, but the token length is 6 rather than 3. + * We use a ^ to force the extra code for BOL checking. + */ + +%array +%option nounput noyywrap noyylineno warn noinput +%% +^foo {yymore();} +bar {if (!(yyleng == 6)) {fprintf(stderr,"ASSERT FAILED.\n"); exit(1);}} +### +foobar |