001// 002// Generated by JTB 1.3.2 003// 004 005package jtb.visitor; 006import jtb.syntaxtree.*; 007import java.util.*; 008 009/** 010 * Provides default methods which visit each node in the tree in depth-first 011 * order. Your visitors may extend this class. 012 */ 013public class DepthFirstVisitor implements Visitor { 014 protected boolean debug = false; 015 protected int indent = 0; 016 protected String indents = " "; 017 018 private void enterProduction(Node n) { 019 if (debug) System.out.println(indents.substring(0, indent) + n.getClass().getName()); 020 indent++; 021 } 022 023 private void exitProduction() { 024 indent--; 025 } 026 027 // 028 // Auto class visitors--probably don't need to be overridden. 029 // 030 public void visit(NodeList n) { 031 enterProduction(n); 032 for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) 033 e.nextElement().accept(this); 034 exitProduction(); 035 } 036 037 public void visit(NodeListOptional n) { 038 enterProduction(n); 039 if ( n.present() ) 040 for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) 041 e.nextElement().accept(this); 042 exitProduction(); 043 } 044 045 public void visit(NodeOptional n) { 046 enterProduction(n); 047 if ( n.present() ) 048 n.node.accept(this); 049 exitProduction(); 050 } 051 052 public void visit(NodeChoice n) { 053 enterProduction(n); 054 n.choice.accept(this); 055 exitProduction(); 056 } 057 058 public void visit(NodeSequence n) { 059 enterProduction(n); 060 for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) 061 e.nextElement().accept(this); 062 exitProduction(); 063 } 064 065 public void visit(NodeToken n) { 066 if (debug) System.out.println(indents.substring(0, indent) + "Token{" + n.kind +"}: " + n.tokenImage); 067 } 068 069 // 070 // User-generated visitor methods below 071 // 072 073 // f0 -> [ PackageDeclaration() ] 074 // f1 -> ( ImportDeclaration() )* 075 // f2 -> ( TypeDeclaration() )* 076 // f3 -> ( <"\u001a"> )? 077 // f4 -> ( <STUFF_TO_IGNORE: ~[]> )? 078 // f5 -> <EOF> 079 public void visit(CompilationUnit n) { 080 enterProduction(n); 081 n.f0.accept(this); 082 n.f1.accept(this); 083 n.f2.accept(this); 084 n.f3.accept(this); 085 n.f4.accept(this); 086 n.f5.accept(this); 087 exitProduction(); 088 } 089 090 // f0 -> Modifiers() 091 // f1 -> "package" 092 // f2 -> Name() 093 // f3 -> ";" 094 public void visit(PackageDeclaration n) { 095 enterProduction(n); 096 n.f0.accept(this); 097 n.f1.accept(this); 098 n.f2.accept(this); 099 n.f3.accept(this); 100 exitProduction(); 101 } 102 103 // f0 -> "import" 104 // f1 -> [ "static" ] 105 // f2 -> Name() 106 // f3 -> [ "." "*" ] 107 // f4 -> ";" 108 public void visit(ImportDeclaration n) { 109 enterProduction(n); 110 n.f0.accept(this); 111 n.f1.accept(this); 112 n.f2.accept(this); 113 n.f3.accept(this); 114 n.f4.accept(this); 115 exitProduction(); 116 } 117 118 // f0 -> ( ( "public" | "static" | "protected" | "private" | "final" | "abstract" | "synchronized" | "native" | "transient" | "volatile" | "strictfp" | Annotation() ) )* 119 public void visit(Modifiers n) { 120 enterProduction(n); 121 n.f0.accept(this); 122 exitProduction(); 123 } 124 125 // f0 -> ";" 126 // | Modifiers() ( ClassOrInterfaceDeclaration(modifiers) | EnumDeclaration(modifiers) | AnnotationTypeDeclaration(modifiers) ) 127 public void visit(TypeDeclaration n) { 128 enterProduction(n); 129 n.f0.accept(this); 130 exitProduction(); 131 } 132 133 // f0 -> ( "class" | "interface" ) 134 // f1 -> <IDENTIFIER> 135 // f2 -> [ TypeParameters() ] 136 // f3 -> [ ExtendsList(isInterface) ] 137 // f4 -> [ ImplementsList(isInterface) ] 138 // f5 -> ClassOrInterfaceBody(isInterface) 139 public void visit(ClassOrInterfaceDeclaration n) { 140 enterProduction(n); 141 n.f0.accept(this); 142 n.f1.accept(this); 143 n.f2.accept(this); 144 n.f3.accept(this); 145 n.f4.accept(this); 146 n.f5.accept(this); 147 exitProduction(); 148 } 149 150 // f0 -> "extends" 151 // f1 -> ClassOrInterfaceType() 152 // f2 -> ( "," ClassOrInterfaceType() )* 153 public void visit(ExtendsList n) { 154 enterProduction(n); 155 n.f0.accept(this); 156 n.f1.accept(this); 157 n.f2.accept(this); 158 exitProduction(); 159 } 160 161 // f0 -> "implements" 162 // f1 -> ClassOrInterfaceType() 163 // f2 -> ( "," ClassOrInterfaceType() )* 164 public void visit(ImplementsList n) { 165 enterProduction(n); 166 n.f0.accept(this); 167 n.f1.accept(this); 168 n.f2.accept(this); 169 exitProduction(); 170 } 171 172 // f0 -> "enum" 173 // f1 -> <IDENTIFIER> 174 // f2 -> [ ImplementsList(false) ] 175 // f3 -> EnumBody() 176 public void visit(EnumDeclaration n) { 177 enterProduction(n); 178 n.f0.accept(this); 179 n.f1.accept(this); 180 n.f2.accept(this); 181 n.f3.accept(this); 182 exitProduction(); 183 } 184 185 // f0 -> "{" 186 // f1 -> [ EnumConstant() ( "," EnumConstant() )* ] 187 // f2 -> [ "," ] 188 // f3 -> [ ";" ( ClassOrInterfaceBodyDeclaration(false) )* ] 189 // f4 -> "}" 190 public void visit(EnumBody n) { 191 enterProduction(n); 192 n.f0.accept(this); 193 n.f1.accept(this); 194 n.f2.accept(this); 195 n.f3.accept(this); 196 n.f4.accept(this); 197 exitProduction(); 198 } 199 200 // f0 -> Modifiers() 201 // f1 -> <IDENTIFIER> 202 // f2 -> [ Arguments() ] 203 // f3 -> [ ClassOrInterfaceBody(false) ] 204 public void visit(EnumConstant n) { 205 enterProduction(n); 206 n.f0.accept(this); 207 n.f1.accept(this); 208 n.f2.accept(this); 209 n.f3.accept(this); 210 exitProduction(); 211 } 212 213 // f0 -> "<" 214 // f1 -> TypeParameter() 215 // f2 -> ( "," TypeParameter() )* 216 // f3 -> ">" 217 public void visit(TypeParameters n) { 218 enterProduction(n); 219 n.f0.accept(this); 220 n.f1.accept(this); 221 n.f2.accept(this); 222 n.f3.accept(this); 223 exitProduction(); 224 } 225 226 // f0 -> <IDENTIFIER> 227 // f1 -> [ TypeBound() ] 228 public void visit(TypeParameter n) { 229 enterProduction(n); 230 n.f0.accept(this); 231 n.f1.accept(this); 232 exitProduction(); 233 } 234 235 // f0 -> "extends" 236 // f1 -> ClassOrInterfaceType() 237 // f2 -> ( "&" ClassOrInterfaceType() )* 238 public void visit(TypeBound n) { 239 enterProduction(n); 240 n.f0.accept(this); 241 n.f1.accept(this); 242 n.f2.accept(this); 243 exitProduction(); 244 } 245 246 // f0 -> "{" 247 // f1 -> ( ClassOrInterfaceBodyDeclaration(isInterface) )* 248 // f2 -> "}" 249 public void visit(ClassOrInterfaceBody n) { 250 enterProduction(n); 251 n.f0.accept(this); 252 n.f1.accept(this); 253 n.f2.accept(this); 254 exitProduction(); 255 } 256 257 // f0 -> Initializer() 258 // | Modifiers() ( ClassOrInterfaceDeclaration(modifiers) | EnumDeclaration(modifiers) | ConstructorDeclaration() | FieldDeclaration(modifiers) | MethodDeclaration(modifiers) | AnnotationTypeDeclaration(modifiers) ) 259 // | ";" 260 public void visit(ClassOrInterfaceBodyDeclaration n) { 261 enterProduction(n); 262 n.f0.accept(this); 263 exitProduction(); 264 } 265 266 // f0 -> Type() 267 // f1 -> VariableDeclarator() 268 // f2 -> ( "," VariableDeclarator() )* 269 // f3 -> ";" 270 public void visit(FieldDeclaration n) { 271 enterProduction(n); 272 n.f0.accept(this); 273 n.f1.accept(this); 274 n.f2.accept(this); 275 n.f3.accept(this); 276 exitProduction(); 277 } 278 279 // f0 -> VariableDeclaratorId() 280 // f1 -> [ "=" VariableInitializer() ] 281 public void visit(VariableDeclarator n) { 282 enterProduction(n); 283 n.f0.accept(this); 284 n.f1.accept(this); 285 exitProduction(); 286 } 287 288 // f0 -> <IDENTIFIER> 289 // f1 -> ( "[" "]" )* 290 public void visit(VariableDeclaratorId n) { 291 enterProduction(n); 292 n.f0.accept(this); 293 n.f1.accept(this); 294 exitProduction(); 295 } 296 297 // f0 -> ArrayInitializer() 298 // | Expression() 299 public void visit(VariableInitializer n) { 300 enterProduction(n); 301 n.f0.accept(this); 302 exitProduction(); 303 } 304 305 // f0 -> "{" 306 // f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ] 307 // f2 -> [ "," ] 308 // f3 -> "}" 309 public void visit(ArrayInitializer n) { 310 enterProduction(n); 311 n.f0.accept(this); 312 n.f1.accept(this); 313 n.f2.accept(this); 314 n.f3.accept(this); 315 exitProduction(); 316 } 317 318 // f0 -> [ TypeParameters() ] 319 // f1 -> ResultType() 320 // f2 -> MethodDeclarator() 321 // f3 -> [ "throws" NameList() ] 322 // f4 -> ( Block() | ";" ) 323 public void visit(MethodDeclaration n) { 324 enterProduction(n); 325 n.f0.accept(this); 326 n.f1.accept(this); 327 n.f2.accept(this); 328 n.f3.accept(this); 329 n.f4.accept(this); 330 exitProduction(); 331 } 332 333 // f0 -> <IDENTIFIER> 334 // f1 -> FormalParameters() 335 // f2 -> ( "[" "]" )* 336 public void visit(MethodDeclarator n) { 337 enterProduction(n); 338 n.f0.accept(this); 339 n.f1.accept(this); 340 n.f2.accept(this); 341 exitProduction(); 342 } 343 344 // f0 -> "(" 345 // f1 -> [ FormalParameter() ( "," FormalParameter() )* ] 346 // f2 -> ")" 347 public void visit(FormalParameters n) { 348 enterProduction(n); 349 n.f0.accept(this); 350 n.f1.accept(this); 351 n.f2.accept(this); 352 exitProduction(); 353 } 354 355 // f0 -> Modifiers() 356 // f1 -> [ "final" | Annotation() ] 357 // f2 -> Type() 358 // f3 -> [ "..." ] 359 // f4 -> VariableDeclaratorId() 360 public void visit(FormalParameter n) { 361 enterProduction(n); 362 n.f0.accept(this); 363 n.f1.accept(this); 364 n.f2.accept(this); 365 n.f3.accept(this); 366 n.f4.accept(this); 367 exitProduction(); 368 } 369 370 // f0 -> [ TypeParameters() ] 371 // f1 -> <IDENTIFIER> 372 // f2 -> FormalParameters() 373 // f3 -> [ "throws" NameList() ] 374 // f4 -> "{" 375 // f5 -> [ ExplicitConstructorInvocation() ] 376 // f6 -> ( BlockStatement() )* 377 // f7 -> "}" 378 public void visit(ConstructorDeclaration n) { 379 enterProduction(n); 380 n.f0.accept(this); 381 n.f1.accept(this); 382 n.f2.accept(this); 383 n.f3.accept(this); 384 n.f4.accept(this); 385 n.f5.accept(this); 386 n.f6.accept(this); 387 n.f7.accept(this); 388 exitProduction(); 389 } 390 391 // f0 -> [ TypeArguments() ] ( "this" | "super" ) Arguments() ";" 392 // | PrimaryExpression() "." [ TypeArguments() ] "super" Arguments() ";" 393 public void visit(ExplicitConstructorInvocation n) { 394 enterProduction(n); 395 n.f0.accept(this); 396 exitProduction(); 397 } 398 399 // f0 -> [ "static" ] 400 // f1 -> Block() 401 public void visit(Initializer n) { 402 enterProduction(n); 403 n.f0.accept(this); 404 n.f1.accept(this); 405 exitProduction(); 406 } 407 408 // f0 -> ReferenceType() 409 // | PrimitiveType() 410 public void visit(Type n) { 411 enterProduction(n); 412 n.f0.accept(this); 413 exitProduction(); 414 } 415 416 // f0 -> PrimitiveType() ( "[" "]" )+ 417 // | ( ClassOrInterfaceType() ) ( "[" "]" )* 418 public void visit(ReferenceType n) { 419 enterProduction(n); 420 n.f0.accept(this); 421 exitProduction(); 422 } 423 424 // f0 -> <IDENTIFIER> 425 // f1 -> [ TypeArguments() ] 426 // f2 -> ( "." <IDENTIFIER> [ TypeArguments() ] )* 427 public void visit(ClassOrInterfaceType n) { 428 enterProduction(n); 429 n.f0.accept(this); 430 n.f1.accept(this); 431 n.f2.accept(this); 432 exitProduction(); 433 } 434 435 // f0 -> "<" 436 // f1 -> TypeArgument() 437 // f2 -> ( "," TypeArgument() )* 438 // f3 -> ">" 439 public void visit(TypeArguments n) { 440 enterProduction(n); 441 n.f0.accept(this); 442 n.f1.accept(this); 443 n.f2.accept(this); 444 n.f3.accept(this); 445 exitProduction(); 446 } 447 448 // f0 -> ReferenceType() 449 // | "?" [ WildcardBounds() ] 450 public void visit(TypeArgument n) { 451 enterProduction(n); 452 n.f0.accept(this); 453 exitProduction(); 454 } 455 456 // f0 -> "extends" ReferenceType() 457 // | "super" ReferenceType() 458 public void visit(WildcardBounds n) { 459 enterProduction(n); 460 n.f0.accept(this); 461 exitProduction(); 462 } 463 464 // f0 -> "boolean" 465 // | "char" 466 // | "byte" 467 // | "short" 468 // | "int" 469 // | "long" 470 // | "float" 471 // | "double" 472 public void visit(PrimitiveType n) { 473 enterProduction(n); 474 n.f0.accept(this); 475 exitProduction(); 476 } 477 478 // f0 -> "void" 479 // | Type() 480 public void visit(ResultType n) { 481 enterProduction(n); 482 n.f0.accept(this); 483 exitProduction(); 484 } 485 486 // f0 -> <IDENTIFIER> 487 // f1 -> ( "." <IDENTIFIER> )* 488 public void visit(Name n) { 489 enterProduction(n); 490 n.f0.accept(this); 491 n.f1.accept(this); 492 exitProduction(); 493 } 494 495 // f0 -> Name() 496 // f1 -> ( "," Name() )* 497 public void visit(NameList n) { 498 enterProduction(n); 499 n.f0.accept(this); 500 n.f1.accept(this); 501 exitProduction(); 502 } 503 504 // f0 -> ConditionalExpression() 505 // f1 -> [ AssignmentOperator() Expression() ] 506 public void visit(Expression n) { 507 enterProduction(n); 508 n.f0.accept(this); 509 n.f1.accept(this); 510 exitProduction(); 511 } 512 513 // f0 -> "=" 514 // | "*=" 515 // | "/=" 516 // | "%=" 517 // | "+=" 518 // | "-=" 519 // | "<<=" 520 // | ">>=" 521 // | ">>>=" 522 // | "&=" 523 // | "^=" 524 // | "|=" 525 public void visit(AssignmentOperator n) { 526 enterProduction(n); 527 n.f0.accept(this); 528 exitProduction(); 529 } 530 531 // f0 -> ConditionalOrExpression() 532 // f1 -> [ "?" Expression() ":" Expression() ] 533 public void visit(ConditionalExpression n) { 534 enterProduction(n); 535 n.f0.accept(this); 536 n.f1.accept(this); 537 exitProduction(); 538 } 539 540 // f0 -> ConditionalAndExpression() 541 // f1 -> ( "||" ConditionalAndExpression() )* 542 public void visit(ConditionalOrExpression n) { 543 enterProduction(n); 544 n.f0.accept(this); 545 n.f1.accept(this); 546 exitProduction(); 547 } 548 549 // f0 -> InclusiveOrExpression() 550 // f1 -> ( "&&" InclusiveOrExpression() )* 551 public void visit(ConditionalAndExpression n) { 552 enterProduction(n); 553 n.f0.accept(this); 554 n.f1.accept(this); 555 exitProduction(); 556 } 557 558 // f0 -> ExclusiveOrExpression() 559 // f1 -> ( "|" ExclusiveOrExpression() )* 560 public void visit(InclusiveOrExpression n) { 561 enterProduction(n); 562 n.f0.accept(this); 563 n.f1.accept(this); 564 exitProduction(); 565 } 566 567 // f0 -> AndExpression() 568 // f1 -> ( "^" AndExpression() )* 569 public void visit(ExclusiveOrExpression n) { 570 enterProduction(n); 571 n.f0.accept(this); 572 n.f1.accept(this); 573 exitProduction(); 574 } 575 576 // f0 -> EqualityExpression() 577 // f1 -> ( "&" EqualityExpression() )* 578 public void visit(AndExpression n) { 579 enterProduction(n); 580 n.f0.accept(this); 581 n.f1.accept(this); 582 exitProduction(); 583 } 584 585 // f0 -> InstanceOfExpression() 586 // f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )* 587 public void visit(EqualityExpression n) { 588 enterProduction(n); 589 n.f0.accept(this); 590 n.f1.accept(this); 591 exitProduction(); 592 } 593 594 // f0 -> RelationalExpression() 595 // f1 -> [ "instanceof" Type() ] 596 public void visit(InstanceOfExpression n) { 597 enterProduction(n); 598 n.f0.accept(this); 599 n.f1.accept(this); 600 exitProduction(); 601 } 602 603 // f0 -> ShiftExpression() 604 // f1 -> ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )* 605 public void visit(RelationalExpression n) { 606 enterProduction(n); 607 n.f0.accept(this); 608 n.f1.accept(this); 609 exitProduction(); 610 } 611 612 // f0 -> AdditiveExpression() 613 // f1 -> ( ( "<<" | RSIGNEDSHIFT() | RUNSIGNEDSHIFT() ) AdditiveExpression() )* 614 public void visit(ShiftExpression n) { 615 enterProduction(n); 616 n.f0.accept(this); 617 n.f1.accept(this); 618 exitProduction(); 619 } 620 621 // f0 -> MultiplicativeExpression() 622 // f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )* 623 public void visit(AdditiveExpression n) { 624 enterProduction(n); 625 n.f0.accept(this); 626 n.f1.accept(this); 627 exitProduction(); 628 } 629 630 // f0 -> UnaryExpression() 631 // f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )* 632 public void visit(MultiplicativeExpression n) { 633 enterProduction(n); 634 n.f0.accept(this); 635 n.f1.accept(this); 636 exitProduction(); 637 } 638 639 // f0 -> ( "+" | "-" ) UnaryExpression() 640 // | PreIncrementExpression() 641 // | PreDecrementExpression() 642 // | UnaryExpressionNotPlusMinus() 643 public void visit(UnaryExpression n) { 644 enterProduction(n); 645 n.f0.accept(this); 646 exitProduction(); 647 } 648 649 // f0 -> "++" 650 // f1 -> PrimaryExpression() 651 public void visit(PreIncrementExpression n) { 652 enterProduction(n); 653 n.f0.accept(this); 654 n.f1.accept(this); 655 exitProduction(); 656 } 657 658 // f0 -> "--" 659 // f1 -> PrimaryExpression() 660 public void visit(PreDecrementExpression n) { 661 enterProduction(n); 662 n.f0.accept(this); 663 n.f1.accept(this); 664 exitProduction(); 665 } 666 667 // f0 -> ( "~" | "!" ) UnaryExpression() 668 // | CastExpression() 669 // | PostfixExpression() 670 public void visit(UnaryExpressionNotPlusMinus n) { 671 enterProduction(n); 672 n.f0.accept(this); 673 exitProduction(); 674 } 675 676 // f0 -> "(" PrimitiveType() 677 // | "(" Type() "[" "]" 678 // | "(" Type() ")" ( "~" | "!" | "(" | <IDENTIFIER> | "this" | "super" | "new" | Literal() ) 679 public void visit(CastLookahead n) { 680 enterProduction(n); 681 n.f0.accept(this); 682 exitProduction(); 683 } 684 685 // f0 -> PrimaryExpression() 686 // f1 -> [ "++" | "--" ] 687 public void visit(PostfixExpression n) { 688 enterProduction(n); 689 n.f0.accept(this); 690 n.f1.accept(this); 691 exitProduction(); 692 } 693 694 // f0 -> "(" Type() ")" UnaryExpression() 695 // | "(" Type() ")" UnaryExpressionNotPlusMinus() 696 public void visit(CastExpression n) { 697 enterProduction(n); 698 n.f0.accept(this); 699 exitProduction(); 700 } 701 702 // f0 -> PrimaryPrefix() 703 // f1 -> ( PrimarySuffix() )* 704 public void visit(PrimaryExpression n) { 705 enterProduction(n); 706 n.f0.accept(this); 707 n.f1.accept(this); 708 exitProduction(); 709 } 710 711 // f0 -> "." 712 // f1 -> TypeArguments() 713 // f2 -> <IDENTIFIER> 714 public void visit(MemberSelector n) { 715 enterProduction(n); 716 n.f0.accept(this); 717 n.f1.accept(this); 718 n.f2.accept(this); 719 exitProduction(); 720 } 721 722 // f0 -> Literal() 723 // | ( <IDENTIFIER> "." )* "this" 724 // | "super" "." <IDENTIFIER> 725 // | ClassOrInterfaceType() "." "super" "." <IDENTIFIER> 726 // | "(" Expression() ")" 727 // | AllocationExpression() 728 // | ResultType() "." "class" 729 // | Name() 730 public void visit(PrimaryPrefix n) { 731 enterProduction(n); 732 n.f0.accept(this); 733 exitProduction(); 734 } 735 736 // f0 -> "." "super" 737 // | "." "this" 738 // | "." AllocationExpression() 739 // | MemberSelector() 740 // | "[" Expression() "]" 741 // | "." <IDENTIFIER> 742 // | Arguments() 743 public void visit(PrimarySuffix n) { 744 enterProduction(n); 745 n.f0.accept(this); 746 exitProduction(); 747 } 748 749 // f0 -> <INTEGER_LITERAL> 750 // | <FLOATING_POINT_LITERAL> 751 // | <CHARACTER_LITERAL> 752 // | <STRING_LITERAL> 753 // | BooleanLiteral() 754 // | NullLiteral() 755 public void visit(Literal n) { 756 enterProduction(n); 757 n.f0.accept(this); 758 exitProduction(); 759 } 760 761 // f0 -> "true" 762 // | "false" 763 public void visit(BooleanLiteral n) { 764 enterProduction(n); 765 n.f0.accept(this); 766 exitProduction(); 767 } 768 769 // f0 -> "null" 770 public void visit(NullLiteral n) { 771 enterProduction(n); 772 n.f0.accept(this); 773 exitProduction(); 774 } 775 776 // f0 -> "(" 777 // f1 -> [ ArgumentList() ] 778 // f2 -> ")" 779 public void visit(Arguments n) { 780 enterProduction(n); 781 n.f0.accept(this); 782 n.f1.accept(this); 783 n.f2.accept(this); 784 exitProduction(); 785 } 786 787 // f0 -> Expression() 788 // f1 -> ( "," Expression() )* 789 public void visit(ArgumentList n) { 790 enterProduction(n); 791 n.f0.accept(this); 792 n.f1.accept(this); 793 exitProduction(); 794 } 795 796 // f0 -> "new" PrimitiveType() ArrayDimsAndInits() 797 // | "new" ClassOrInterfaceType() [ TypeArguments() ] ( ArrayDimsAndInits() | Arguments() [ ClassOrInterfaceBody(false) ] ) 798 public void visit(AllocationExpression n) { 799 enterProduction(n); 800 n.f0.accept(this); 801 exitProduction(); 802 } 803 804 // f0 -> ( "[" Expression() "]" )+ ( "[" "]" )* 805 // | ( "[" "]" )+ ArrayInitializer() 806 public void visit(ArrayDimsAndInits n) { 807 enterProduction(n); 808 n.f0.accept(this); 809 exitProduction(); 810 } 811 812 // f0 -> LabeledStatement() 813 // | AssertStatement() 814 // | Block() 815 // | EmptyStatement() 816 // | StatementExpression() ";" 817 // | SwitchStatement() 818 // | IfStatement() 819 // | WhileStatement() 820 // | DoStatement() 821 // | ForStatement() 822 // | BreakStatement() 823 // | ContinueStatement() 824 // | ReturnStatement() 825 // | ThrowStatement() 826 // | SynchronizedStatement() 827 // | TryStatement() 828 public void visit(Statement n) { 829 enterProduction(n); 830 n.f0.accept(this); 831 exitProduction(); 832 } 833 834 // f0 -> "assert" 835 // f1 -> Expression() 836 // f2 -> [ ":" Expression() ] 837 // f3 -> ";" 838 public void visit(AssertStatement n) { 839 enterProduction(n); 840 n.f0.accept(this); 841 n.f1.accept(this); 842 n.f2.accept(this); 843 n.f3.accept(this); 844 exitProduction(); 845 } 846 847 // f0 -> <IDENTIFIER> 848 // f1 -> ":" 849 // f2 -> Statement() 850 public void visit(LabeledStatement n) { 851 enterProduction(n); 852 n.f0.accept(this); 853 n.f1.accept(this); 854 n.f2.accept(this); 855 exitProduction(); 856 } 857 858 // f0 -> "{" 859 // f1 -> ( BlockStatement() )* 860 // f2 -> "}" 861 public void visit(Block n) { 862 enterProduction(n); 863 n.f0.accept(this); 864 n.f1.accept(this); 865 n.f2.accept(this); 866 exitProduction(); 867 } 868 869 // f0 -> LocalVariableDeclaration() ";" 870 // | Statement() 871 // | ClassOrInterfaceDeclaration(0) 872 public void visit(BlockStatement n) { 873 enterProduction(n); 874 n.f0.accept(this); 875 exitProduction(); 876 } 877 878 // f0 -> Modifiers() 879 // f1 -> Type() 880 // f2 -> VariableDeclarator() 881 // f3 -> ( "," VariableDeclarator() )* 882 public void visit(LocalVariableDeclaration n) { 883 enterProduction(n); 884 n.f0.accept(this); 885 n.f1.accept(this); 886 n.f2.accept(this); 887 n.f3.accept(this); 888 exitProduction(); 889 } 890 891 // f0 -> ";" 892 public void visit(EmptyStatement n) { 893 enterProduction(n); 894 n.f0.accept(this); 895 exitProduction(); 896 } 897 898 // f0 -> PreIncrementExpression() 899 // | PreDecrementExpression() 900 // | PrimaryExpression() [ "++" | "--" | AssignmentOperator() Expression() ] 901 public void visit(StatementExpression n) { 902 enterProduction(n); 903 n.f0.accept(this); 904 exitProduction(); 905 } 906 907 // f0 -> "switch" 908 // f1 -> "(" 909 // f2 -> Expression() 910 // f3 -> ")" 911 // f4 -> "{" 912 // f5 -> ( SwitchLabel() ( BlockStatement() )* )* 913 // f6 -> "}" 914 public void visit(SwitchStatement n) { 915 enterProduction(n); 916 n.f0.accept(this); 917 n.f1.accept(this); 918 n.f2.accept(this); 919 n.f3.accept(this); 920 n.f4.accept(this); 921 n.f5.accept(this); 922 n.f6.accept(this); 923 exitProduction(); 924 } 925 926 // f0 -> "case" Expression() ":" 927 // | "default" ":" 928 public void visit(SwitchLabel n) { 929 enterProduction(n); 930 n.f0.accept(this); 931 exitProduction(); 932 } 933 934 // f0 -> "if" 935 // f1 -> "(" 936 // f2 -> Expression() 937 // f3 -> ")" 938 // f4 -> Statement() 939 // f5 -> [ "else" Statement() ] 940 public void visit(IfStatement n) { 941 enterProduction(n); 942 n.f0.accept(this); 943 n.f1.accept(this); 944 n.f2.accept(this); 945 n.f3.accept(this); 946 n.f4.accept(this); 947 n.f5.accept(this); 948 exitProduction(); 949 } 950 951 // f0 -> "while" 952 // f1 -> "(" 953 // f2 -> Expression() 954 // f3 -> ")" 955 // f4 -> Statement() 956 public void visit(WhileStatement n) { 957 enterProduction(n); 958 n.f0.accept(this); 959 n.f1.accept(this); 960 n.f2.accept(this); 961 n.f3.accept(this); 962 n.f4.accept(this); 963 exitProduction(); 964 } 965 966 // f0 -> "do" 967 // f1 -> Statement() 968 // f2 -> "while" 969 // f3 -> "(" 970 // f4 -> Expression() 971 // f5 -> ")" 972 // f6 -> ";" 973 public void visit(DoStatement n) { 974 enterProduction(n); 975 n.f0.accept(this); 976 n.f1.accept(this); 977 n.f2.accept(this); 978 n.f3.accept(this); 979 n.f4.accept(this); 980 n.f5.accept(this); 981 n.f6.accept(this); 982 exitProduction(); 983 } 984 985 // f0 -> "for" 986 // f1 -> "(" 987 // f2 -> ( Modifiers() Type() <IDENTIFIER> ":" Expression() | [ ForInit() ] ";" [ Expression() ] ";" [ ForUpdate() ] ) 988 // f3 -> ")" 989 // f4 -> Statement() 990 public void visit(ForStatement n) { 991 enterProduction(n); 992 n.f0.accept(this); 993 n.f1.accept(this); 994 n.f2.accept(this); 995 n.f3.accept(this); 996 n.f4.accept(this); 997 exitProduction(); 998 } 999 1000 // f0 -> LocalVariableDeclaration() 1001 // | StatementExpressionList() 1002 public void visit(ForInit n) { 1003 enterProduction(n); 1004 n.f0.accept(this); 1005 exitProduction(); 1006 } 1007 1008 // f0 -> StatementExpression() 1009 // f1 -> ( "," StatementExpression() )* 1010 public void visit(StatementExpressionList n) { 1011 enterProduction(n); 1012 n.f0.accept(this); 1013 n.f1.accept(this); 1014 exitProduction(); 1015 } 1016 1017 // f0 -> StatementExpressionList() 1018 public void visit(ForUpdate n) { 1019 enterProduction(n); 1020 n.f0.accept(this); 1021 exitProduction(); 1022 } 1023 1024 // f0 -> "break" 1025 // f1 -> [ <IDENTIFIER> ] 1026 // f2 -> ";" 1027 public void visit(BreakStatement n) { 1028 enterProduction(n); 1029 n.f0.accept(this); 1030 n.f1.accept(this); 1031 n.f2.accept(this); 1032 exitProduction(); 1033 } 1034 1035 // f0 -> "continue" 1036 // f1 -> [ <IDENTIFIER> ] 1037 // f2 -> ";" 1038 public void visit(ContinueStatement n) { 1039 enterProduction(n); 1040 n.f0.accept(this); 1041 n.f1.accept(this); 1042 n.f2.accept(this); 1043 exitProduction(); 1044 } 1045 1046 // f0 -> "return" 1047 // f1 -> [ Expression() ] 1048 // f2 -> ";" 1049 public void visit(ReturnStatement n) { 1050 enterProduction(n); 1051 n.f0.accept(this); 1052 n.f1.accept(this); 1053 n.f2.accept(this); 1054 exitProduction(); 1055 } 1056 1057 // f0 -> "throw" 1058 // f1 -> Expression() 1059 // f2 -> ";" 1060 public void visit(ThrowStatement n) { 1061 enterProduction(n); 1062 n.f0.accept(this); 1063 n.f1.accept(this); 1064 n.f2.accept(this); 1065 exitProduction(); 1066 } 1067 1068 // f0 -> "synchronized" 1069 // f1 -> "(" 1070 // f2 -> Expression() 1071 // f3 -> ")" 1072 // f4 -> Block() 1073 public void visit(SynchronizedStatement n) { 1074 enterProduction(n); 1075 n.f0.accept(this); 1076 n.f1.accept(this); 1077 n.f2.accept(this); 1078 n.f3.accept(this); 1079 n.f4.accept(this); 1080 exitProduction(); 1081 } 1082 1083 // f0 -> "try" 1084 // f1 -> Block() 1085 // f2 -> ( "catch" "(" FormalParameter() ")" Block() )* 1086 // f3 -> [ "finally" Block() ] 1087 public void visit(TryStatement n) { 1088 enterProduction(n); 1089 n.f0.accept(this); 1090 n.f1.accept(this); 1091 n.f2.accept(this); 1092 n.f3.accept(this); 1093 exitProduction(); 1094 } 1095 1096 // f0 -> ( ">" ">" ">" ) 1097 public void visit(RUNSIGNEDSHIFT n) { 1098 enterProduction(n); 1099 n.f0.accept(this); 1100 exitProduction(); 1101 } 1102 1103 // f0 -> ( ">" ">" ) 1104 public void visit(RSIGNEDSHIFT n) { 1105 enterProduction(n); 1106 n.f0.accept(this); 1107 exitProduction(); 1108 } 1109 1110 // f0 -> NormalAnnotation() 1111 // | SingleMemberAnnotation() 1112 // | MarkerAnnotation() 1113 public void visit(Annotation n) { 1114 enterProduction(n); 1115 n.f0.accept(this); 1116 exitProduction(); 1117 } 1118 1119 // f0 -> "@" 1120 // f1 -> Name() 1121 // f2 -> "(" 1122 // f3 -> [ MemberValuePairs() ] 1123 // f4 -> ")" 1124 public void visit(NormalAnnotation n) { 1125 enterProduction(n); 1126 n.f0.accept(this); 1127 n.f1.accept(this); 1128 n.f2.accept(this); 1129 n.f3.accept(this); 1130 n.f4.accept(this); 1131 exitProduction(); 1132 } 1133 1134 // f0 -> "@" 1135 // f1 -> Name() 1136 public void visit(MarkerAnnotation n) { 1137 enterProduction(n); 1138 n.f0.accept(this); 1139 n.f1.accept(this); 1140 exitProduction(); 1141 } 1142 1143 // f0 -> "@" 1144 // f1 -> Name() 1145 // f2 -> "(" 1146 // f3 -> MemberValue() 1147 // f4 -> ")" 1148 public void visit(SingleMemberAnnotation n) { 1149 enterProduction(n); 1150 n.f0.accept(this); 1151 n.f1.accept(this); 1152 n.f2.accept(this); 1153 n.f3.accept(this); 1154 n.f4.accept(this); 1155 exitProduction(); 1156 } 1157 1158 // f0 -> MemberValuePair() 1159 // f1 -> ( "," MemberValuePair() )* 1160 public void visit(MemberValuePairs n) { 1161 enterProduction(n); 1162 n.f0.accept(this); 1163 n.f1.accept(this); 1164 exitProduction(); 1165 } 1166 1167 // f0 -> <IDENTIFIER> 1168 // f1 -> "=" 1169 // f2 -> MemberValue() 1170 public void visit(MemberValuePair n) { 1171 enterProduction(n); 1172 n.f0.accept(this); 1173 n.f1.accept(this); 1174 n.f2.accept(this); 1175 exitProduction(); 1176 } 1177 1178 // f0 -> Annotation() 1179 // | MemberValueArrayInitializer() 1180 // | ConditionalExpression() 1181 public void visit(MemberValue n) { 1182 enterProduction(n); 1183 n.f0.accept(this); 1184 exitProduction(); 1185 } 1186 1187 // f0 -> "{" 1188 // f1 -> ( MemberValue() ( "," MemberValue() )* [ "," ] )? 1189 // f2 -> "}" 1190 public void visit(MemberValueArrayInitializer n) { 1191 enterProduction(n); 1192 n.f0.accept(this); 1193 n.f1.accept(this); 1194 n.f2.accept(this); 1195 exitProduction(); 1196 } 1197 1198 // f0 -> "@" 1199 // f1 -> "interface" 1200 // f2 -> <IDENTIFIER> 1201 // f3 -> AnnotationTypeBody() 1202 public void visit(AnnotationTypeDeclaration n) { 1203 enterProduction(n); 1204 n.f0.accept(this); 1205 n.f1.accept(this); 1206 n.f2.accept(this); 1207 n.f3.accept(this); 1208 exitProduction(); 1209 } 1210 1211 // f0 -> "{" 1212 // f1 -> ( AnnotationTypeMemberDeclaration() )* 1213 // f2 -> "}" 1214 public void visit(AnnotationTypeBody n) { 1215 enterProduction(n); 1216 n.f0.accept(this); 1217 n.f1.accept(this); 1218 n.f2.accept(this); 1219 exitProduction(); 1220 } 1221 1222 // f0 -> Modifiers() ( Type() <IDENTIFIER> "(" ")" [ DefaultValue() ] ";" | ClassOrInterfaceDeclaration(modifiers) | EnumDeclaration(modifiers) | AnnotationTypeDeclaration(modifiers) | FieldDeclaration(modifiers) ) 1223 // | ( ";" ) 1224 public void visit(AnnotationTypeMemberDeclaration n) { 1225 enterProduction(n); 1226 n.f0.accept(this); 1227 exitProduction(); 1228 } 1229 1230 // f0 -> "default" 1231 // f1 -> MemberValue() 1232 public void visit(DefaultValue n) { 1233 enterProduction(n); 1234 n.f0.accept(this); 1235 n.f1.accept(this); 1236 exitProduction(); 1237 } 1238 1239}