Ignore:
Timestamp:
Jun 29, 2017, 9:39:17 AM (7 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
288eede, 8c680e9, ae47a23
Parents:
c89503c
Message:

update input file and formatting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/prettyprinter/main.cc

    rc89503c rc9383ee  
    1010// Created On       : Wed Jun 28 22:57:26 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 28 22:58:40 2017
    13 // Update Count     : 3
     12// Last Modified On : Thu Jun 29 09:02:37 2017
     13// Update Count     : 15
    1414//
    1515
    1616#include <iostream>
     17#include <fstream>
    1718#include <string>
    1819using namespace std;
     20#include <unistd.h>                                                                             // close
    1921#include "filter.h"
    2022
     23extern FILE * yyin;
     24extern int yylineno;
    2125extern int yydebug;
    2226extern int yyparse( void );
    2327
    2428int main( int argc, char *argv[] ) {
    25         switch ( argc ) {
    26           case 2: {
    27                   string arg( argv[1] );
     29        yyin = stdin;
     30        filter = Nocode;
    2831
    29                   if ( arg == "-identity" ) {
    30                           filter = Identity;
    31                   } else if ( arg == "-parse_tree" ) {
    32                           filter = Parse_Tree;
    33                   } else if ( arg == "-nocode" ) {
    34                           filter = Nocode;
    35                   } else if ( arg == "-latex" ) {
    36                           filter = LaTeX;
    37                   } else if ( arg == "-html" ) {
    38                           filter = HTML;
    39                   } else {
    40                           cerr << "Unknown printer option: " << argv[1] << endl;
    41                           goto usage;
    42                   } // if
    43                   break;
    44           }
    45           usage:
    46           default:
    47                 cerr << "Usage: " << argv[0] << " [-identity | -parse_tree | -nocode | -latex | -html] < bison.y" << endl;
    48                 exit( -1 );
    49         }
     32        try {
     33                switch ( argc ) {
     34                  case 3:
     35                        yyin = fopen( argv[ 2 ], "r" );
     36                        if ( yyin == nullptr ) {
     37                                throw ios_base::failure( "unknown printer option arguments" );
     38                        } // if
     39                        // FALL THROUGH
     40                  case 2: {
     41                          string arg( argv[1] );
     42
     43                          if ( arg == "-identity" ) {
     44                                  filter = Identity;
     45                          } else if ( arg == "-parse_tree" ) {
     46                                  filter = Parse_Tree;
     47                          } else if ( arg == "-nocode" ) {
     48                                  filter = Nocode;
     49                          } else if ( arg == "-latex" ) {
     50                                  filter = LaTeX;
     51                          } else if ( arg == "-html" ) {
     52                                  filter = HTML;
     53                          } else {
     54                                  throw ios_base::failure( "unknown printer option arguments" );
     55                          } // if
     56                          break;
     57                  }
     58                  default:
     59                        throw ios_base::failure( "wrong number of arguments" );
     60                } // switch
     61        } catch( ios_base::failure err ) {
     62                cerr << err.what() << endl;
     63                cerr << "Usage: [" << argv[0]
     64                         << "-identity |"
     65                         << "-parse_tree |"
     66                         << "-nocode |"
     67                         << "-latex |"
     68                         << "-html"
     69                         << "] [input-file]"
     70                         << endl;
     71                exit( EXIT_FAILURE );                                                   // TERMINATE
     72        } // try
    5073
    5174        //yydebug = 1;
    5275        yyparse();
    53 }
     76
     77        if ( yyin != stdin ) fclose( yyin );                            // close file, do not delete cin!
     78} // main
    5479
    5580// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.