author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Fri, 11 Jan 2013 15:53:03 +0000 | |
changeset 6 | 06efdfe62106 |
parent 4 | 5ef74750c3bc |
child 10 | 5df5a2f8e4b5 |
permissions | -rw-r--r-- |
1
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'jv:dart/compiler' }" |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: Dart }" |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
PPCompositeParser subclass:#Parser |
2
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
6 |
instanceVariableNames:'additiveExpression additiveOperator argumentList arguments |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
7 |
assignableExpression assignableSelector assignmentOperator |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
8 |
bitwiseAndExpression bitwiseOperator bitwiseOrExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
9 |
bitwiseXorExpression block catchPart classDefinition |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
10 |
classMemberDefinition compilationUnit compoundLiteral |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
11 |
conditionalExpression constInitializedIdentifier |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
12 |
constInitializedVariableDeclaration |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
13 |
constantConstructorDeclaration constantExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
14 |
constructorDeclaration declaration declaredIdentifier defaultCase |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
15 |
defaultFormalParameter directive equalityExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
16 |
equalityOperator expression expressionInParentheses |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
17 |
expressionList factoryConstructorDeclaration factorySpecification |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
18 |
fieldFormalParameter fieldInitializer finalVarOrType finallyPart |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
19 |
forInitializerStatement forLoopParts formalParameterList |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
20 |
functionBody functionBodyOrNative functionDeclaration |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
21 |
functionExpression functionExpressionBody functionNative |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
22 |
functionPrefix functionTypeAlias getOrSet identifier |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
23 |
importReference importReferences incrementOperator |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
24 |
initializedIdentifier initializedIdentifierList |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
25 |
initializedVariableDeclaration initializers interfaceDefinition |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
26 |
interfaceMemberDefinition interfaces isOperator |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
27 |
iterationStatement label libraryBody libraryDefinition |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
28 |
libraryImport librarySource libraryUnit listLiteral literal |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
29 |
logicalAndExpression logicalOrExpression mapLiteral |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
30 |
mapLiteralEntry methodDeclaration multiplicativeExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
31 |
multiplicativeOperator namedArgument namedConstructorDeclaration |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
32 |
namedFormalParameters negateOperator nonLabelledStatement |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
33 |
normalFormalParameter normalFormalParameterTail postfixExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
34 |
postfixOperator prefixOperator primary primaryFE primaryNoFE |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
35 |
qualified redirection relationalExpression relationalOperator |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
36 |
returnType selectionStatement selector shiftExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
37 |
shiftOperator simpleFormalParameter sourceUrls |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
38 |
specialSignatureDefinition statement statements |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
39 |
staticFinalDeclaration staticFinalDeclarationList |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
40 |
superCallOrFieldInitializer superclass superinterfaces switchCase |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
41 |
topLevelDefinition tryStatement type typeArguments typeList |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
42 |
typeParameter typeParameters unaryExpression |
8fedb5e096fc
Initial grammar definition based on http://slps.github.com/zoo/index.html#Google_Dart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
43 |
userDefinableOperator variableDeclaration' |
3 | 44 |
classVariableNames:'Debugging' |
1
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
poolDictionaries:'' |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
category:'Languages-Dart-Parser' |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
PPParser subclass:#TokenParser |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
instanceVariableNames:'tokenType' |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
classVariableNames:'' |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
poolDictionaries:'' |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
privateIn:Parser |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
|
3 | 57 |
!Parser class methodsFor:'initialization'! |
58 |
||
59 |
debugging: aBoolean |
|
60 |
Debugging := aBoolean |
|
61 |
||
62 |
" |
|
63 |
JavaParser debugging: true. |
|
64 |
JavaParser debugging: false. |
|
65 |
" |
|
66 |
||
67 |
"Created: / 11-01-2013 / 11:32:46 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
68 |
! |
|
69 |
||
70 |
initialize |
|
71 |
"Invoked at system start or when the class is dynamically loaded." |
|
72 |
||
73 |
"/ please change as required (and remove this comment) |
|
74 |
||
75 |
Debugging := false. |
|
76 |
||
77 |
"Modified: / 11-01-2013 / 11:32:22 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
78 |
! ! |
|
79 |
||
80 |
!Parser methodsFor:'accessing'! |
|
81 |
||
82 |
start |
|
83 |
^compilationUnit , (TokenParser for: #EOF). |
|
84 |
||
85 |
"Created: / 11-01-2013 / 13:19:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
86 |
! ! |
|
87 |
||
88 |
!Parser methodsFor:'grammar'! |
|
89 |
||
90 |
additiveExpression |
|
91 |
||
92 |
^ (multiplicativeExpression , ((additiveOperator , multiplicativeExpression) star)) |
|
93 |
/ ((TokenParser for: #super) , ((additiveOperator , multiplicativeExpression) plus)) |
|
94 |
||
95 |
"Modified: / 11-01-2013 / 09:59:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
96 |
! |
|
97 |
||
98 |
additiveOperator |
|
99 |
||
100 |
^ ('+' asParser) |
|
101 |
/ ('-' asParser) |
|
102 |
||
103 |
! |
|
104 |
||
105 |
argumentList |
|
106 |
||
107 |
^ (namedArgument , (((',' asParser) , namedArgument) star)) |
|
108 |
/ (expressionList , (((',' asParser) , namedArgument) star)) |
|
109 |
||
110 |
! |
|
111 |
||
112 |
arguments |
|
113 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
114 |
^(TokenParser for:$() , (argumentList optional) , (TokenParser for:$)) |
3 | 115 |
! |
116 |
||
117 |
assignableExpression |
|
118 |
||
119 |
^ (primary , (((arguments star) , assignableSelector) plus)) |
|
120 |
/ ((TokenParser for: #super) , assignableSelector) |
|
121 |
/ identifier |
|
122 |
||
123 |
"Modified: / 11-01-2013 / 10:00:12 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
124 |
! |
|
125 |
||
126 |
assignableSelector |
|
127 |
||
128 |
^ (('[' asParser) , constantExpression , (']' asParser)) |
|
129 |
/ (('.' asParser) , identifier) |
|
130 |
||
131 |
! |
|
132 |
||
133 |
assignmentOperator |
|
134 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
135 |
^ (TokenParser for: $=) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
136 |
/ (TokenParser for: #'*=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
137 |
/ (TokenParser for: #'/=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
138 |
/ (TokenParser for: #'~/=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
139 |
/ (TokenParser for: #'%=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
140 |
/ (TokenParser for: #'+=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
141 |
/ (TokenParser for: #'-=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
142 |
/ (TokenParser for: #'<<=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
143 |
/ (('>' asParser) , ('>' asParser) , ('>' asParser) , ('=' asParser)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
144 |
/ (('>' asParser) , ('>' asParser) , ('=' asParser)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
145 |
/ (TokenParser for: #'&=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
146 |
/ (TokenParser for: #'^=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
147 |
/ (TokenParser for: #'|=' ) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
148 |
|
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
149 |
"Modified: / 11-01-2013 / 15:51:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3 | 150 |
! |
151 |
||
152 |
bitwiseAndExpression |
|
153 |
||
154 |
^ (equalityExpression , ((('&' asParser) , equalityExpression) star)) |
|
155 |
/ ((TokenParser for: #super) , ((('&' asParser) , equalityExpression) plus)) |
|
156 |
||
157 |
"Modified: / 11-01-2013 / 10:00:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
158 |
! |
|
159 |
||
160 |
bitwiseOperator |
|
161 |
||
162 |
^ ('&' asParser) |
|
163 |
/ ('^' asParser) |
|
164 |
/ ('|' asParser) |
|
165 |
||
166 |
! |
|
167 |
||
168 |
bitwiseOrExpression |
|
169 |
||
170 |
^ (bitwiseXorExpression , ((('|' asParser) , bitwiseXorExpression) star)) |
|
171 |
/ ((TokenParser for:#super) , ((('|' asParser) , bitwiseXorExpression) plus)) |
|
172 |
||
173 |
! |
|
174 |
||
175 |
bitwiseXorExpression |
|
176 |
||
177 |
^ (bitwiseAndExpression , ((('^' asParser) , bitwiseAndExpression) star)) |
|
178 |
/ ((TokenParser for:#super) , ((('^' asParser) , bitwiseAndExpression) plus)) |
|
179 |
||
180 |
! |
|
181 |
||
182 |
block |
|
183 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
184 |
^(TokenParser for:${) , statements , (TokenParser for:$}) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
185 |
|
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
186 |
"Modified: / 11-01-2013 / 15:06:22 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3 | 187 |
! |
188 |
||
189 |
catchPart |
|
190 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
191 |
^(TokenParser for:#catch) , (TokenParser for:$() , declaredIdentifier , (((',' asParser) , declaredIdentifier) optional) , (TokenParser for:$)) , block |
3 | 192 |
! |
193 |
||
194 |
classDefinition |
|
195 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
196 |
^ ((TokenParser for:#class) , identifier , (typeParameters optional) , (superclass optional) , (interfaces optional) , (TokenParser for:${) , (classMemberDefinition star) , (TokenParser for:$})) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
197 |
/ ((TokenParser for:#class) , identifier , (typeParameters optional) , (interfaces optional) , (TokenParser for:#native) , (TokenParser for:#string) , (TokenParser for:${) , (classMemberDefinition star) , (TokenParser for:$})) |
3 | 198 |
|
199 |
! |
|
200 |
||
201 |
classMemberDefinition |
|
202 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
203 |
^ (declaration , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
204 |
/ (constructorDeclaration , (TokenParser for:$;)) |
3 | 205 |
/ (methodDeclaration , functionBodyOrNative) |
206 |
/ ((TokenParser for:#const) , factoryConstructorDeclaration , functionNative) |
|
207 |
||
208 |
! |
|
209 |
||
210 |
compilationUnit |
|
211 |
||
212 |
^( ((TokenParser for: #'#!!') optional) , (directive star) , (topLevelDefinition star) ) |
|
213 |
||
214 |
"Modified: / 11-01-2013 / 13:18:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
215 |
! |
|
216 |
||
217 |
compoundLiteral |
|
218 |
||
219 |
^ listLiteral |
|
220 |
/ mapLiteral |
|
221 |
||
222 |
! |
|
223 |
||
224 |
conditionalExpression |
|
225 |
||
226 |
^logicalOrExpression , ((('?' asParser) , constantExpression , (':' asParser) , constantExpression) optional) |
|
227 |
! |
|
228 |
||
229 |
constInitializedIdentifier |
|
230 |
||
231 |
^identifier , ((('=' asParser) , constantExpression) optional) |
|
232 |
! |
|
233 |
||
234 |
constInitializedVariableDeclaration |
|
235 |
||
236 |
^declaredIdentifier , ((('=' asParser) , constantExpression) optional) , (((',' asParser) , constInitializedIdentifier) star) |
|
237 |
! |
|
238 |
||
239 |
constantConstructorDeclaration |
|
240 |
||
241 |
^(TokenParser for:#const) , qualified , formalParameterList |
|
242 |
! |
|
243 |
||
244 |
constantExpression |
|
245 |
||
246 |
^ (assignableExpression , assignmentOperator , constantExpression) |
|
247 |
/ conditionalExpression |
|
248 |
||
249 |
! |
|
250 |
||
251 |
constructorDeclaration |
|
252 |
||
253 |
^ (identifier , formalParameterList , ((redirection / initializers ) optional)) |
|
254 |
/ (namedConstructorDeclaration , ((redirection / initializers ) optional)) |
|
255 |
||
256 |
! |
|
257 |
||
258 |
declaration |
|
259 |
||
260 |
^ (constantConstructorDeclaration , ((redirection / initializers ) optional)) |
|
261 |
/ (functionDeclaration , redirection) |
|
262 |
/ (namedConstructorDeclaration , redirection) |
|
263 |
/ ((TokenParser for:#abstract) , specialSignatureDefinition) |
|
264 |
/ ((TokenParser for:#abstract) , functionDeclaration) |
|
265 |
/ ((TokenParser for:#static) , (TokenParser for:#final) , (type optional) , staticFinalDeclarationList) |
|
266 |
/ (((TokenParser for:#static) optional) , constInitializedVariableDeclaration) |
|
267 |
||
268 |
! |
|
269 |
||
270 |
declaredIdentifier |
|
271 |
||
272 |
^ ((TokenParser for:#final) , (type optional) , identifier) |
|
273 |
/ ((TokenParser for:#var) , identifier) |
|
274 |
/ (type , identifier) |
|
275 |
||
276 |
! |
|
277 |
||
278 |
defaultCase |
|
279 |
||
280 |
^(label optional) , (((TokenParser for:#case) , constantExpression , (':' asParser)) star) , (TokenParser for:#default) , (':' asParser) , statements |
|
281 |
! |
|
282 |
||
283 |
defaultFormalParameter |
|
284 |
||
285 |
^normalFormalParameter , ((('=' asParser) , constantExpression) optional) |
|
286 |
! |
|
287 |
||
288 |
directive |
|
289 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
290 |
^('#' asParser) , identifier , arguments , (TokenParser for:$;) |
3 | 291 |
! |
292 |
||
293 |
equalityExpression |
|
294 |
||
295 |
^ (relationalExpression , ((equalityOperator , relationalExpression) optional)) |
|
296 |
/ ((TokenParser for:#super) , equalityOperator , relationalExpression) |
|
297 |
||
298 |
! |
|
299 |
||
300 |
equalityOperator |
|
301 |
||
302 |
^ ('==' asParser) |
|
303 |
/ ('!!=' asParser) |
|
304 |
/ ('===' asParser) |
|
305 |
/ ('!!==' asParser) |
|
306 |
||
307 |
! |
|
308 |
||
309 |
expression |
|
310 |
||
311 |
^ (assignableExpression , assignmentOperator , expression) |
|
312 |
/ conditionalExpression |
|
313 |
||
314 |
"Created: / 11-01-2013 / 13:22:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
315 |
! |
|
316 |
||
317 |
expressionInParentheses |
|
318 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
319 |
^(TokenParser for:$() , constantExpression , (TokenParser for:$)) |
3 | 320 |
! |
321 |
||
322 |
expressionList |
|
323 |
||
324 |
^constantExpression , (((',' asParser) , constantExpression) star) |
|
325 |
! |
|
326 |
||
327 |
factoryConstructorDeclaration |
|
328 |
||
329 |
^(TokenParser for:#factory) , qualified , (typeParameters optional) , ((('.' asParser) , identifier) optional) , formalParameterList |
|
330 |
! |
|
331 |
||
332 |
factorySpecification |
|
333 |
||
334 |
^(TokenParser for:#factory) , type |
|
335 |
! |
|
336 |
||
337 |
fieldFormalParameter |
|
338 |
||
339 |
^(finalVarOrType optional) , (TokenParser for:#this) , ('.' asParser) , identifier |
|
340 |
! |
|
341 |
||
342 |
fieldInitializer |
|
343 |
||
344 |
^(((TokenParser for:#this) , ('.' asParser)) optional) , identifier , ('=' asParser) , conditionalExpression |
|
345 |
! |
|
346 |
||
347 |
finalVarOrType |
|
348 |
||
349 |
^ ((TokenParser for:#final) , (type optional)) |
|
350 |
/ (TokenParser for:#var) |
|
351 |
/ type |
|
352 |
||
353 |
! |
|
354 |
||
355 |
finallyPart |
|
356 |
||
357 |
^(TokenParser for:#finally) , block |
|
358 |
! |
|
359 |
||
360 |
forInitializerStatement |
|
361 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
362 |
^ (initializedVariableDeclaration , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
363 |
/ ((constantExpression optional) , (TokenParser for:$;)) |
3 | 364 |
|
365 |
! |
|
366 |
||
367 |
forLoopParts |
|
368 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
369 |
^ (forInitializerStatement , (constantExpression optional) , (TokenParser for:$;) , (expressionList optional)) |
3 | 370 |
/ (declaredIdentifier , (TokenParser for:#in) , constantExpression) |
371 |
/ (identifier , (TokenParser for:#in) , constantExpression) |
|
372 |
||
373 |
! |
|
374 |
||
375 |
formalParameterList |
|
376 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
377 |
^ ((TokenParser for:$() , (namedFormalParameters optional) , (TokenParser for:$))) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
378 |
/ ((TokenParser for:$() , normalFormalParameter , (normalFormalParameterTail optional) , (TokenParser for:$))) |
3 | 379 |
|
380 |
! |
|
381 |
||
382 |
functionBody |
|
383 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
384 |
^ (('=>' asParser) , constantExpression , (TokenParser for:$;)) |
3 | 385 |
/ block |
386 |
||
387 |
! |
|
388 |
||
389 |
functionBodyOrNative |
|
390 |
||
391 |
^ ((TokenParser for:#native) , functionBody) |
|
392 |
/ functionNative |
|
393 |
/ functionBody |
|
394 |
||
395 |
! |
|
396 |
||
397 |
functionDeclaration |
|
398 |
||
399 |
^(returnType optional) , identifier , formalParameterList |
|
400 |
! |
|
401 |
||
402 |
functionExpression |
|
403 |
||
404 |
^(((returnType optional) , identifier) optional) , formalParameterList , functionExpressionBody |
|
405 |
! |
|
406 |
||
407 |
functionExpressionBody |
|
408 |
||
409 |
^ (('=>' asParser) , constantExpression) |
|
410 |
/ block |
|
411 |
||
412 |
! |
|
413 |
||
414 |
functionNative |
|
415 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
416 |
^(TokenParser for:#native) , ((TokenParser for:#string) optional) , (TokenParser for:$;) |
3 | 417 |
! |
418 |
||
419 |
functionPrefix |
|
420 |
||
421 |
^(returnType optional) , identifier |
|
422 |
! |
|
423 |
||
424 |
functionTypeAlias |
|
425 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
426 |
^(TokenParser for:#typedef) , functionPrefix , (typeParameters optional) , formalParameterList , (TokenParser for:$;) |
3 | 427 |
! |
428 |
||
429 |
getOrSet |
|
430 |
||
431 |
^ (TokenParser for:#get) |
|
432 |
/ (TokenParser for:#set) |
|
433 |
||
434 |
! |
|
435 |
||
436 |
identifier |
|
437 |
||
438 |
^ (TokenParser for:#identifier_no_dollar) |
|
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
439 |
/ (TokenParser for:#Identifier) |
3 | 440 |
/ (TokenParser for:#abstract) |
441 |
/ (TokenParser for:#assert) |
|
442 |
/ (TokenParser for:#class) |
|
443 |
/ (TokenParser for:#extends) |
|
444 |
/ (TokenParser for:#factory) |
|
445 |
/ (TokenParser for:#get) |
|
446 |
/ (TokenParser for:#implements) |
|
447 |
/ (TokenParser for:#import) |
|
448 |
/ (TokenParser for:#interface) |
|
449 |
/ (TokenParser for:#is) |
|
450 |
/ (TokenParser for:#library) |
|
451 |
/ (TokenParser for:#native) |
|
452 |
/ (TokenParser for:#negate) |
|
453 |
/ (TokenParser for:#operator) |
|
454 |
/ (TokenParser for:#set) |
|
455 |
/ (TokenParser for:#source) |
|
456 |
/ (TokenParser for:#static) |
|
457 |
/ (TokenParser for:#typedef) |
|
458 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
459 |
"Modified: / 11-01-2013 / 15:04:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3 | 460 |
! |
461 |
||
462 |
importReference |
|
463 |
||
464 |
^(((TokenParser for:#identifier) , (':' asParser)) optional) , (TokenParser for:#string) |
|
465 |
! |
|
466 |
||
467 |
importReferences |
|
468 |
||
469 |
^importReference , (((',' asParser) , importReference) star) , ((',' asParser) optional) |
|
470 |
! |
|
471 |
||
472 |
incrementOperator |
|
473 |
||
474 |
^ ('++' asParser) |
|
475 |
/ ('--' asParser) |
|
476 |
||
477 |
"Created: / 11-01-2013 / 13:27:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
478 |
! |
|
479 |
||
480 |
initializedIdentifier |
|
481 |
||
482 |
^identifier , ((('=' asParser) , constantExpression) optional) |
|
483 |
! |
|
484 |
||
485 |
initializedIdentifierList |
|
486 |
||
487 |
^initializedIdentifier , (((',' asParser) , initializedIdentifier) star) |
|
488 |
! |
|
489 |
||
490 |
initializedVariableDeclaration |
|
491 |
||
492 |
^declaredIdentifier , ((('=' asParser) , constantExpression) optional) , (((',' asParser) , initializedIdentifier) star) |
|
493 |
! |
|
494 |
||
495 |
initializers |
|
496 |
||
497 |
^(':' asParser) , superCallOrFieldInitializer , (((',' asParser) , superCallOrFieldInitializer) star) |
|
498 |
! |
|
499 |
||
500 |
interfaceDefinition |
|
501 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
502 |
^(TokenParser for:#interface) , identifier , (typeParameters optional) , (superinterfaces optional) , (factorySpecification optional) , (TokenParser for:${) , (interfaceMemberDefinition star) , (TokenParser for:$}) |
3 | 503 |
! |
504 |
||
505 |
interfaceMemberDefinition |
|
506 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
507 |
^ ((TokenParser for:#static) , (TokenParser for:#final) , (type optional) , initializedIdentifierList , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
508 |
/ (functionDeclaration , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
509 |
/ (constantConstructorDeclaration , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
510 |
/ (namedConstructorDeclaration , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
511 |
/ (specialSignatureDefinition , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
512 |
/ (variableDeclaration , (TokenParser for:$;)) |
3 | 513 |
|
514 |
! |
|
515 |
||
516 |
interfaces |
|
517 |
||
518 |
^(TokenParser for:#implements) , typeList |
|
519 |
! |
|
520 |
||
521 |
isOperator |
|
522 |
||
523 |
^(TokenParser for:#is) , (('!!' asParser) optional) |
|
524 |
! |
|
525 |
||
526 |
iterationStatement |
|
527 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
528 |
^ ((TokenParser for:#while) , (TokenParser for:$() , constantExpression , (TokenParser for:$)) , statement) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
529 |
/ ((TokenParser for:#do) , statement , (TokenParser for:#while) , (TokenParser for:$() , constantExpression , (TokenParser for:$)) , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
530 |
/ ((TokenParser for:#for) , (TokenParser for:$() , forLoopParts , (TokenParser for:$)) , statement) |
3 | 531 |
|
532 |
! |
|
533 |
||
534 |
label |
|
535 |
||
536 |
^identifier , (':' asParser) |
|
537 |
! |
|
538 |
||
539 |
libraryBody |
|
540 |
||
541 |
^(libraryImport optional) , (librarySource optional) |
|
542 |
! |
|
543 |
||
544 |
libraryDefinition |
|
545 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
546 |
^(TokenParser for:#library) , (TokenParser for:${) , libraryBody , (TokenParser for:$}) |
3 | 547 |
! |
548 |
||
549 |
libraryImport |
|
550 |
||
551 |
^(TokenParser for:#import) , ('=' asParser) , ('[' asParser) , (importReferences optional) , (']' asParser) |
|
552 |
! |
|
553 |
||
554 |
librarySource |
|
555 |
||
556 |
^(TokenParser for:#source) , ('=' asParser) , ('[' asParser) , (sourceUrls optional) , (']' asParser) |
|
557 |
! |
|
558 |
||
559 |
libraryUnit |
|
560 |
||
561 |
^libraryDefinition end |
|
562 |
||
563 |
"Modified: / 11-01-2013 / 10:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
564 |
! |
|
565 |
||
566 |
listLiteral |
|
567 |
||
568 |
^('[' asParser) , ((expressionList , ((',' asParser) optional)) optional) , (']' asParser) |
|
569 |
! |
|
570 |
||
571 |
literal |
|
572 |
||
573 |
^ (TokenParser for: #null) |
|
574 |
/ (TokenParser for: #true) |
|
575 |
/ (TokenParser for: #false) |
|
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
576 |
/ (TokenParser for: #Integer) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
577 |
/ (TokenParser for: #Float) |
3 | 578 |
/ (TokenParser for:#string) |
579 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
580 |
"Modified: / 11-01-2013 / 15:17:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3 | 581 |
! |
582 |
||
583 |
logicalAndExpression |
|
584 |
||
585 |
^bitwiseOrExpression , ((('&&' asParser) , bitwiseOrExpression) star) |
|
586 |
! |
|
587 |
||
588 |
logicalOrExpression |
|
589 |
||
590 |
^logicalAndExpression , ((('||' asParser) , logicalAndExpression) star) |
|
591 |
! |
|
592 |
||
593 |
mapLiteral |
|
594 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
595 |
^(TokenParser for:${) , ((mapLiteralEntry , (((',' asParser) , mapLiteralEntry) star) , ((',' asParser) optional)) optional) , (TokenParser for:$}) |
3 | 596 |
! |
597 |
||
598 |
mapLiteralEntry |
|
599 |
||
600 |
^(TokenParser for:#string) , (':' asParser) , constantExpression |
|
601 |
! |
|
602 |
||
603 |
methodDeclaration |
|
604 |
||
605 |
^ factoryConstructorDeclaration |
|
606 |
/ ((TokenParser for:#static) , functionDeclaration) |
|
607 |
/ specialSignatureDefinition |
|
608 |
/ (functionDeclaration , (initializers optional)) |
|
609 |
/ (namedConstructorDeclaration , (initializers optional)) |
|
610 |
||
611 |
! |
|
612 |
||
613 |
multiplicativeExpression |
|
614 |
||
615 |
^ (unaryExpression , ((multiplicativeOperator , unaryExpression) star)) |
|
616 |
/ ((TokenParser for:#super) , ((multiplicativeOperator , unaryExpression) plus)) |
|
617 |
||
618 |
! |
|
619 |
||
620 |
multiplicativeOperator |
|
621 |
||
622 |
^ ('*' asParser) |
|
623 |
/ ('/' asParser) |
|
624 |
/ ('%' asParser) |
|
625 |
/ ('~/' asParser) |
|
626 |
||
627 |
! |
|
628 |
||
629 |
namedArgument |
|
630 |
||
631 |
^label , constantExpression |
|
632 |
! |
|
633 |
||
634 |
namedConstructorDeclaration |
|
635 |
||
636 |
^identifier , ('.' asParser) , identifier , formalParameterList |
|
637 |
! |
|
638 |
||
639 |
namedFormalParameters |
|
640 |
||
641 |
^('[' asParser) , defaultFormalParameter , (((',' asParser) , defaultFormalParameter) star) , (']' asParser) |
|
642 |
! |
|
643 |
||
644 |
negateOperator |
|
645 |
||
646 |
^ ('!!' asParser) |
|
647 |
/ ('~' asParser) |
|
648 |
||
649 |
! |
|
650 |
||
651 |
nonLabelledStatement |
|
652 |
||
653 |
^ block |
|
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
654 |
/ (initializedVariableDeclaration , (TokenParser for:$;)) |
3 | 655 |
/ iterationStatement |
656 |
/ selectionStatement |
|
657 |
/ tryStatement |
|
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
658 |
/ ((TokenParser for: #break) , (identifier optional) , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
659 |
/ ((TokenParser for: #continue) , (identifier optional) , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
660 |
/ ((TokenParser for: #return) , (constantExpression optional) , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
661 |
/ ((TokenParser for: #throw) , (constantExpression optional) , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
662 |
/ ((constantExpression optional) , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
663 |
/ ((TokenParser for: #assert) , (TokenParser for:$() , conditionalExpression , (TokenParser for:$)) , (TokenParser for:$;)) |
3 | 664 |
/ (functionDeclaration , functionBody) |
665 |
||
666 |
"Modified: / 11-01-2013 / 10:09:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
667 |
! |
|
668 |
||
669 |
normalFormalParameter |
|
670 |
||
671 |
^ functionDeclaration |
|
672 |
/ fieldFormalParameter |
|
673 |
/ simpleFormalParameter |
|
674 |
||
675 |
! |
|
676 |
||
677 |
normalFormalParameterTail |
|
678 |
||
679 |
^ ((',' asParser) , namedFormalParameters) |
|
680 |
/ ((',' asParser) , normalFormalParameter , (normalFormalParameterTail optional)) |
|
681 |
||
682 |
! |
|
683 |
||
684 |
postfixExpression |
|
685 |
||
686 |
^ (assignableExpression , postfixOperator) |
|
687 |
/ (primary , (selector star)) |
|
688 |
||
689 |
! |
|
690 |
||
691 |
postfixOperator |
|
692 |
||
693 |
^ ('++' asParser) |
|
694 |
/ ('--' asParser) |
|
695 |
||
696 |
! |
|
697 |
||
698 |
prefixOperator |
|
699 |
||
700 |
^ additiveOperator |
|
701 |
/ negateOperator |
|
702 |
||
703 |
! |
|
704 |
||
705 |
primary |
|
706 |
||
707 |
^ primaryNoFE |
|
708 |
/ primaryFE |
|
709 |
||
710 |
! |
|
711 |
||
712 |
primaryFE |
|
713 |
||
714 |
^ functionExpression |
|
715 |
/ primaryNoFE |
|
716 |
||
717 |
! |
|
718 |
||
719 |
primaryNoFE |
|
720 |
||
721 |
^ (TokenParser for:#this) |
|
722 |
/ ((TokenParser for:#super) , assignableSelector) |
|
723 |
/ literal |
|
724 |
/ identifier |
|
725 |
/ (((TokenParser for:#const) optional) , (typeArguments optional) , compoundLiteral) |
|
726 |
/ (((TokenParser for: #new) / (TokenParser for:#const) ) , type , ((('.' asParser) , identifier) optional) , arguments) |
|
727 |
/ expressionInParentheses |
|
728 |
||
729 |
"Modified: / 11-01-2013 / 10:09:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
730 |
! |
|
731 |
||
732 |
qualified |
|
733 |
||
734 |
^identifier , ((('.' asParser) , identifier) optional) |
|
735 |
! |
|
736 |
||
737 |
redirection |
|
738 |
||
739 |
^(':' asParser) , (TokenParser for:#this) , ((('.' asParser) , identifier) optional) , arguments |
|
740 |
! |
|
741 |
||
742 |
relationalExpression |
|
743 |
||
744 |
^ (shiftExpression , (((isOperator , type) / (relationalOperator , shiftExpression) ) optional)) |
|
745 |
/ ((TokenParser for:#super) , relationalOperator , shiftExpression) |
|
746 |
||
747 |
! |
|
748 |
||
749 |
relationalOperator |
|
750 |
||
751 |
^ (('>' asParser) , ('=' asParser)) |
|
752 |
/ ('>' asParser) |
|
753 |
/ ('<=' asParser) |
|
754 |
/ ('<' asParser) |
|
755 |
||
756 |
! |
|
757 |
||
758 |
returnType |
|
759 |
||
760 |
^ (TokenParser for: #void) |
|
761 |
/ type |
|
762 |
||
763 |
"Modified: / 11-01-2013 / 10:09:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
764 |
! |
|
765 |
||
766 |
selectionStatement |
|
767 |
||
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
768 |
^ ((TokenParser for: #if) , (TokenParser for:$() , constantExpression , (TokenParser for:$)) , statement , (((TokenParser for: #else) , statement) optional)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
769 |
/ ((TokenParser for: #switch) , (TokenParser for:$() , constantExpression , (TokenParser for:$)) , (TokenParser for:${) , (switchCase star) , (defaultCase optional) , (TokenParser for:$})) |
3 | 770 |
|
771 |
"Modified: / 11-01-2013 / 10:10:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
772 |
! |
|
773 |
||
774 |
selector |
|
775 |
||
776 |
^ assignableSelector |
|
777 |
/ arguments |
|
778 |
||
779 |
! |
|
780 |
||
781 |
shiftExpression |
|
782 |
||
783 |
^ (additiveExpression , ((shiftOperator , additiveExpression) star)) |
|
784 |
/ ((TokenParser for:#super) , ((shiftOperator , additiveExpression) plus)) |
|
785 |
||
786 |
! |
|
787 |
||
788 |
shiftOperator |
|
789 |
||
790 |
^ ('<<' asParser) |
|
791 |
/ (('>' asParser) , ('>' asParser) , ('>' asParser)) |
|
792 |
/ (('>' asParser) , ('>' asParser)) |
|
793 |
||
794 |
! |
|
795 |
||
796 |
simpleFormalParameter |
|
797 |
||
798 |
^ declaredIdentifier |
|
799 |
/ identifier |
|
800 |
||
801 |
! |
|
802 |
||
803 |
sourceUrls |
|
804 |
||
805 |
^(TokenParser for:#string) , (((',' asParser) , (TokenParser for:#string)) star) , ((',' asParser) optional) |
|
806 |
! |
|
807 |
||
808 |
specialSignatureDefinition |
|
809 |
||
810 |
^ (((TokenParser for:#static) optional) , (returnType optional) , getOrSet , identifier , formalParameterList) |
|
811 |
/ ((returnType optional) , (TokenParser for: #operator) , userDefinableOperator , formalParameterList) |
|
812 |
||
813 |
"Modified: / 11-01-2013 / 10:10:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
814 |
! |
|
815 |
||
816 |
statement |
|
817 |
||
818 |
^(label star) , nonLabelledStatement |
|
819 |
! |
|
820 |
||
821 |
statements |
|
822 |
||
823 |
^statement star |
|
824 |
! |
|
825 |
||
826 |
staticFinalDeclaration |
|
827 |
||
828 |
^identifier , ('=' asParser) , constantExpression |
|
829 |
! |
|
830 |
||
831 |
staticFinalDeclarationList |
|
832 |
||
833 |
^staticFinalDeclaration , (((',' asParser) , staticFinalDeclaration) star) |
|
834 |
! |
|
835 |
||
836 |
superCallOrFieldInitializer |
|
837 |
||
838 |
^ ((TokenParser for:#super) , arguments) |
|
839 |
/ ((TokenParser for:#super) , ('.' asParser) , identifier , arguments) |
|
840 |
/ fieldInitializer |
|
841 |
||
842 |
! |
|
843 |
||
844 |
superclass |
|
845 |
||
846 |
^(TokenParser for: #extends) , type |
|
847 |
||
848 |
"Modified: / 11-01-2013 / 10:10:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
849 |
! |
|
850 |
||
851 |
superinterfaces |
|
852 |
||
853 |
^(TokenParser for: #extends) , typeList |
|
854 |
||
855 |
"Modified: / 11-01-2013 / 10:10:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
856 |
! |
|
857 |
||
858 |
switchCase |
|
859 |
||
860 |
^(label optional) , (((TokenParser for:#case) , constantExpression , (':' asParser)) plus) , statements |
|
861 |
! |
|
862 |
||
863 |
topLevelDefinition |
|
864 |
||
865 |
^ classDefinition |
|
866 |
/ interfaceDefinition |
|
867 |
/ functionTypeAlias |
|
868 |
/ (functionDeclaration , functionBodyOrNative) |
|
869 |
/ ((returnType optional) , getOrSet , identifier , formalParameterList , functionBodyOrNative) |
|
6
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
870 |
/ ((TokenParser for:#final) , (type optional) , staticFinalDeclarationList , (TokenParser for:$;)) |
06efdfe62106
More tests and fixes for Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
871 |
/ (constInitializedVariableDeclaration , (TokenParser for:$;)) |
3 | 872 |
|
873 |
! |
|
874 |
||
875 |
tryStatement |
|
876 |
||
877 |
^(TokenParser for: #try) , block , (((catchPart plus) , (finallyPart optional)) / finallyPart ) |
|
878 |
||
879 |
"Modified: / 11-01-2013 / 10:10:54 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
880 |
! |
|
881 |
||
882 |
type |
|
883 |
||
884 |
^qualified , (typeArguments optional) |
|
885 |
! |
|
886 |
||
887 |
typeArguments |
|
888 |
||
889 |
^('<' asParser) , typeList , ('>' asParser) |
|
890 |
! |
|
891 |
||
892 |
typeList |
|
893 |
||
894 |
^type , (((',' asParser) , type) star) |
|
895 |
! |
|
896 |
||
897 |
typeParameter |
|
898 |
||
899 |
^identifier , (((TokenParser for: #extends) , type) optional) |
|
900 |
||
901 |
"Modified: / 11-01-2013 / 10:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
902 |
! |
|
903 |
||
904 |
typeParameters |
|
905 |
||
906 |
^('<' asParser) , typeParameter , (((',' asParser) , typeParameter) star) , ('>' asParser) |
|
907 |
! |
|
908 |
||
909 |
unaryExpression |
|
910 |
||
911 |
^ postfixExpression |
|
912 |
/ (prefixOperator , unaryExpression) |
|
913 |
/ (negateOperator , (TokenParser for:#super)) |
|
914 |
/ (('-' asParser) , (TokenParser for:#super)) |
|
915 |
/ (postfixOperator , assignableExpression) |
|
916 |
||
917 |
! |
|
918 |
||
919 |
userDefinableOperator |
|
920 |
||
921 |
^ multiplicativeOperator |
|
922 |
/ additiveOperator |
|
923 |
/ shiftOperator |
|
924 |
/ relationalOperator |
|
925 |
/ bitwiseOperator |
|
926 |
/ ('==' asParser) |
|
927 |
/ ('~' asParser) |
|
928 |
/ (TokenParser for: #negate) |
|
929 |
/ (('[' asParser) , (']' asParser)) |
|
930 |
/ (('[' asParser) , (']' asParser) , ('=' asParser)) |
|
931 |
||
932 |
"Modified: / 11-01-2013 / 10:11:13 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
933 |
! |
|
934 |
||
935 |
variableDeclaration |
|
936 |
||
937 |
^declaredIdentifier , (((',' asParser) , identifier) star) |
|
938 |
! ! |
|
939 |
||
940 |
!Parser methodsFor:'initialization'! |
|
941 |
||
942 |
initializeStartingAt: aSymbol |
|
943 |
| allVariableNames ignoredVariableNames productionIndexesAndNames debugger | |
|
944 |
self initialize. |
|
945 |
||
946 |
Debugging ifTrue:[ |
|
947 |
PPDebugger notNil ifTrue:[ |
|
948 |
self assert: (Smalltalk loadPackage: 'stx:goodies/petitparser/devtools'). |
|
949 |
debugger := PPDebugger new |
|
950 |
]. |
|
951 |
]. |
|
952 |
"find all the productions that need to be initialized" |
|
953 |
allVariableNames := self class allInstVarNames |
|
954 |
collect: [ :each | each asSymbol ]. |
|
955 |
ignoredVariableNames := self class ignoredNames |
|
956 |
collect: [ :each | each asSymbol ]. |
|
957 |
productionIndexesAndNames := ((1 to: self class instSize) |
|
958 |
collect: [ :index | index -> (allVariableNames at: index) ]) |
|
959 |
reject: [ :assoc | ignoredVariableNames includes: assoc value ]. |
|
960 |
||
961 |
"initialize productions with an undefined parser to be replaced later" |
|
962 |
parser := PPUnresolvedParser named: aSymbol. |
|
963 |
productionIndexesAndNames do: [ :assoc | |
|
964 |
self instVarAt: assoc key put: (PPUnresolvedParser named: assoc value) ]. |
|
965 |
parser def: (self perform: aSymbol). |
|
966 |
||
967 |
"resolve unresolved parsers with their actual implementation" |
|
968 |
productionIndexesAndNames do: [ :assoc | |
|
969 |
(self respondsTo: assoc value) |
|
970 |
ifFalse: [ self error: 'Unable to initialize ' , assoc value printString ] |
|
971 |
ifTrue: [ |
|
972 |
| production | |
|
973 |
production := ((self perform: assoc value) name: assoc value; yourself). |
|
974 |
Debugging ifTrue:[ |
|
975 |
production := PPDebuggingParser parser: production debugger: debugger |
|
976 |
]. |
|
977 |
||
978 |
(self instVarAt: assoc key) def: production. |
|
979 |
||
980 |
] ] |
|
981 |
||
982 |
"Created: / 12-03-2012 / 16:51:01 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
983 |
"Modified: / 11-01-2013 / 11:35:52 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
984 |
! ! |
|
985 |
||
1
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
986 |
!Parser::TokenParser class methodsFor:'instance creation'! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
987 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
988 |
for: tokenType |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
989 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
990 |
^self new tokenType: tokenType |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
991 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
992 |
"Created: / 14-03-2012 / 23:10:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
993 |
! ! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
994 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
995 |
!Parser::TokenParser methodsFor:'accessing'! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
996 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
997 |
tokenType |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
998 |
^ tokenType |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
999 |
! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1000 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1001 |
tokenType:aSymbol |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1002 |
tokenType := aSymbol. |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1003 |
! ! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1004 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1005 |
!Parser::TokenParser methodsFor:'parsing'! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1006 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1007 |
parseOn:aJavaScanner |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1008 |
"Parse aStream with the receiving parser and answer the parse-result or an instance of PPFailure. |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1009 |
Override this method in subclasses to specify custom parse behavior. Do not call this method from outside, |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1010 |
instead use #parse:." |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1011 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1012 |
| pos | |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1013 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1014 |
pos := aJavaScanner position. |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1015 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1016 |
^(aJavaScanner nextToken = tokenType) ifTrue:[ |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1017 |
aJavaScanner token |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1018 |
] ifFalse:[ |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1019 |
aJavaScanner position: pos. |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1020 |
PPFailure message: (tokenType printString , ' token expected (got ', aJavaScanner tokenType , ' {',(aJavaScanner tokenValue ? '<nil>') printString,'})') at: aJavaScanner position |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1021 |
] |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1022 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1023 |
"Modified: / 17-03-2012 / 13:34:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1024 |
! ! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1025 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1026 |
!Parser class methodsFor:'documentation'! |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1027 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1028 |
version_HG |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1029 |
|
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1030 |
^ '$Changeset: <not expanded> $' |
46dd2b3b6974
Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1031 |
! ! |
3 | 1032 |
|
1033 |
Parser initialize! |