001: //
002: // Generated by JTB 1.2.1
003: //
004:
005: package oscript.visitor;
006:
007: import oscript.syntaxtree.*;
008: import java.util.*;
009:
010: /**
011: * Provides default methods which visit each node in the tree in depth-first
012: * order. Your visitors may extend this class.
013: */
014: public class DepthFirstVisitor implements Visitor {
015: //
016: // Auto class visitors--probably don't need to be overridden.
017: //
018: public void visit(NodeList n) {
019: for (Enumeration e = n.elements(); e.hasMoreElements();)
020: ((Node) e.nextElement()).accept(this );
021: }
022:
023: public void visit(NodeListOptional n) {
024: if (n.present())
025: for (Enumeration e = n.elements(); e.hasMoreElements();)
026: ((Node) e.nextElement()).accept(this );
027: }
028:
029: public void visit(NodeOptional n) {
030: if (n.present())
031: n.node.accept(this );
032: }
033:
034: public void visit(NodeSequence n) {
035: for (Enumeration e = n.elements(); e.hasMoreElements();)
036: ((Node) e.nextElement()).accept(this );
037: }
038:
039: public void visit(NodeToken n) {
040: }
041:
042: //
043: // User-generated visitor methods below
044: //
045:
046: /**
047: * <PRE>
048: * f0 -> ( <UNIX_SELF_EXECUTABLE_COMMENT> )?
049: * f1 -> Program(false)
050: * f2 -> <EOF>
051: * </PRE>
052: */
053: public void visit(ProgramFile n) {
054: n.f0.accept(this );
055: n.f1.accept(this );
056: n.f2.accept(this );
057: }
058:
059: /**
060: * <PRE>
061: * f0 -> ( EvaluationUnit() )*
062: * </PRE>
063: */
064: public void visit(Program n) {
065: n.f0.accept(this );
066: }
067:
068: /**
069: * <PRE>
070: * f0 -> ScopeBlock()
071: * | VariableDeclarationBlock()
072: * | FunctionDeclaration()
073: * | TryStatement()
074: * | ForLoopStatement()
075: * | CollectionForLoopStatement()
076: * | WhileLoopStatement()
077: * | ConditionalStatement()
078: * | SynchronizedStatement()
079: * | ReturnStatement()
080: * | BreakStatement()
081: * | ContinueStatement()
082: * | ExpressionBlock()
083: * | ThrowBlock()
084: * | ImportBlock()
085: * | MixinBlock()
086: * | EvalBlock()
087: * </PRE>
088: */
089: public void visit(EvaluationUnit n) {
090: n.f0.accept(this );
091: }
092:
093: /**
094: * <PRE>
095: * f0 -> "{"
096: * f1 -> Program(false)
097: * f2 -> "}"
098: * </PRE>
099: */
100: public void visit(ScopeBlock n) {
101: n.f0.accept(this );
102: n.f1.accept(this );
103: n.f2.accept(this );
104: }
105:
106: /**
107: * <PRE>
108: * f0 -> VariableDeclaration()
109: * f1 -> ";"
110: * </PRE>
111: */
112: public void visit(VariableDeclarationBlock n) {
113: n.f0.accept(this );
114: n.f1.accept(this );
115: }
116:
117: /**
118: * <PRE>
119: * f0 -> Expression()
120: * f1 -> ";"
121: * </PRE>
122: */
123: public void visit(ExpressionBlock n) {
124: n.f0.accept(this );
125: n.f1.accept(this );
126: }
127:
128: /**
129: * <PRE>
130: * f0 -> "throw"
131: * f1 -> Expression()
132: * f2 -> ";"
133: * </PRE>
134: */
135: public void visit(ThrowBlock n) {
136: n.f0.accept(this );
137: n.f1.accept(this );
138: n.f2.accept(this );
139: }
140:
141: /**
142: * <PRE>
143:
144: * f0 -> "import"
145: * f1 -> Expression()
146: * f2 -> ";"
147: * </PRE>
148: */
149: public void visit(ImportBlock n) {
150: n.f0.accept(this );
151: n.f1.accept(this );
152: n.f2.accept(this );
153: }
154:
155: /**
156: * <PRE>
157:
158: * f0 -> "mixin"
159: * f1 -> Expression()
160: * f2 -> ";"
161: * </PRE>
162: */
163: public void visit(MixinBlock n) {
164: n.f0.accept(this );
165: n.f1.accept(this );
166: n.f2.accept(this );
167: }
168:
169: /**
170: * <PRE>
171:
172: * f0 -> "eval"
173: * f1 -> Expression()
174: * f2 -> ";"
175: * </PRE>
176: */
177: public void visit(EvalBlock n) {
178: n.f0.accept(this );
179: n.f1.accept(this );
180: n.f2.accept(this );
181: }
182:
183: /**
184: * <PRE>
185:
186: * f0 -> Permissions(true)
187: * f1 -> "var"
188: * f2 -> <IDENTIFIER>
189: * f3 -> ( "=" Expression() )?
190: * </PRE>
191: */
192: public void visit(VariableDeclaration n) {
193: n.f0.accept(this );
194: n.f1.accept(this );
195: n.f2.accept(this );
196: n.f3.accept(this );
197: }
198:
199: /**
200: * <PRE>
201:
202: * f0 -> Permissions(true)
203: * f1 -> "function"
204: * f2 -> <IDENTIFIER>
205: * f3 -> "("
206: * f4 -> ( Arglist() )?
207: * f5 -> ")"
208: * f6 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )?
209: * f7 -> "{"
210: * f8 -> Program(true)
211: * f9 -> "}"
212: * </PRE>
213: */
214: public void visit(FunctionDeclaration n) {
215: n.f0.accept(this );
216: n.f1.accept(this );
217: n.f2.accept(this );
218: n.f3.accept(this );
219: n.f4.accept(this );
220: n.f5.accept(this );
221: n.f6.accept(this );
222: n.f7.accept(this );
223: n.f8.accept(this );
224: n.f9.accept(this );
225: }
226:
227: /**
228: * <PRE>
229: * f0 -> Permissions(false)
230: * f1 -> <IDENTIFIER>
231: * f2 -> ( "," Permissions(false) <IDENTIFIER> )*
232: * f3 -> ( "..." )?
233: * </PRE>
234: */
235: public void visit(Arglist n) {
236: n.f0.accept(this );
237: n.f1.accept(this );
238: n.f2.accept(this );
239: n.f3.accept(this );
240: }
241:
242: /**
243: * <PRE>
244: * f0 -> "try"
245: * f1 -> EvaluationUnit()
246: * f2 -> ( "catch" "(" Expression() <IDENTIFIER> ")" EvaluationUnit() )*
247: * f3 -> ( "catch" "(" <IDENTIFIER> ")" EvaluationUnit() )?
248: * f4 -> ( "finally" EvaluationUnit() )?
249: * </PRE>
250: */
251: public void visit(TryStatement n) {
252: n.f0.accept(this );
253: n.f1.accept(this );
254: n.f2.accept(this );
255: n.f3.accept(this );
256: n.f4.accept(this );
257: }
258:
259: /**
260: * <PRE>
261:
262: * f0 -> "for"
263: * f1 -> "("
264: * f2 -> ( PreLoopStatement() )?
265: * f3 -> ";"
266: * f4 -> ( Expression() )?
267: * f5 -> ";"
268: * f6 -> ( Expression() )?
269: * f7 -> ")"
270: * f8 -> EvaluationUnit()
271: * </PRE>
272: */
273: public void visit(ForLoopStatement n) {
274: n.f0.accept(this );
275: n.f1.accept(this );
276: n.f2.accept(this );
277: n.f3.accept(this );
278: n.f4.accept(this );
279: n.f5.accept(this );
280: n.f6.accept(this );
281: n.f7.accept(this );
282: n.f8.accept(this );
283: }
284:
285: /**
286: * <PRE>
287:
288: * f0 -> "for"
289: * f1 -> "("
290: * f2 -> PreLoopStatement()
291: * f3 -> ":"
292: * f4 -> Expression()
293: * f5 -> ")"
294: * f6 -> EvaluationUnit()
295: * </PRE>
296: */
297: public void visit(CollectionForLoopStatement n) {
298: n.f0.accept(this );
299: n.f1.accept(this );
300: n.f2.accept(this );
301: n.f3.accept(this );
302: n.f4.accept(this );
303: n.f5.accept(this );
304: n.f6.accept(this );
305: }
306:
307: /**
308: * <PRE>
309: * f0 -> VariableDeclaration()
310: * | Expression()
311: * </PRE>
312: */
313: public void visit(PreLoopStatement n) {
314: n.f0.accept(this );
315: }
316:
317: /**
318: * <PRE>
319: * f0 -> "while"
320: * f1 -> "("
321: * f2 -> Expression()
322: * f3 -> ")"
323: * f4 -> EvaluationUnit()
324: * </PRE>
325: */
326: public void visit(WhileLoopStatement n) {
327: n.f0.accept(this );
328: n.f1.accept(this );
329: n.f2.accept(this );
330: n.f3.accept(this );
331: n.f4.accept(this );
332: }
333:
334: /**
335: * <PRE>
336: * f0 -> "if"
337: * f1 -> "("
338: * f2 -> Expression()
339: * f3 -> ")"
340: * f4 -> EvaluationUnit()
341: * f5 -> ( "else" EvaluationUnit() )?
342: * </PRE>
343: */
344: public void visit(ConditionalStatement n) {
345: n.f0.accept(this );
346: n.f1.accept(this );
347: n.f2.accept(this );
348: n.f3.accept(this );
349: n.f4.accept(this );
350: n.f5.accept(this );
351: }
352:
353: /**
354: * <PRE>
355: * f0 -> "synchronized"
356: * f1 -> "("
357: * f2 -> Expression()
358: * f3 -> ")"
359: * f4 -> EvaluationUnit()
360: * </PRE>
361: */
362: public void visit(SynchronizedStatement n) {
363: n.f0.accept(this );
364: n.f1.accept(this );
365: n.f2.accept(this );
366: n.f3.accept(this );
367: n.f4.accept(this );
368: }
369:
370: /**
371: * <PRE>
372: * f0 -> "return"
373: * f1 -> ( Expression() )?
374: * f2 -> ";"
375: * </PRE>
376: */
377: public void visit(ReturnStatement n) {
378: n.f0.accept(this );
379: n.f1.accept(this );
380: n.f2.accept(this );
381: }
382:
383: /**
384: * <PRE>
385: * f0 -> "break"
386: * f1 -> ";"
387: * </PRE>
388: */
389: public void visit(BreakStatement n) {
390: n.f0.accept(this );
391: n.f1.accept(this );
392: }
393:
394: /**
395: * <PRE>
396: * f0 -> "continue"
397: * f1 -> ";"
398: * </PRE>
399: */
400: public void visit(ContinueStatement n) {
401: n.f0.accept(this );
402: n.f1.accept(this );
403: }
404:
405: /**
406: * <PRE>
407: * f0 -> AssignmentExpression()
408: * f1 -> ( "," AssignmentExpression() )*
409: * </PRE>
410: */
411: public void visit(Expression n) {
412: n.f0.accept(this );
413: n.f1.accept(this );
414: }
415:
416: /**
417: * <PRE>
418: * f0 -> "("
419: * f1 -> ( FunctionCallExpressionListBody() )?
420: * f2 -> ")"
421: * </PRE>
422: */
423: public void visit(FunctionCallExpressionList n) {
424: n.f0.accept(this );
425: n.f1.accept(this );
426: n.f2.accept(this );
427: }
428:
429: /**
430: * <PRE>
431: * f0 -> AssignmentExpression()
432: * f1 -> ( "," AssignmentExpression() )*
433: * </PRE>
434: */
435: public void visit(FunctionCallExpressionListBody n) {
436: n.f0.accept(this );
437: n.f1.accept(this );
438: }
439:
440: /**
441: * <PRE>
442: * f0 -> ConditionalExpression()
443: * f1 -> ( ( "=" | "+=" | "-=" | "*=" | "/=" | "%=" | ">>=" | "<<=" | ">>>=" | "&=" | "^=" | "|=" ) ConditionalExpression() )*
444: * </PRE>
445: */
446: public void visit(AssignmentExpression n) {
447: n.f0.accept(this );
448: n.f1.accept(this );
449: }
450:
451: /**
452: * <PRE>
453: * f0 -> LogicalOrExpression()
454: * f1 -> ( "?" LogicalOrExpression() ":" LogicalOrExpression() )?
455: * </PRE>
456: */
457: public void visit(ConditionalExpression n) {
458: n.f0.accept(this );
459: n.f1.accept(this );
460: }
461:
462: /**
463: * <PRE>
464: * f0 -> LogicalAndExpression()
465: * f1 -> ( "||" LogicalAndExpression() )*
466: * </PRE>
467: */
468: public void visit(LogicalOrExpression n) {
469: n.f0.accept(this );
470: n.f1.accept(this );
471: }
472:
473: /**
474: * <PRE>
475: * f0 -> BitwiseOrExpression()
476: * f1 -> ( "&&" BitwiseOrExpression() )*
477: * </PRE>
478: */
479: public void visit(LogicalAndExpression n) {
480: n.f0.accept(this );
481: n.f1.accept(this );
482: }
483:
484: /**
485: * <PRE>
486: * f0 -> BitwiseXorExpression()
487: * f1 -> ( "|" BitwiseXorExpression() )*
488: * </PRE>
489: */
490: public void visit(BitwiseOrExpression n) {
491: n.f0.accept(this );
492: n.f1.accept(this );
493: }
494:
495: /**
496: * <PRE>
497: * f0 -> BitwiseAndExpression()
498: * f1 -> ( "^" BitwiseAndExpression() )*
499: * </PRE>
500: */
501: public void visit(BitwiseXorExpression n) {
502: n.f0.accept(this );
503: n.f1.accept(this );
504: }
505:
506: /**
507: * <PRE>
508: * f0 -> EqualityExpression()
509: * f1 -> ( "&" EqualityExpression() )*
510: * </PRE>
511: */
512: public void visit(BitwiseAndExpression n) {
513: n.f0.accept(this );
514: n.f1.accept(this );
515: }
516:
517: /**
518: * <PRE>
519: * f0 -> RelationalExpression()
520: * f1 -> ( ( "==" | "!=" ) RelationalExpression() )*
521: * </PRE>
522: */
523: public void visit(EqualityExpression n) {
524: n.f0.accept(this );
525: n.f1.accept(this );
526: }
527:
528: /**
529: * <PRE>
530: * f0 -> ShiftExpression()
531: * f1 -> ( ( "<" | ">" | ">=" | "<=" | "instanceof" ) ShiftExpression() )*
532: * </PRE>
533: */
534: public void visit(RelationalExpression n) {
535: n.f0.accept(this );
536: n.f1.accept(this );
537: }
538:
539: /**
540: * <PRE>
541: * f0 -> AdditiveExpression()
542: * f1 -> ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )*
543: * </PRE>
544: */
545: public void visit(ShiftExpression n) {
546: n.f0.accept(this );
547: n.f1.accept(this );
548: }
549:
550: /**
551: * <PRE>
552: * f0 -> MultiplicativeExpression()
553: * f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
554: * </PRE>
555: */
556: public void visit(AdditiveExpression n) {
557: n.f0.accept(this );
558: n.f1.accept(this );
559: }
560:
561: /**
562: * <PRE>
563: * f0 -> UnaryExpression()
564: * f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
565: * </PRE>
566: */
567: public void visit(MultiplicativeExpression n) {
568: n.f0.accept(this );
569: n.f1.accept(this );
570: }
571:
572: /**
573: * <PRE>
574: * f0 -> ( ( "++" | "--" | "+" | "-" | "~" | "!" ) )?
575: * f1 -> PostfixExpression()
576: * </PRE>
577: */
578: public void visit(UnaryExpression n) {
579: n.f0.accept(this );
580: n.f1.accept(this );
581: }
582:
583: /**
584: * <PRE>
585: * f0 -> TypeExpression()
586: * f1 -> ( "++" | "--" )?
587: * </PRE>
588: */
589: public void visit(PostfixExpression n) {
590: n.f0.accept(this );
591: n.f1.accept(this );
592: }
593:
594: /**
595: * <PRE>
596: * f0 -> AllocationExpression()
597: * | CastExpression()
598: * | PrimaryExpression()
599: * </PRE>
600: */
601: public void visit(TypeExpression n) {
602: n.f0.accept(this );
603: }
604:
605: /**
606: * <PRE>
607: * f0 -> "new"
608: * f1 -> PrimaryExpressionWithTrailingFxnCallExpList()
609: * f2 -> FunctionCallExpressionList()
610: * </PRE>
611: */
612: public void visit(AllocationExpression n) {
613: n.f0.accept(this );
614: n.f1.accept(this );
615: n.f2.accept(this );
616: }
617:
618: /**
619: * <PRE>
620: * f0 -> "("
621: * f1 -> PrimaryExpressionNotFunction()
622: * f2 -> ")"
623: * f3 -> PrimaryExpression()
624: * </PRE>
625: */
626: public void visit(CastExpression n) {
627: n.f0.accept(this );
628: n.f1.accept(this );
629: n.f2.accept(this );
630: n.f3.accept(this );
631: }
632:
633: /**
634: * <PRE>
635: * f0 -> PrimaryPrefix()
636: * f1 -> ( PrimaryPostfix() )*
637: * </PRE>
638: */
639: public void visit(PrimaryExpression n) {
640: n.f0.accept(this );
641: n.f1.accept(this );
642: }
643:
644: /**
645: * <PRE>
646: * f0 -> PrimaryPrefixNotFunction()
647: * f1 -> ( PrimaryPostfix() )*
648: * </PRE>
649: */
650: public void visit(PrimaryExpressionNotFunction n) {
651: n.f0.accept(this );
652: n.f1.accept(this );
653: }
654:
655: /**
656: * <PRE>
657: * f0 -> PrimaryPrefix()
658: * f1 -> ( PrimaryPostfixWithTrailingFxnCallExpList() )*
659: * </PRE>
660: */
661: public void visit(PrimaryExpressionWithTrailingFxnCallExpList n) {
662: n.f0.accept(this );
663: n.f1.accept(this );
664: }
665:
666: /**
667: * <PRE>
668: * f0 -> PrimaryPrefixNotFunction()
669: * | FunctionPrimaryPrefix()
670: * | ShorthandFunctionPrimaryPrefix()
671: * </PRE>
672: */
673: public void visit(PrimaryPrefix n) {
674: n.f0.accept(this );
675: }
676:
677: /**
678: * <PRE>
679: * f0 -> ThisPrimaryPrefix()
680: * | SuperPrimaryPrefix()
681: * | CalleePrimaryPrefix()
682: * | ArrayDeclarationPrimaryPrefix()
683: * | IdentifierPrimaryPrefix()
684: * | ParenPrimaryPrefix()
685: * | Literal()
686: * </PRE>
687: */
688: public void visit(PrimaryPrefixNotFunction n) {
689: n.f0.accept(this );
690: }
691:
692: /**
693: * <PRE>
694: * f0 -> "this"
695: * </PRE>
696: */
697: public void visit(ThisPrimaryPrefix n) {
698: n.f0.accept(this );
699: }
700:
701: /**
702: * <PRE>
703: * f0 -> "super"
704: * </PRE>
705: */
706: public void visit(SuperPrimaryPrefix n) {
707: n.f0.accept(this );
708: }
709:
710: /**
711: * <PRE>
712:
713: * f0 -> "callee"
714: * </PRE>
715: */
716: public void visit(CalleePrimaryPrefix n) {
717: n.f0.accept(this );
718: }
719:
720: /**
721: * <PRE>
722: * f0 -> <IDENTIFIER>
723: * </PRE>
724: */
725: public void visit(IdentifierPrimaryPrefix n) {
726: n.f0.accept(this );
727: }
728:
729: /**
730: * <PRE>
731: * f0 -> "("
732: * f1 -> Expression()
733: * f2 -> ")"
734: * </PRE>
735: */
736: public void visit(ParenPrimaryPrefix n) {
737: n.f0.accept(this );
738: n.f1.accept(this );
739: n.f2.accept(this );
740: }
741:
742: /**
743: * <PRE>
744:
745: * f0 -> "function"
746: * f1 -> "("
747: * f2 -> ( Arglist() )?
748: * f3 -> ")"
749: * f4 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )?
750: * f5 -> "{"
751: * f6 -> Program(true)
752: * f7 -> "}"
753: * </PRE>
754: */
755: public void visit(FunctionPrimaryPrefix n) {
756: n.f0.accept(this );
757: n.f1.accept(this );
758: n.f2.accept(this );
759: n.f3.accept(this );
760: n.f4.accept(this );
761: n.f5.accept(this );
762: n.f6.accept(this );
763: n.f7.accept(this );
764: }
765:
766: /**
767: * <PRE>
768:
769: * f0 -> "'{"
770: * f1 -> Program(true)
771: * f2 -> "}"
772: * </PRE>
773: */
774: public void visit(ShorthandFunctionPrimaryPrefix n) {
775: n.f0.accept(this );
776: n.f1.accept(this );
777: n.f2.accept(this );
778: }
779:
780: /**
781: * <PRE>
782: * f0 -> "["
783: * f1 -> ( FunctionCallExpressionListBody() )?
784: * f2 -> "]"
785: * </PRE>
786: */
787: public void visit(ArrayDeclarationPrimaryPrefix n) {
788: n.f0.accept(this );
789: n.f1.accept(this );
790: n.f2.accept(this );
791: }
792:
793: /**
794: * <PRE>
795: * f0 -> FunctionCallPrimaryPostfix()
796: * | ArraySubscriptPrimaryPostfix()
797: * | ThisScopeQualifierPrimaryPostfix()
798: * | PropertyIdentifierPrimaryPostfix()
799: * </PRE>
800: */
801: public void visit(PrimaryPostfix n) {
802: n.f0.accept(this );
803: }
804:
805: /**
806: * <PRE>
807: * f0 -> ArraySubscriptPrimaryPostfix()
808: * | ThisScopeQualifierPrimaryPostfix()
809: * | PropertyIdentifierPrimaryPostfix()
810: * </PRE>
811: */
812: public void visit(PrimaryPostfixWithTrailingFxnCallExpList n) {
813: n.f0.accept(this );
814: }
815:
816: /**
817: * <PRE>
818: * f0 -> FunctionCallExpressionList()
819: * </PRE>
820: */
821: public void visit(FunctionCallPrimaryPostfix n) {
822: n.f0.accept(this );
823: }
824:
825: /**
826: * <PRE>
827: * f0 -> "["
828: * f1 -> Expression()
829: * f2 -> ( ".." Expression() )?
830: * f3 -> "]"
831: * </PRE>
832: */
833: public void visit(ArraySubscriptPrimaryPostfix n) {
834: n.f0.accept(this );
835: n.f1.accept(this );
836: n.f2.accept(this );
837: n.f3.accept(this );
838: }
839:
840: /**
841: * <PRE>
842: * f0 -> "."
843: * f1 -> <IDENTIFIER>
844: * </PRE>
845: */
846: public void visit(PropertyIdentifierPrimaryPostfix n) {
847: n.f0.accept(this );
848: n.f1.accept(this );
849: }
850:
851: /**
852: * <PRE>
853: * f0 -> "."
854: * f1 -> "this"
855: * </PRE>
856: */
857: public void visit(ThisScopeQualifierPrimaryPostfix n) {
858: n.f0.accept(this );
859: n.f1.accept(this );
860: }
861:
862: /**
863: * <PRE>
864: * f0 -> <INTEGER_LITERAL>
865: * | <FLOATING_POINT_LITERAL>
866: * | <STRING_LITERAL>
867: * | <REGEXP_LITERAL>
868: * | "true"
869: * | "false"
870: * | "null"
871: * | "undefined"
872: * </PRE>
873: */
874: public void visit(Literal n) {
875: n.f0.accept(this );
876: }
877:
878: /**
879: * <PRE>
880:
881: * f0 -> ( "static" | "const" | "private" | "protected" | "public" )*
882: * </PRE>
883: */
884: public void visit(Permissions n) {
885: n.f0.accept(this);
886: }
887:
888: }
|