www.pudn.com > cppcc.rar > main.cc


/*
 *  File:       main.cc
 *              $Id: main.cc,v 1.3 2002/07/09 03:04:58 alec Exp $
 *
 *  Author:     Alec Panoviciu (alecu@email.com)
 *
 *  Comments:
 *
 *  Revision history:
 *
 *  $Log: main.cc,v $
 *  Revision 1.3  2002/07/09 03:04:58  alec
 *  OWN_STRINGS bu*beep*it finally vanished
 *  gcc 3.1&mingw - related cleanups
 *
 *  Revision 1.2  2002/06/05 21:44:44  alec
 *  release-ready
 *
 *  Revision 1.1  2002/05/31 12:16:29  alec
 *  *** empty log message ***
 *
 */

/*
 * This file is Public Domain software. Use it as you wish and in good
 * health.
 */


#include 
#include 
#include 
using namespace std;

#include "c_parser.hh"
using namespace cppcc;



int main (int argc, char *argv[])
{
  argc--, argv++;
  istream *ifs;

  if (argc == 0) ifs = &cin;
  else ifs = new ifstream(argv[0]);
  /*
  CScanner s(ifs);

  s.setMarker();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  s.setMarker();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  s.rewindToMarker();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  cerr << "got \"" << s.la()->id << "\"\n";
  s.unchecked_consume();
  s.rewindToMarker();
  cerr << "got \"" << s.la()->id << "\"\n";
  */

  CParser parser(ifs);

  try {
    parser.file();
  } catch (ScanException &scex)
  {
    cerr << argv[0] << ": " << (string) scex << endl;
    return 1;
  } catch (ParseException &pex)
  {
    cerr << argv[0] << ": " << (string) pex << "( before: "
         << parser.scanner.la(0)->image() << " "
         << parser.scanner.la(1)->image() << ")" << endl;
    return 1;
  }

  /*
  CScanner scanner(ifs);

  for (;;)
  {
    CToken *token = scanner.la();
    if (token->id == CToken::eof) break;
    scanner.unchecked_consume();
  }
  */
  return 0;
}