minimizers = { 'hopcroft': ('Minimize using Hopcroft\'s partition refinement algorithm', hopcroft), 'polynomial': ('Minimize using a polynomial algorithm comparing each state', polynomial), 'none': ('Do not minimize', lambda: None) } # Handle 'list' commands command, arguments = CommandArguments.handle() if command == 'list-minimizers': left_column_size = len(max(minimizers, key=lambda i: len(i))) + 1 print("Supported DFA minimization algorithms:", file=sys.stderr) for name, (description, minimizer) in minimizers.iteritems(): print(" %s%s%s\n" % (name, ' '*(left_column_size-len(name)), description), file=sys.stderr) sys.exit(0) elif command == 'list-languages': LanguagePlugins.describe(this_folder, "Plugins/Plugins.json", 'utf-8') sys.exit(0) elif command == 'list-forms': print("Supported State Machine Forms (language support may vary)") print(" nfa Non-deterministic finite automata") print(" dfa Minimized deterministic finit automata") print(" default Use the default specified for the language") # Check minimizer if arguments.minimizer not in minimizers: print("Minimizer '%s' not recognized\n" % arguments.minimizer, file=sys.stderr) sys.exit(1) minimizer_description, minimizer = minimizers[arguments.minimizer] # Load language plug-ins file and list languages if requested language_plugins = None