Mercurial > projects > dil
annotate trunk/src/dil/ast/DefaultVisitor.d @ 786:3b34f6a95a27
Added and revised documenation comments.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sun, 24 Feb 2008 02:41:11 +0100 |
parents | 5e3ef1b2011c |
children | 5fe89bb8cbdd |
rev | line source |
---|---|
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
5 module dil.ast.DefaultVisitor; |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
643
3bd947eb72c2
Added module cmd.ASTStats.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
642
diff
changeset
|
7 import dil.ast.Visitor; |
3bd947eb72c2
Added module cmd.ASTStats.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
642
diff
changeset
|
8 |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
9 import dil.ast.Node; |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 import dil.ast.Declarations, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 dil.ast.Expressions, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 dil.ast.Statements, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 dil.ast.Types, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 dil.ast.Parameters; |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
15 import common; |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 |
769
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
17 /// This huge template function, when instantiated for a certain node class, |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
18 /// generates a body of calls to visit() on the subnodes. |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
19 returnType!(T.stringof) visitDefault(T)(T t) |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
21 assert(t !is null, "node passed to visitDefault() is null"); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
22 //Stdout(t).newline; |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
23 |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
24 alias t d, s, e, n; // Variable aliases of t. |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
25 |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
26 static if (is(T : Declaration)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
27 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
28 alias T D; |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
29 static if (is(D == CompoundDeclaration)) |
696
c67d2c3c0b3d
Wrote code for SemanticPass2.visit(ImportExpression).
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
695
diff
changeset
|
30 foreach (decl; d.decls) |
c67d2c3c0b3d
Wrote code for SemanticPass2.visit(ImportExpression).
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
695
diff
changeset
|
31 visitD(decl); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
32 //EmptyDeclaration, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
33 //IllegalDeclaration, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
34 //ModuleDeclaration have no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
35 static if (is(D == AliasDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
36 is(D == TypedefDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
37 visitD(d.decl); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
38 static if (is(D == EnumDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
39 { |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
40 d.baseType && visitT(d.baseType); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
41 foreach (member; d.members) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
42 visitD(member); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
43 } |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
44 static if (is(D == EnumMemberDeclaration)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
45 d.value && visitE(d.value); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
46 static if (is(D == ClassDeclaration) || is( D == InterfaceDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
47 { |
766
0af3b145a405
Revised TemplateParameterList parsing functions.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
765
diff
changeset
|
48 // visitN(d.tparams); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
49 foreach (base; d.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
50 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
51 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
52 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
53 static if (is(D == StructDeclaration) || is(D == UnionDeclaration)) |
766
0af3b145a405
Revised TemplateParameterList parsing functions.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
765
diff
changeset
|
54 // visitN(d.tparams), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
55 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
56 static if (is(D == ConstructorDeclaration)) |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
57 visitN(d.params), visitS(d.funcBody); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
58 static if (is(D == StaticConstructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
59 is(D == DestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
60 is(D == StaticDestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
61 is(D == InvariantDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
62 is(D == UnittestDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
63 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
64 static if (is(D == FunctionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
65 visitT(d.returnType), |
766
0af3b145a405
Revised TemplateParameterList parsing functions.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
765
diff
changeset
|
66 // visitN(d.tparams), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
67 visitN(d.params), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
68 visitS(d.funcBody); |
673
64fec49651cf
Renamed VariableDeclaration to VariablesDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
672
diff
changeset
|
69 static if (is(D == VariablesDeclaration)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
70 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
71 d.typeNode && visitT(d.typeNode); |
683
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
72 foreach(init; d.inits) |
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
73 init && visitE(init); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
74 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
75 static if (is(D == DebugDeclaration) || is(D == VersionDeclaration)) |
672
d422e5f2f3ea
Added '--asttable' option to command 'statistics'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
671
diff
changeset
|
76 d.decls && visitD(d.decls), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
77 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
78 static if (is(D == StaticIfDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
79 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
80 visitD(d.ifDecls), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
81 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
82 static if (is(D == StaticAssertDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
83 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
84 d.message && visitE(d.message); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
85 static if (is(D == TemplateDeclaration)) |
766
0af3b145a405
Revised TemplateParameterList parsing functions.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
765
diff
changeset
|
86 visitN(d.tparams), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
87 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
88 static if (is(D == NewDeclaration) || is(D == DeleteDeclaration)) |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
89 visitN(d.params), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
90 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
91 static if (is(D == ProtectionDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
92 is(D == StorageClassDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
93 is(D == LinkageDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
94 is(D == AlignDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
95 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
96 static if (is(D == PragmaDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
97 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
98 foreach (arg; d.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
99 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
100 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
101 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
102 static if (is(D == MixinDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
103 d.templateExpr ? visitE(d.templateExpr) : visitE(d.argument); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
104 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
105 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
106 static if (is(T : Expression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
107 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
108 alias T E; |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
109 static if (is(E == IllegalExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
110 {} |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
111 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
112 static if (is(E : CondExpression)) |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
113 visitE(e.condition), visitE(e.lhs), visitE(e.rhs); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
114 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
115 static if (is(E : BinaryExpression)) |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
116 visitE(e.lhs), visitE(e.rhs); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
117 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
118 static if (is(E : UnaryExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
119 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
120 static if (is(E == CastExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
121 visitT(e.type); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
122 visitE(e.e); // Visit member in base class UnaryExpression. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
123 static if (is(E == IndexExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
124 foreach (arg; e.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
125 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
126 static if (is(E == SliceExpression)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
127 e.left && (visitE(e.left), visitE(e.right)); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
128 static if (is(E == AsmPostBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
129 visitE(e.e2); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
130 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
131 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
132 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
133 static if (is(E == NewExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
134 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
135 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
136 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
137 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
138 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
139 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
140 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
141 static if (is(E == NewAnonClassExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
142 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
143 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
144 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
145 foreach (base; e.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
146 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
147 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
148 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
149 visitD(e.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
150 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
151 static if (is(E == AsmBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
152 visitE(e.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
153 static if (is(E == TemplateInstanceExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
154 e.targs && visitN(e.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
155 static if (is(E == ArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
156 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
157 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
158 static if (is(E == AArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
159 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
160 visitE(key), visitE(e.values[i]); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
161 static if (is(E == AssertExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
162 visitE(e.expr), e.msg && visitE(e.msg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
163 static if (is(E == MixinExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
164 is(E == ImportExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
165 visitE(e.expr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
166 static if (is(E == TypeofExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
167 is(E == TypeDotIdExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
168 is(E == TypeidExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
169 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
170 static if (is(E == IsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
171 visitT(e.type), e.specType && visitT(e.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
172 e.tparams && visitN(e.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
173 static if (is(E == FunctionLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
174 e.returnType && visitT(e.returnType), |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
175 e.params && visitN(e.params), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
176 visitS(e.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
177 static if (is(E == ParenExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
178 visitE(e.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
179 static if (is(E == TraitsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
180 visitN(e.targs); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
181 // VoidInitializer has no subnodes. |
695
170ddcdc9711
Renamed VoidInitializer, ArrayInitializer and StructInitializer.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
182 static if (is(E == ArrayInitExpression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
183 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
184 key && visitE(key), visitE(e.values[i]); |
695
170ddcdc9711
Renamed VoidInitializer, ArrayInitializer and StructInitializer.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
185 static if (is(E == StructInitExpression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
186 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
187 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
188 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
189 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
190 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
191 static if (is(T : Statement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
192 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
193 alias T S; |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
194 static if (is(S == CompoundStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
195 foreach (node; s.children) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
196 visitS(cast(Statement)cast(void*)node); |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
197 //IllegalStatement has no subnodes. |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
198 static if (is(S == FuncBodyStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
199 s.funcBody && visitS(s.funcBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
200 s.inBody && visitS(s.inBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
201 s.outBody && visitS(s.outBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
202 static if (is(S == ScopeStatement) || is(S == LabeledStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
203 visitS(s.s); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
204 static if (is(S == ExpressionStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
205 visitE(s.e); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
206 static if (is(S == DeclarationStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
207 visitD(s.decl); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
208 static if (is(S == IfStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
209 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
210 s.variable ? cast(Node)visitS(s.variable) : visitE(s.condition); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
211 visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
212 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
213 static if (is(S == WhileStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
214 visitE(s.condition), visitS(s.whileBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
215 static if (is(S == DoWhileStatement)) |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
216 visitS(s.doBody), visitE(s.condition); |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
217 static if (is(S == ForStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
218 s.init && visitS(s.init), |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
219 s.condition && visitE(s.condition), |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
220 s.increment && visitE(s.increment), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
221 visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
222 static if (is(S == ForeachStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
223 visitN(s.params), visitE(s.aggregate), visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
224 static if (is(S == ForeachRangeStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
225 visitN(s.params), visitE(s.lower), visitE(s.upper), visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
226 static if (is(S == SwitchStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
227 visitE(s.condition), visitS(s.switchBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
228 static if (is(S == CaseStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
229 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
230 foreach (value; s.values) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
231 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
232 visitS(s.caseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
233 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
234 static if (is(S == DefaultStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
235 visitS(s.defaultBody); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
236 //ContinueStatement, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
237 //BreakStatement have no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
238 static if (is(S == ReturnStatement)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
239 s.e && visitE(s.e); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
240 static if (is(S == GotoStatement)) |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
241 s.caseExpr && visitE(s.caseExpr); |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
242 static if (is(S == WithStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
243 visitE(s.e), visitS(s.withBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
244 static if (is(S == SynchronizedStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
245 s.e && visitE(s.e), visitS(s.syncBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
246 static if (is(S == TryStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
247 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
248 visitS(s.tryBody); |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
249 foreach (catchBody; s.catchBodies) |
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
250 visitS(catchBody); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
251 s.finallyBody && visitS(s.finallyBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
252 } |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
253 static if (is(S == CatchStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
254 s.param && visitN(s.param), visitS(s.catchBody); |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
255 static if (is(S == FinallyStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
256 visitS(s.finallyBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
257 static if (is(S == ScopeGuardStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
258 visitS(s.scopeBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
259 static if (is(S == ThrowStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
260 visitE(s.e); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
261 static if (is(S == VolatileStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
262 s.volatileBody && visitS(s.volatileBody); |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
263 static if (is(S == AsmBlockStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
264 visitS(s.statements); |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
265 static if (is(S == AsmStatement)) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
266 foreach (op; s.operands) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
267 visitE(op); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
268 //AsmAlignStatement has no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
269 static if (is(S == PragmaStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
270 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
271 foreach (arg; s.args) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
272 visitE(arg); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
273 visitS(s.pragmaBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
274 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
275 static if (is(S == MixinStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
276 visitE(s.templateExpr); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
277 static if (is(S == StaticIfStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
278 visitE(s.condition), visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
279 static if (is(S == StaticAssertStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
280 visitE(s.condition), s.message && visitE(s.message); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
281 static if (is(S == DebugStatement) || is(S == VersionStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
282 visitS(s.mainBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
283 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
284 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
285 static if (is(T : TypeNode)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
286 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
287 //IllegalType, |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
288 //IntegralType, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
289 //IdentifierType have no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
290 static if (is(T == QualifiedType)) |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
291 visitT(t.lhs), visitT(t.rhs); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
292 static if (is(T == TypeofType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
293 visitE(t.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
294 static if (is(T == TemplateInstanceType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
295 t.targs && visitN(t.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
296 static if (is(T == PointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
297 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
298 static if (is(T == ArrayType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
299 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
300 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
301 if (t.assocType) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
302 visitT(t.assocType); |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
303 else if (t.e1) |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
304 visitE(t.e1), t.e2 && visitE(t.e2); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
305 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
306 static if (is(T == FunctionType) || is(T == DelegateType)) |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
307 visitT(t.returnType), visitN(t.params); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
308 static if (is(T == CFuncPointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
309 visitT(t.next), t.params && visitN(t.params); |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
310 static if (is(T == ModuleScopeType) || |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
311 is(T == BaseClassType) || |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
312 is(T == ConstType) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
313 is(T == InvariantType)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
314 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
315 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
316 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
317 static if (is(T == Parameter)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
318 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
319 n.type && visitT(n.type); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
320 n.defValue && visitE(n.defValue); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
321 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
322 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
323 static if (is(T == Parameters) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
324 is(T == TemplateParameters) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
325 is(T == TemplateArguments)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
326 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
327 foreach (node; n.children) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
328 visitN(node); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
329 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
330 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
331 static if (is(T : TemplateParameter)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
332 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
333 static if (is(N == TemplateAliasParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
334 is(N == TemplateTypeParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
335 is(N == TemplateThisParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
336 n.specType && visitN(n.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
337 n.defType && visitN(n.defType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
338 static if (is(N == TemplateValueParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
339 visitT(n.valueType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
340 n.specValue && visitN(n.specValue), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
341 n.defValue && visitN(n.defValue); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
342 //TemplateTupleParameter has no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
343 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
344 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
345 assert(0, "Missing default visit method for: "~t.classinfo.name); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
346 return t; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
347 } |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
348 |
769
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
349 /// Generates the default visit methods. |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
350 /// |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
351 /// E.g: |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
352 /// --- |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
353 /// private mixin .visitDefault!(ClassDeclaration) _ClassDeclaration; |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
354 /// override returnType!("ClassDeclaration") visit(ClassDeclaration node) |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
355 /// { return _ClassDeclaration.visitDefault(node); } |
5e3ef1b2011c
Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
766
diff
changeset
|
356 /// --- |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
357 char[] generateDefaultVisitMethods() |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
358 { |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
359 char[] text; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
360 foreach (className; classNames) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
361 text ~= "private mixin .visitDefault!("~className~") _"~className~";\n" |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
769
diff
changeset
|
362 "override returnType!(\""~className~"\") visit("~className~" node)" |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
769
diff
changeset
|
363 "{return _"~className~".visitDefault(node);}\n"; |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
364 return text; |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
365 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
366 // pragma(msg, generateDefaultVisitMethods()); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
367 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
769
diff
changeset
|
368 /// This class provides default methods for |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
769
diff
changeset
|
369 /// traversing nodes and their sub-nodes. |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
370 class DefaultVisitor : Visitor |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
371 { |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
372 // Comment out if too many errors are shown. |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
373 mixin(generateDefaultVisitMethods()); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
374 } |