annotate trunk/src/dil/ast/Visitor.d @ 797:cf2ad5df025c

Added documentation comments. Removed Lexer.loadKeywords() and revised Lexer.isReservedIdentifier(). Also removed Lexer.getTokens(). Renamed keywords to g_reservedIds. Renamed classNames to g_classNames. Added PRE and DMDBUG macros.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Fri, 29 Feb 2008 22:51:24 +0100
parents 5e3ef1b2011c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
1 /++
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
2 Author: Aziz Köksal
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
3 License: GPL3
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
4 +/
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
5 module dil.ast.Visitor;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
6
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
7 import dil.ast.Node;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
8 import dil.ast.Declarations,
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
9 dil.ast.Expressions,
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
10 dil.ast.Statements,
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
11 dil.ast.Types,
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
12 dil.ast.Parameters;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
13
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
14 /// Generate visit methods.
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
15 ///
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
16 /// E.g.:
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
17 /// ---
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
18 /// Declaration visit(ClassDeclaration){return null;};
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
19 /// Expression visit(CommaExpression){return null;};
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
20 /// ---
649
3ebe76ad680e Using SemanticPass1 in main.d do start semantic analysis.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 648
diff changeset
21 char[] generateVisitMethods()
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
22 {
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
23 char[] text;
797
cf2ad5df025c Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 769
diff changeset
24 foreach (className; g_classNames)
667
1ac758cd952a Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 655
diff changeset
25 text ~= "returnType!(\""~className~"\") visit("~className~" node){return node;}\n";
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
26 return text;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
27 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
28 // pragma(msg, generateAbstractVisitMethods());
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
29
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
30 /// Gets the appropriate return type for the provided class.
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
31 template returnType(char[] className)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
32 {
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
33 static if (is(typeof(mixin(className)) : Declaration))
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
34 alias Declaration returnType;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
35 else
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
36 static if (is(typeof(mixin(className)) : Statement))
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
37 alias Statement returnType;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
38 else
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
39 static if (is(typeof(mixin(className)) : Expression))
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
40 alias Expression returnType;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
41 else
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
42 static if (is(typeof(mixin(className)) : TypeNode))
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
43 alias TypeNode returnType;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
44 else
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
45 alias Node returnType;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
46 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
47
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
48 /// Generate functions which do the second dispatch.
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
49 ///
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
50 /// E.g.:
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
51 /// ---
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
52 /// Expression visitCommaExpression(Visitor visitor, CommaExpression c)
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
53 /// { visitor.visit(c); /* Second dispatch. */ }
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
54 /// ---
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
55 /// The equivalent in the traditional visitor pattern would be:
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
56 /// ---
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
57 /// class CommaExpression : Expression
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
58 /// {
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
59 /// void accept(Visitor visitor)
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
60 /// { visitor.visit(this); }
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
61 /// }
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
62 /// ---
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
63 char[] generateDispatchFunctions()
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
64 {
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
65 char[] text;
797
cf2ad5df025c Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 769
diff changeset
66 foreach (className; g_classNames)
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
67 text ~= "returnType!(\""~className~"\") visit"~className~"(Visitor visitor, "~className~" c)\n"
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
68 "{ return visitor.visit(c); }\n";
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
69 return text;
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
70 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
71 // pragma(msg, generateDispatchFunctions());
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
72
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
73 /++
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
74 Generates an array of function pointers.
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
75
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
76 ---
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
77 [
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
78 cast(void*)&visitCommaExpression,
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
79 // etc.
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
80 ]
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
81 ---
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
82 +/
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
83 char[] generateVTable()
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
84 {
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
85 char[] text = "[";
797
cf2ad5df025c Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 769
diff changeset
86 foreach (className; g_classNames)
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
87 text ~= "cast(void*)&visit"~className~",\n";
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
88 return text[0..$-2]~"]"; // slice away last ",\n"
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
89 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
90 // pragma(msg, generateVTable());
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
91
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
92 /// Implements a variation of the visitor pattern.
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
93 ///
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
94 /// Inherited by classes that need to traverse a D syntax tree
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
95 /// and do computations, transformations and other things on it.
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
96 abstract class Visitor
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
97 {
649
3ebe76ad680e Using SemanticPass1 in main.d do start semantic analysis.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 648
diff changeset
98 mixin(generateVisitMethods());
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
99
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
100 static
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
101 mixin(generateDispatchFunctions());
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
102
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
103 /// The table holding function pointers to the second dispatch functions.
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
104 static const void*[] dispatch_vtable = mixin(generateVTable());
797
cf2ad5df025c Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 769
diff changeset
105 static assert(dispatch_vtable.length == g_classNames.length, "vtable length doesn't match number of classes");
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
106
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
107 /// Looks up the second dispatch function for n and returns that.
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
108 Node function(Visitor, Node) getDispatchFunction()(Node n)
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
109 {
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
110 return cast(Node function(Visitor, Node))dispatch_vtable[n.kind];
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
111 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
112
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
113 /// The main and first dispatch function.
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
114 Node dispatch(Node n)
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 757
diff changeset
115 { // Second dispatch is done in the called function.
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
116 return getDispatchFunction(n)(this, n);
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
117 }
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
118
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
119 final:
648
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
120 Declaration visit(Declaration n)
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
121 { return visitD(n); }
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
122 Statement visit(Statement n)
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
123 { return visitS(n); }
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
124 Expression visit(Expression n)
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
125 { return visitE(n); }
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
126 TypeNode visit(TypeNode n)
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
127 { return visitT(n); }
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
128 Node visit(Node n)
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
129 { return visitN(n); }
4ae7b13aaac8 Moved some semantic() methods to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 641
diff changeset
130
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
131 Declaration visitD(Declaration n)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
132 {
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
133 return cast(Declaration)cast(void*)dispatch(n);
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
134 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
135
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
136 Statement visitS(Statement n)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
137 {
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
138 return cast(Statement)cast(void*)dispatch(n);
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
139 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
140
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
141 Expression visitE(Expression n)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
142 {
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
143 return cast(Expression)cast(void*)dispatch(n);
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
144 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
145
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
146 TypeNode visitT(TypeNode n)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
147 {
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
148 return cast(TypeNode)cast(void*)dispatch(n);
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
149 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
150
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
151 Node visitN(Node n)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
152 {
757
e4b60543c5e8 Revised methods in class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 754
diff changeset
153 return dispatch(n);
635
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
154 }
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
155 }