//! Main int main(int argc, char** argv) { if (argc < 1 || argc > 2) { cout << "Usage: trie_generator [<chunk_size>]" << endl; cout << "Word list on standard in; one word per line." << endl; cout << "Automata on standard out; intermediate format." << endl; return 1; } try { size_t chunk_size = 0; if (argc == 2) { try { chunk_size = boost::lexical_cast<size_t>(argv[1]); } catch (boost::bad_lexical_cast) { cerr << "Invalid chunk size: " << argv[1] << endl; return 1; } } Automata a; list<string> words; string s; while (cin) { getline(cin, s); if (! s.empty()) { add_word(a, s); } } if (! a.start_node()) { cerr << "No automata generator. Empty input?" << endl; return 1; } breadth_first(a, optimize_edges); deduplicate_outputs(a); a.metadata()["Output-Type"] = "string"; write_automata(a, cout, chunk_size); } catch (const exception& e) { cerr << "Error: " << e.what() << endl; return 1; } return 0; }
//! Main int main(int argc, char** argv) { if (argc < 1 || argc > 2) { cout << "Usage: trie_generator [<chunk_size>]" << endl; return 1; } try { size_t chunk_size = 0; if (argc == 2) { chunk_size = boost::lexical_cast<size_t>(argv[1]); } Automata a; list<string> words; string s; while (cin) { getline(cin, s); if (! s.empty()) { add_word(a, s); } } assert(a.start_node()); breadth_first(a, optimize_edges); deduplicate_outputs(a); a.metadata()["Output-Type"] = "string"; write_automata(a, cout, chunk_size); } catch (const exception& e) { cerr << "Error: " << e.what() << endl; return 1; } return 0; }