OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 final bool VERBOSE = false; | 5 final bool VERBOSE = false; |
6 | 6 |
7 /** | 7 /** |
8 * A parser event listener that does nothing except throw exceptions | 8 * A parser event listener that does nothing except throw exceptions |
9 * on parser errors. | 9 * on parser errors. |
10 */ | 10 */ |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 | 298 |
299 void endVariablesDeclaration(int count, Token endToken) { | 299 void endVariablesDeclaration(int count, Token endToken) { |
300 } | 300 } |
301 | 301 |
302 void beginWhileStatement(Token token) { | 302 void beginWhileStatement(Token token) { |
303 } | 303 } |
304 | 304 |
305 void endWhileStatement(Token whileKeyword, Token endToken) { | 305 void endWhileStatement(Token whileKeyword, Token endToken) { |
306 } | 306 } |
307 | 307 |
| 308 void handleAsOperator(Token operathor, Token endToken) { |
| 309 // TODO(ahe): Rename [operathor] to "operator" when VM bug is fixed. |
| 310 } |
| 311 |
308 void handleAssignmentExpression(Token token) { | 312 void handleAssignmentExpression(Token token) { |
309 } | 313 } |
310 | 314 |
311 void handleBinaryExpression(Token token) { | 315 void handleBinaryExpression(Token token) { |
312 } | 316 } |
313 | 317 |
314 void handleConditionalExpression(Token question, Token colon) { | 318 void handleConditionalExpression(Token question, Token colon) { |
315 } | 319 } |
316 | 320 |
317 void handleConstExpression(Token token, bool named) { | 321 void handleConstExpression(Token token, bool named) { |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1048 } | 1052 } |
1049 | 1053 |
1050 void beginCascade(Token token) { | 1054 void beginCascade(Token token) { |
1051 pushNode(new CascadeReceiver(popNode(), token)); | 1055 pushNode(new CascadeReceiver(popNode(), token)); |
1052 } | 1056 } |
1053 | 1057 |
1054 void endCascade() { | 1058 void endCascade() { |
1055 pushNode(new Cascade(popNode())); | 1059 pushNode(new Cascade(popNode())); |
1056 } | 1060 } |
1057 | 1061 |
| 1062 void handleAsOperator(Token operathor, Token endToken) { |
| 1063 TypeAnnotation type = popNode(); |
| 1064 Expression expression = popNode(); |
| 1065 NodeList arguments = new NodeList.singleton(type); |
| 1066 pushNode(new Send(expression, new Operator(operathor), arguments)); |
| 1067 } |
| 1068 |
1058 void handleAssignmentExpression(Token token) { | 1069 void handleAssignmentExpression(Token token) { |
1059 Node arg = popNode(); | 1070 Node arg = popNode(); |
1060 Node node = popNode(); | 1071 Node node = popNode(); |
1061 Send send = node.asSend(); | 1072 Send send = node.asSend(); |
1062 if (send === null) internalError(node: node); | 1073 if (send === null) internalError(node: node); |
1063 if (!(send.isPropertyAccess || send.isIndex)) internalError(node: send); | 1074 if (!(send.isPropertyAccess || send.isIndex)) internalError(node: send); |
1064 if (send.asSendSet() !== null) internalError(node: send); | 1075 if (send.asSendSet() !== null) internalError(node: send); |
1065 NodeList arguments; | 1076 NodeList arguments; |
1066 if (send.isIndex) { | 1077 if (send.isIndex) { |
1067 Link<Node> link = new Link<Node>(arg); | 1078 Link<Node> link = new Link<Node>(arg); |
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1529 | 1540 |
1530 Node parse(DiagnosticListener diagnosticListener, | 1541 Node parse(DiagnosticListener diagnosticListener, |
1531 CompilationUnitElement element, | 1542 CompilationUnitElement element, |
1532 doParse(Parser parser)) { | 1543 doParse(Parser parser)) { |
1533 NodeListener listener = new NodeListener(diagnosticListener, element); | 1544 NodeListener listener = new NodeListener(diagnosticListener, element); |
1534 doParse(new Parser(listener)); | 1545 doParse(new Parser(listener)); |
1535 Node node = listener.popNode(); | 1546 Node node = listener.popNode(); |
1536 assert(listener.nodes.isEmpty()); | 1547 assert(listener.nodes.isEmpty()); |
1537 return node; | 1548 return node; |
1538 } | 1549 } |
OLD | NEW |