Commit 9af70013 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

autfilt: swap transformation and filtering --help

It makes more sense to keep the transformationn options near the
simplification options.

* bin/autfilt.cc: Reorder --help.
parent b6cd54ab
...@@ -139,7 +139,83 @@ static const argp_option options[] = ...@@ -139,7 +139,83 @@ static const argp_option options[] =
{ "count", 'c', nullptr, 0, "print only a count of matched automata", 3 }, { "count", 'c', nullptr, 0, "print only a count of matched automata", 3 },
{ "max-count", 'n', "NUM", 0, "output at most NUM automata", 3 }, { "max-count", 'n', "NUM", 0, "output at most NUM automata", 3 },
/**************************************************/ /**************************************************/
{ nullptr, 0, nullptr, 0, "Transformations:", 5 }, { nullptr, 0, nullptr, 0, "Filtering options:", 5 },
{ "ap", OPT_AP_N, "RANGE", 0,
"match automata with a number of (declared) atomic propositions in RANGE",
0 },
{ "used-ap", OPT_USED_AP_N, "RANGE", 0,
"match automata with a number of used atomic propositions in RANGE", 0 },
{ "unused-ap", OPT_UNUSED_AP_N, "RANGE", 0,
"match automata with a number of declared, but unused atomic "
"propositions in RANGE", 0 },
{ "are-isomorphic", OPT_ARE_ISOMORPHIC, "FILENAME", 0,
"keep automata that are isomorphic to the automaton in FILENAME", 0 },
{ "isomorphic", 0, nullptr, OPTION_ALIAS | OPTION_HIDDEN, nullptr, 0 },
{ "unique", 'u', nullptr, 0,
"do not output the same automaton twice (same in the sense that they "\
"are isomorphic)", 0 },
{ "is-complete", OPT_IS_COMPLETE, nullptr, 0,
"keep complete automata", 0 },
{ "is-deterministic", OPT_IS_DETERMINISTIC, nullptr, 0,
"keep deterministic automata", 0 },
{ "is-empty", OPT_IS_EMPTY, nullptr, 0,
"keep automata with an empty language", 0 },
{ "is-unambiguous", OPT_IS_UNAMBIGUOUS, nullptr, 0,
"keep only unambiguous automata", 0 },
{ "is-terminal", OPT_IS_TERMINAL, nullptr, 0,
"keep only terminal automata", 0 },
{ "is-weak", OPT_IS_WEAK, nullptr, 0,
"keep only weak automata", 0 },
{ "is-inherently-weak", OPT_IS_INHERENTLY_WEAK, nullptr, 0,
"keep only inherently weak automata", 0 },
{ "intersect", OPT_INTERSECT, "FILENAME", 0,
"keep automata whose languages have an non-empty intersection with"
" the automaton from FILENAME", 0 },
{ "included-in", OPT_INCLUDED_IN, "FILENAME", 0,
"keep automata whose languages are included in that of the "
"automaton from FILENAME", 0 },
{ "equivalent-to", OPT_EQUIVALENT_TO, "FILENAME", 0,
"keep automata thare are equivalent (language-wise) to the automaton "
"in FILENAME", 0 },
{ "invert-match", 'v', nullptr, 0, "select non-matching automata", 0 },
{ "states", OPT_STATES, "RANGE", 0,
"keep automata whose number of states is in RANGE", 0 },
{ "edges", OPT_EDGES, "RANGE", 0,
"keep automata whose number of edges is in RANGE", 0 },
{ "acc-sets", OPT_ACC_SETS, "RANGE", 0,
"keep automata whose number of acceptance sets is in RANGE", 0 },
{ "sccs", OPT_SCCS, "RANGE", 0,
"keep automata whose number of SCCs is in RANGE", 0 },
{ "acc-sccs", OPT_ACC_SCCS, "RANGE", 0,
"keep automata whose number of non-trivial accepting SCCs is in RANGE",
0 },
{ "accepting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
{ "rej-sccs", OPT_REJ_SCCS, "RANGE", 0,
"keep automata whose number of non-trivial rejecting SCCs is in RANGE",
0 },
{ "rejecting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
{ "triv-sccs", OPT_TRIV_SCCS, "RANGE", 0,
"keep automata whose number of trivial SCCs is in RANGE", 0 },
{ "trivial-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
{ "inherently-weak-sccs", OPT_INHERENTLY_WEAK_SCCS, "RANGE", 0,
"keep automata whose number of accepting inherently-weak SCCs is in "
"RANGE. An accepting SCC is inherently weak if it does not have a "
"rejecting cycle.", 0 },
{ "weak-sccs", OPT_WEAK_SCCS, "RANGE", 0,
"keep automata whose number of accepting weak SCCs is in RANGE. "
"In a weak SCC, all transitions belong to the same acceptance sets.", 0 },
{ "terminal-sccs", OPT_TERMINAL_SCCS, "RANGE", 0,
"keep automata whose number of accepting terminal SCCs is in RANGE. "
"Terminal SCCs are weak and complete.", 0 },
{ "accept-word", OPT_ACCEPT_WORD, "WORD", 0,
"keep automata that accept WORD", 0 },
{ "reject-word", OPT_REJECT_WORD, "WORD", 0,
"keep automata that reject WORD", 0 },
/**************************************************/
RANGE_DOC_FULL,
WORD_DOC,
/**************************************************/
{ nullptr, 0, nullptr, 0, "Transformations:", 7 },
{ "merge-transitions", OPT_MERGE, nullptr, 0, { "merge-transitions", OPT_MERGE, nullptr, 0,
"merge transitions with same destination and acceptance", 0 }, "merge transitions with same destination and acceptance", 0 },
{ "product", OPT_PRODUCT_AND, "FILENAME", 0, { "product", OPT_PRODUCT_AND, "FILENAME", 0,
...@@ -213,82 +289,7 @@ static const argp_option options[] = ...@@ -213,82 +289,7 @@ static const argp_option options[] =
{ "highlight-nondet", OPT_HIGHLIGHT_NONDET, "NUM", { "highlight-nondet", OPT_HIGHLIGHT_NONDET, "NUM",
OPTION_ARG_OPTIONAL, OPTION_ARG_OPTIONAL,
"highlight nondeterministic states and edges with color NUM", 0}, "highlight nondeterministic states and edges with color NUM", 0},
/**************************************************/ /**************************************************/
{ nullptr, 0, nullptr, 0, "Filtering options:", 6 },
{ "ap", OPT_AP_N, "RANGE", 0,
"match automata with a number of (declared) atomic propositions in RANGE",
0 },
{ "used-ap", OPT_USED_AP_N, "RANGE", 0,
"match automata with a number of used atomic propositions in RANGE", 0 },
{ "unused-ap", OPT_UNUSED_AP_N, "RANGE", 0,
"match automata with a number of declared, but unused atomic "
"propositions in RANGE", 0 },
{ "are-isomorphic", OPT_ARE_ISOMORPHIC, "FILENAME", 0,
"keep automata that are isomorphic to the automaton in FILENAME", 0 },
{ "isomorphic", 0, nullptr, OPTION_ALIAS | OPTION_HIDDEN, nullptr, 0 },
{ "unique", 'u', nullptr, 0,
"do not output the same automaton twice (same in the sense that they "\
"are isomorphic)", 0 },
{ "is-complete", OPT_IS_COMPLETE, nullptr, 0,
"keep complete automata", 0 },
{ "is-deterministic", OPT_IS_DETERMINISTIC, nullptr, 0,
"keep deterministic automata", 0 },
{ "is-empty", OPT_IS_EMPTY, nullptr, 0,
"keep automata with an empty language", 0 },
{ "is-unambiguous", OPT_IS_UNAMBIGUOUS, nullptr, 0,
"keep only unambiguous automata", 0 },
{ "is-terminal", OPT_IS_TERMINAL, nullptr, 0,
"keep only terminal automata", 0 },
{ "is-weak", OPT_IS_WEAK, nullptr, 0,
"keep only weak automata", 0 },
{ "is-inherently-weak", OPT_IS_INHERENTLY_WEAK, nullptr, 0,
"keep only inherently weak automata", 0 },
{ "intersect", OPT_INTERSECT, "FILENAME", 0,
"keep automata whose languages have an non-empty intersection with"
" the automaton from FILENAME", 0 },
{ "included-in", OPT_INCLUDED_IN, "FILENAME", 0,
"keep automata whose languages are included in that of the "
"automaton from FILENAME", 0 },
{ "equivalent-to", OPT_EQUIVALENT_TO, "FILENAME", 0,
"keep automata thare are equivalent (language-wise) to the automaton "
"in FILENAME", 0 },
{ "invert-match", 'v', nullptr, 0, "select non-matching automata", 0 },
{ "states", OPT_STATES, "RANGE", 0,
"keep automata whose number of states is in RANGE", 0 },
{ "edges", OPT_EDGES, "RANGE", 0,
"keep automata whose number of edges is in RANGE", 0 },
{ "acc-sets", OPT_ACC_SETS, "RANGE", 0,
"keep automata whose number of acceptance sets is in RANGE", 0 },
{ "sccs", OPT_SCCS, "RANGE", 0,
"keep automata whose number of SCCs is in RANGE", 0 },
{ "acc-sccs", OPT_ACC_SCCS, "RANGE", 0,
"keep automata whose number of non-trivial accepting SCCs is in RANGE",
0 },
{ "accepting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
{ "rej-sccs", OPT_REJ_SCCS, "RANGE", 0,
"keep automata whose number of non-trivial rejecting SCCs is in RANGE",
0 },
{ "rejecting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
{ "triv-sccs", OPT_TRIV_SCCS, "RANGE", 0,
"keep automata whose number of trivial SCCs is in RANGE", 0 },
{ "trivial-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
{ "inherently-weak-sccs", OPT_INHERENTLY_WEAK_SCCS, "RANGE", 0,
"keep automata whose number of accepting inherently-weak SCCs is in "
"RANGE. An accepting SCC is inherently weak if it does not have a "
"rejecting cycle.", 0 },
{ "weak-sccs", OPT_WEAK_SCCS, "RANGE", 0,
"keep automata whose number of accepting weak SCCs is in RANGE. "
"In a weak SCC, all transitions belong to the same acceptance sets.", 0 },
{ "terminal-sccs", OPT_TERMINAL_SCCS, "RANGE", 0,
"keep automata whose number of accepting terminal SCCs is in RANGE. "
"Terminal SCCs are weak and complete.", 0 },
{ "accept-word", OPT_ACCEPT_WORD, "WORD", 0,
"keep automata that accept WORD", 0 },
{ "reject-word", OPT_REJECT_WORD, "WORD", 0,
"keep automata that reject WORD", 0 },
RANGE_DOC_FULL,
WORD_DOC,
{ nullptr, 0, nullptr, 0, { nullptr, 0, nullptr, 0,
"If any option among --small, --deterministic, or --any is given, " "If any option among --small, --deterministic, or --any is given, "
"then the simplification level defaults to --high unless specified " "then the simplification level defaults to --high unless specified "
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment