Ignore:
Timestamp:
Jun 29, 2017, 9:39:17 AM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, 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, 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/parser.yy

    rc89503c rc9383ee  
    1010// Created On       : Sat Dec 15 13:44:21 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 28 23:27:34 2017
    13 // Update Count     : 1043
     12// Last Modified On : Thu Jun 29 09:26:47 2017
     13// Update Count     : 1045
    1414//
    1515
     
    233233                    $$ = $1;
    234234                }
    235 | THONG                                                                                                 // bison
     235        | THONG                                                                                         // bison
    236236        ;
    237237
     
    276276        ;
    277277
    278 namenolist      : nameno
    279                         {
    280                             //cerr << "namenolist1: " << $1->text << "(" << $1 << ")" << endl;
    281                             $$ = nameliststart = $1;
    282                         }
    283                 | namenolist nameno
    284                         {
    285                             //cerr << "namenolist2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
    286                             $1->left = $2;
    287                             $$ = $2;
    288                         }
    289                 | namenolist ',' nameno
    290                         {
    291                             //cerr << "namenolist3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
    292                             $1->left = $2;
    293                             $2->left = $3;
    294                             $$ = $3;
    295                         }
    296                 ;
    297 
    298 nameno          : name
    299                         {
    300                             $$ = new Token( "nameno", _NAMENO );
    301                             $$->down = $1;
    302                         }
    303                 | name INTEGER
    304                         {
    305                             $$ = new Token( "nameno", _NAMENO );
    306                             $1->left = $2;
    307                             $$->down = $1;
    308                         }
    309                 ;
    310 
    311 namelist        : name
    312                         {
    313                             //cerr << "namelist1: " << $1->text << "(" << $1 << ")" << endl;
    314                             $$ = nameliststart = $1;
    315                         }
    316                 | namelist name
    317                         {
    318                             //cerr << "namelist2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
    319                             $1->left = $2;
    320                             $$ = $2;
    321                         }
    322                 | namelist ',' name
    323                         {
    324                             //cerr << "namelist3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
    325                             $1->left = $2;
    326                             $2->left = $3;
    327                             $$ = $3;
    328                         }
    329                 ;
    330 
    331 name            : IDENTIFIER
    332                 | CHARACTER
    333                 ;
    334 
    335 rulesection     : rules
    336                         {
    337                             //cerr << "rulesection1: " << $1->text << "(" << $1 << ")" << endl;
    338                             $$ = new Token( "rulesection", _RULESECTION );
    339                             $$->down = $1;
    340                         }
    341                 | error                                 /* no rules */
    342                         {
    343                             cerr << "no rules in the input grammar" << endl;
    344                             exit( -1 );
    345                         }
    346                 ;
     278namenolist :
     279        nameno
     280                {
     281                        //cerr << "namenolist1: " << $1->text << "(" << $1 << ")" << endl;
     282                        $$ = nameliststart = $1;
     283                }
     284        | namenolist nameno
     285                {
     286                    //cerr << "namenolist2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
     287                    $1->left = $2;
     288                    $$ = $2;
     289                }
     290        | namenolist ',' nameno
     291                {
     292                    //cerr << "namenolist3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
     293                    $1->left = $2;
     294                    $2->left = $3;
     295                    $$ = $3;
     296                }
     297        ;
     298
     299nameno :
     300        name
     301                {
     302                    $$ = new Token( "nameno", _NAMENO );
     303                    $$->down = $1;
     304                }
     305        | name INTEGER
     306                {
     307                    $$ = new Token( "nameno", _NAMENO );
     308                    $1->left = $2;
     309                    $$->down = $1;
     310                }
     311        ;
     312
     313namelist :
     314        name
     315                {
     316                    //cerr << "namelist1: " << $1->text << "(" << $1 << ")" << endl;
     317                    $$ = nameliststart = $1;
     318                }
     319        | namelist name
     320                {
     321                    //cerr << "namelist2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
     322                    $1->left = $2;
     323                    $$ = $2;
     324                }
     325        | namelist ',' name
     326                {
     327                    //cerr << "namelist3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
     328                    $1->left = $2;
     329                    $2->left = $3;
     330                    $$ = $3;
     331                }
     332        ;
     333
     334name :
     335        IDENTIFIER
     336        | CHARACTER
     337        ;
     338
     339rulesection :
     340        rules
     341                {
     342                    //cerr << "rulesection1: " << $1->text << "(" << $1 << ")" << endl;
     343                    $$ = new Token( "rulesection", _RULESECTION );
     344                    $$->down = $1;
     345                }
     346        | error                                                                                         // no rules
     347                {
     348                        cerr << "no rules in the input grammar" << endl;
     349                        exit( -1 );
     350                }
     351        ;
    347352
    348353// These grammar rules are complex because the Yacc language is LR(2) due to the optional ';' at the end of rules. The
     
    351356// (rules, rhs) being built but only one list tail can be returned through $$ for chaining.
    352357
    353 rules           : lhs rhs
    354                         {
    355                             //cerr << "rules1: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
    356                             $$ = rulestart;
    357                         }
    358                 | lhs rhs ';'
    359                         {
    360                             //cerr << "rules2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
    361                             $2->addDownLeftTail( $3 );
    362                             $$ = rulestart;
    363                         }
    364                 ;
    365 
    366 lhs             : IDENTIFIER ':'
    367                         {
    368                             //cerr << "lhs: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
    369                             $$ = new Token( "lhs", _LHS );
    370                             //cerr << " lhs: "  << $$->text << "(" << $$ << ")" << endl;
    371                             $1->left = $2;
    372                             $$->down = $1;
    373                         }
    374                 ;
     358rules :
     359        lhs rhs
     360                {
     361                    //cerr << "rules1: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
     362                    $$ = rulestart;
     363                }
     364        | lhs rhs ';'
     365                {
     366                    //cerr << "rules2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
     367                    $2->addDownLeftTail( $3 );
     368                    $$ = rulestart;
     369                }
     370        ;
     371
     372lhs :
     373        IDENTIFIER ':'
     374                {
     375                    //cerr << "lhs: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
     376                    $$ = new Token( "lhs", _LHS );
     377                    //cerr << " lhs: "  << $$->text << "(" << $$ << ")" << endl;
     378                    $1->left = $2;
     379                    $$->down = $1;
     380                }
     381        ;
    375382
    376383rhs     :
     
    479486ccode_opt :
    480487        // empty
     488                {}
    481489        | blocks
    482490        ;
Note: See TracChangeset for help on using the changeset viewer.