Changeset c9383ee for tools/prettyprinter/parser.yy
- Timestamp:
- Jun 29, 2017, 9:39:17 AM (5 years ago)
- 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
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/prettyprinter/parser.yy
rc89503c rc9383ee 10 10 // Created On : Sat Dec 15 13:44:21 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 28 23:27:34201713 // Update Count : 104 312 // Last Modified On : Thu Jun 29 09:26:47 2017 13 // Update Count : 1045 14 14 // 15 15 … … 233 233 $$ = $1; 234 234 } 235 | THONG// bison235 | THONG // bison 236 236 ; 237 237 … … 276 276 ; 277 277 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 ; 278 namenolist : 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 299 nameno : 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 313 namelist : 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 334 name : 335 IDENTIFIER 336 | CHARACTER 337 ; 338 339 rulesection : 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 ; 347 352 348 353 // These grammar rules are complex because the Yacc language is LR(2) due to the optional ';' at the end of rules. The … … 351 356 // (rules, rhs) being built but only one list tail can be returned through $$ for chaining. 352 357 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 ; 358 rules : 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 372 lhs : 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 ; 375 382 376 383 rhs : … … 479 486 ccode_opt : 480 487 // empty 488 {} 481 489 | blocks 482 490 ;
Note: See TracChangeset
for help on using the changeset viewer.