ss2pi.test.cc File Reference

#include <lestes/lang/cplus/lex/file_system.hh>
#include <lestes/lang/cplus/lex/preprocessor.hh>
#include <lestes/lang/cplus/sem/sa_statements.g.hh>
#include <lestes/lang/cplus/sem/ss_misc.g.hh>
#include <lestes/lang/cplus/sem/ss_ss2pi_base.hh>
#include <lestes/lang/cplus/syn/hinter.hh>
#include <lestes/lang/cplus/syn/manager.hh>
#include <lestes/lang/cplus/syn/parse_result.hh>
#include <lestes/lang/cplus/syn/parser.hh>
#include <lestes/lang/cplus/syn/prefixer.hh>
#include <lestes/msg/logger.hh>
#include <lestes/package.hh>
#include <lestes/std/data_types.hh>
#include <lestes/std/dumper.hh>
#include <lestes/backend/backend.g.hh>
#include <vector>
#include <iostream>
#include <fstream>
#include <cstdlib>

Go to the source code of this file.

Namespaces

namespace  lestes
namespace  lestes::lang
namespace  lestes::lang::cplus
namespace  lestes::lang::cplus::syn

Classes

struct  usage_and_exit

Functions

int lestes::lang::cplus::syn::do_it (bool flat_dump, lstring filename, lstring ss_filename, bool hinter_on)
void operator<< (::std::ostream &os, const usage_and_exit &)
int main (int argc, char *argv[])


Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 137 of file ss2pi.test.cc.

References lestes::lang::cplus::syn::do_it(), lestes::msg::logger::dump_skeleton(), lestes::msg::logger::finish(), and lestes::msg::logger::init().

00138 {
00139         vector<lstring> args( argv, argv+argc );
00140         vector<lstring>::iterator it = args.begin();
00141         ++it;
00142         lstring filename = "";
00143         lstring ss_filename = "";
00144         bool log_finish = false;
00145         bool o_seen = false;
00146         bool f_seen = false;
00147         bool l_seen = false;
00148         bool h_seen = false;
00149         while (it != args.end() && (*it)[0] == '-') {
00150                 // option found
00151                 if (*it == "-o") {
00152                         if (o_seen)
00153                                 cout << "Error: -o option used multiple times." << usage_and_exit();
00154                         o_seen = true;
00155                         ++it;
00156                         if (it == args.end())
00157                                 cout << "Argument to -o option is missing." << usage_and_exit();
00158                         filename = *it++;
00159                 } else if (*it == "-f") {
00160                         if (f_seen)
00161                                 cout << "Error: -f option used multiple times." << usage_and_exit();
00162                         f_seen = true;
00163                         ++it;
00164                         if (it == args.end())
00165                                 cout << "Argument to -f option is missing." << usage_and_exit();
00166                         ss_filename = *it++;
00167                 } else if (*it == "-l") {
00168                         if (l_seen)
00169                                 cout << "Error: -l option used multiple times." << usage_and_exit();
00170                         l_seen = true;
00171                         ++it;
00172                         if (it == args.end())
00173                                 cout << "Argument to -l option is missing." << usage_and_exit();
00174                         log_finish = ::lestes::msg::logger::init(*it++);
00175                         if (!log_finish)
00176                                 cout << "Error, loggers will be off." << endl;
00177                 } else if (*it == "-s") {
00178                         // can be used multiple times
00179                         ++it;
00180                         if (it == args.end())
00181                                 cout << "Argument to -s option is missing." << usage_and_exit();
00182                         ::std::ofstream of( it->c_str() );
00183                         ++it;
00184 			::lestes::msg::logger::dump_skeleton(of);
00185                         of.close();
00186                 } else if (*it == "-h") {
00187                         ++it;
00188                         h_seen = true;
00189                 } else
00190                         cout << "Unknown option '" << *it << "'." << usage_and_exit();
00191         }
00192         bool flat_dump = false;
00193         if (it != args.end()) {
00194                 if (*it == "flat")
00195                         flat_dump = true;
00196                 else if (*it != "deep")
00197                         cout << "Unknown dump type '" << *it << "'." << usage_and_exit();
00198                 ++it;
00199                 if (it != args.end())
00200                         cout << "Too many arguments." << usage_and_exit();
00201         }
00202         int result = ::lestes::lang::cplus::syn::do_it( flat_dump, filename, ss_filename, h_seen );
00203         if (log_finish)
00204 		::lestes::msg::logger::finish();
00205         return result;
00206 }

void operator<< ( ::std::ostream &  os,
const usage_and_exit  
)

Definition at line 120 of file ss2pi.test.cc.

00121 {
00122         os << "\n\n"
00123                 "Usage: parser_test [-h] [-l llc_file] [-s skel_file] [-o output_file] [-f filename] [dump_type]\n"
00124                 "\n"
00125                 "Logger configuration is read from llc_file, if specified.\n"
00126                 "Logger configuration skeleton is dumped to skel_file, if specified.\n"
00127                 "AS structures will be dumped into file specified by the -o option.\n"
00128                 "  When the option is missing, they will not be dumped at all.\n"
00129                 "SS structures will be dumped into file specified by the -f option.\n"
00130                 "  When the option is missing, they will not be dumped at all.\n"
00131                 "dump_type is either 'flat' or 'deep', the default is 'deep'.\n"
00132                 "Hinter is turned on by the -h option.\n"
00133                 << endl;
00134         return exit(1);
00135 }


Generated on Mon Feb 12 18:23:47 2007 for lestes by doxygen 1.5.1-20070107