// file : libbuild2/cc/parser.test.cxx -*- C++ -*- // license : MIT; see accompanying LICENSE file #include #include #include #include #include using namespace std; using namespace butl; namespace build2 { namespace cc { // Usage: argv[0] [] // int main (int argc, char* argv[]) { try { path file; path_name in; ifdstream is; if (argc > 1) { file = path (argv[1]); in = path_name (file); is.open (file); } else { in = path_name (""); is.open (fddup (stdin_fd ())); } parser p; unit u (p.parse (is, in)); switch (u.type) { case unit_type::module_intf: case unit_type::module_intf_part: cout << "export "; // Fall through. case unit_type::module_impl: case unit_type::module_impl_part: cout << "module " << u.module_info.name << ';' << endl; break; default: break; } for (const module_import& m: u.module_info.imports) cout << (m.exported ? "export " : "") << "import " << m.name << ';' << endl; } catch (const failed&) { return 1; } return 0; } } } int main (int argc, char* argv[]) { return build2::cc::main (argc, argv); }