diff --git a/tests/local.at b/tests/local.at index 8cce20b7..976d9caa 100644 --- a/tests/local.at +++ b/tests/local.at @@ -1353,6 +1353,29 @@ m4_popdef([AT_COND_CASE])]) +# AT_SETS_CHECK(INPUT, SETS, EXPECTED) +# ------------------------------------ +# Extract the information about the grammar sets from a bison +# trace output (INPUT), and compare to EXPECTED. +# +# And remember, there is no alternation in portable sed. +m4_define([AT_SETS_CHECK], +[AT_DATA([extract.sed], +[[#n +]m4_foreach([m4_Set], [$2], [[ +/^]m4_Set[/ { + :]m4_Set[ + p + n + /^ *$/ !b ]m4_Set[ +} +]])]) + +AT_CHECK([sed -f extract.sed $1], 0, [$3]) +]) + + + ## ----------------------- ## ## Launch the test suite. ## diff --git a/tests/sets.at b/tests/sets.at index 2c173673..5dbc50dc 100644 --- a/tests/sets.at +++ b/tests/sets.at @@ -17,45 +17,6 @@ # along with this program. If not, see . -# AT_EXTRACT_SETS(INPUT, OUTPUT) -# ------------------------------ -# Extract the information about the grammar sets from a bison -# trace output (INPUT), and save it in OUTPUT. -# And remember, there is no alternation in portable sed. -m4_define([AT_EXTRACT_SETS], -[AT_DATA([extract.sed], -[[#n -/^NULLABLE$/ { - :null - p - n - /^ *$/ !b null -} -/^FIRSTS$/ { - :firsts - p - n - /^ *$/ !b firsts -} -/^FDERIVES$/ { - :fderiv - p - n - /^ *$/ !b fderiv -} -/^DERIVES$/ { - :deriv - p - n - /^ *$/ !b deriv -} -]]) -AT_CHECK([sed -f extract.sed $1], 0, [stdout]) -AT_CHECK([mv stdout $2]) -]) - - - AT_BANNER([[Grammar Sets (Firsts etc.).]]) @@ -79,8 +40,7 @@ e: 'e' | /* Nothing */; ]]) AT_BISON_CHECK([[--trace=sets input.y]], [], [], [stderr]) -AT_EXTRACT_SETS([stderr], [sets]) -AT_CHECK([[cat sets]], [], +AT_SETS_CHECK([stderr], [[DERIVES], [NULLABLE], [FIRSTS], [FDERIVES]], [[DERIVES $accept derives 0 e $end @@ -209,8 +169,7 @@ exp: ]]) AT_BISON_CHECK([[--trace=sets input.y]], [], [], [stderr]) -AT_EXTRACT_SETS([stderr], [sets]) -AT_CHECK([[cat sets]], [], +AT_SETS_CHECK([stderr], [[DERIVES], [NULLABLE], [FIRSTS], [FDERIVES]], [[DERIVES $accept derives 0 exp $end