author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 24 Sep 2013 23:18:24 +0200 | |
branch | initialV |
changeset 1180 | 01c6be61f29c |
parent 685 | 4f05c627623e |
child 829 | e358bccac853 |
permissions | -rw-r--r-- |
655 | 1 |
"{ Package: 'stx:libjavascript' }" |
2 |
||
3 |
ParseNodeVisitor subclass:#JavaScriptParseNodeVisitor |
|
4 |
instanceVariableNames:'' |
|
5 |
classVariableNames:'' |
|
6 |
poolDictionaries:'' |
|
7 |
category:'Languages-JavaScript-Compiling & Parsing' |
|
8 |
! |
|
9 |
||
10 |
||
11 |
!JavaScriptParseNodeVisitor methodsFor:'visiting'! |
|
12 |
||
13 |
visit:anObject |
|
14 |
"visit anObject (visitor pattern). |
|
15 |
The object should call back one of my visitXXXX methods." |
|
16 |
||
17 |
^ anObject acceptVisitor:self |
|
18 |
! |
|
19 |
||
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
20 |
visitAll: aCollection |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
21 |
aCollection do:[:each | self visit: each ]. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
22 |
|
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
23 |
"Created: / 20-09-2013 / 12:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
24 |
! |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
25 |
|
655 | 26 |
visitAndExpressionNode: anObject |
27 |
self visit: anObject expression1. |
|
28 |
self visit: anObject expression2. |
|
29 |
||
30 |
"Modified: / 19-09-2013 / 18:49:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
31 |
! |
|
32 |
||
33 |
visitArrayAccessNode: anObject |
|
34 |
self visit: anObject arrayExpression. |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
35 |
self visitAll: anObject indexExpressions. |
655 | 36 |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
37 |
"Modified: / 20-09-2013 / 12:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 38 |
! |
39 |
||
40 |
visitBreakStatementNode: anObject |
|
41 |
||
42 |
"Modified: / 19-09-2013 / 18:52:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
43 |
! |
|
44 |
||
45 |
visitCommaExpression: anObject |
|
46 |
self visit: anObject expression1. |
|
47 |
self visit: anObject expression2. |
|
48 |
||
49 |
"Modified: / 19-09-2013 / 18:53:19 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
50 |
! |
|
51 |
||
52 |
visitConditionalNode: anObject |
|
53 |
self visit: anObject condition. |
|
54 |
self visit: anObject ifExpression. |
|
55 |
self visit: anObject elseExpression. |
|
56 |
||
57 |
"Modified (format): / 19-09-2013 / 19:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
58 |
! |
|
59 |
||
60 |
visitContinueStatementNode: anObject |
|
61 |
||
62 |
"Modified: / 19-09-2013 / 19:02:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
63 |
! |
|
64 |
||
65 |
visitDoWhileStatementNode: anObject |
|
66 |
self visit: anObject condition. |
|
67 |
self visit: anObject loopStatements. |
|
68 |
||
69 |
"Modified: / 19-09-2013 / 19:03:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
70 |
! |
|
71 |
||
72 |
visitForStatementNode: anObject |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
73 |
anObject initExpression notNil ifTrue:[ |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
74 |
self visit: anObject initExpression. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
75 |
]. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
76 |
anObject condition notNil ifTrue:[ |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
77 |
self visit: anObject condition. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
78 |
]. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
79 |
anObject incrExpression notNil ifTrue:[ |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
80 |
self visit: anObject incrExpression. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
81 |
]. |
655 | 82 |
self visit: anObject loopStatements. |
83 |
||
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
84 |
"Modified: / 20-09-2013 / 20:21:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 85 |
! |
86 |
||
87 |
visitFunctionCallNode: anObject |
|
88 |
^ self visitMessageNode: anObject |
|
89 |
! |
|
90 |
||
91 |
visitIfStatementNode: anObject |
|
92 |
self visit: anObject condition. |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
93 |
anObject ifStatements notNil ifTrue:[ |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
94 |
self visit: anObject ifStatements. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
95 |
]. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
96 |
anObject elseStatements notNil ifTrue:[ |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
97 |
self visit: anObject elseStatements. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
98 |
] |
655 | 99 |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
100 |
"Modified: / 20-09-2013 / 17:06:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 101 |
! |
102 |
||
103 |
visitImplicitFunctionCallNode: anObject |
|
104 |
^ self visitFunctionCallNode: anObject |
|
105 |
! |
|
106 |
||
107 |
visitIncDecNode: anObject |
|
108 |
^ self visit: anObject lValue |
|
109 |
||
110 |
"Modified: / 20-09-2013 / 01:40:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
111 |
! |
|
112 |
||
113 |
visitInnerJavaBlockNode: anObject |
|
114 |
^ self visitBlockNode: anObject |
|
115 |
! |
|
116 |
||
117 |
visitJavaScriptAssignmentNode: anObject |
|
118 |
^ self visitAssignmentNode: anObject |
|
119 |
! |
|
120 |
||
121 |
visitJavaScriptBinaryNode: anObject |
|
122 |
^ self visitBinaryNode: anObject |
|
123 |
! |
|
124 |
||
125 |
visitJavaScriptClassNode: anObject |
|
126 |
^ self visitParseNode: anObject |
|
127 |
! |
|
128 |
||
129 |
visitJavaScriptFunctionNode: anObject |
|
685
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
130 |
anObject statements notNil ifTrue:[ |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
131 |
self visit: anObject statements |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
132 |
]. |
655 | 133 |
|
685
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
134 |
"Modified: / 23-09-2013 / 10:24:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 135 |
! |
136 |
||
137 |
visitJavaScriptInnerFunctionNode: anObject |
|
138 |
^ self visitJavaScriptFunctionNode: anObject |
|
139 |
! |
|
140 |
||
141 |
visitJavaScriptReturnNode: anObject |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
142 |
anObject expression notNil ifTrue:[ |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
143 |
self visit: anObject expression. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
144 |
]. |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
145 |
|
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
146 |
"Modified: / 20-09-2013 / 20:22:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 147 |
! |
148 |
||
149 |
visitJavaScriptStatementNode: anObject |
|
150 |
^ self visitStatementNode: anObject |
|
151 |
! |
|
152 |
||
153 |
visitJavaScriptVariableNode: anObject |
|
154 |
^ self visitVariableNode: anObject |
|
155 |
! |
|
156 |
||
157 |
visitNewNode: anObject |
|
158 |
^ self visit: anObject classOrFunc |
|
159 |
||
160 |
"Modified: / 20-09-2013 / 01:41:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
161 |
! |
|
162 |
||
163 |
visitOrExpressionNode: anObject |
|
164 |
self visit: anObject expression1. |
|
165 |
self visit: anObject expression2. |
|
166 |
||
167 |
"Modified: / 20-09-2013 / 01:42:13 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
168 |
! |
|
169 |
||
170 |
visitPostIncDecNode: anObject |
|
171 |
^ self visitIncDecNode: anObject |
|
172 |
! |
|
173 |
||
174 |
visitPreIncDecNode: anObject |
|
175 |
^ self visitIncDecNode: anObject |
|
176 |
! |
|
177 |
||
178 |
visitStatementBlockNode: anObject |
|
677
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
179 |
^ self visitAll: anObject statements |
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
180 |
|
d1056b157cbf
Support for source positions & parent node reference for JavaScript AST (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
655
diff
changeset
|
181 |
"Modified: / 20-09-2013 / 14:29:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 182 |
! |
183 |
||
184 |
visitSwitchStatementNode: anObject |
|
185 |
self visit: anObject switchExpression. |
|
685
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
186 |
anObject statementBlocks do:[:valueAndStats | |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
187 |
valueAndStats key notNil ifTrue:[ |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
188 |
self visit: valueAndStats key. |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
189 |
]. |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
190 |
valueAndStats value isCollection ifTrue:[ |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
191 |
self visitAll: valueAndStats value |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
192 |
] ifFalse:[ |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
193 |
self visit: valueAndStats value |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
194 |
] |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
195 |
] |
655 | 196 |
|
685
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
197 |
"Modified: / 23-09-2013 / 11:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 198 |
! |
199 |
||
200 |
visitThisNode: anObject |
|
201 |
^ self visitSelfNode: anObject |
|
202 |
! |
|
203 |
||
204 |
visitThrowStatementNode: anObject |
|
205 |
^ self visitJavaScriptStatementNode: anObject |
|
206 |
! |
|
207 |
||
208 |
visitTryCatchStatementNode: anObject |
|
209 |
self visit: anObject tryBlock. |
|
685
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
210 |
anObject errorExpression notNil ifTrue:[ |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
211 |
self visit: anObject errorExpression. |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
212 |
self visit: anObject catchBlock. |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
213 |
]. |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
214 |
anObject finallyBlock notNil ifTrue:[ |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
215 |
self visit: anObject finallyBlock. |
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
216 |
] |
655 | 217 |
|
685
4f05c627623e
Fixes for recording node positions (part II)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
677
diff
changeset
|
218 |
"Modified: / 23-09-2013 / 10:54:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
655 | 219 |
! |
220 |
||
221 |
visitTypeOfNode: anObject |
|
222 |
^ self visit: anObject expression |
|
223 |
||
224 |
"Modified: / 20-09-2013 / 01:45:11 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
225 |
! |
|
226 |
||
227 |
visitWhileStatementNode: anObject |
|
228 |
self visit: anObject condition. |
|
229 |
self visit: anObject loopStatements |
|
230 |
||
231 |
"Modified: / 20-09-2013 / 01:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
232 |
! ! |
|
233 |
||
234 |
!JavaScriptParseNodeVisitor class methodsFor:'documentation'! |
|
235 |
||
236 |
version |
|
237 |
^ '$Header$' |
|
238 |
! |
|
239 |
||
240 |
version_CVS |
|
241 |
^ '$Header$' |
|
242 |
! ! |
|
243 |