| 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 library fasta.parser.parser; | 5 library fasta.parser.parser; |
| 6 | 6 |
| 7 import '../scanner.dart' show ErrorToken; | 7 import '../scanner.dart' show ErrorToken; |
| 8 | 8 |
| 9 import '../scanner/recover.dart' show closeBraceFor, skipToEof; | 9 import '../scanner/recover.dart' show closeBraceFor, skipToEof; |
| 10 | 10 |
| (...skipping 3186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3197 listener.endElseStatement(token); | 3197 listener.endElseStatement(token); |
| 3198 } | 3198 } |
| 3199 listener.endIfStatement(ifToken, elseToken); | 3199 listener.endIfStatement(ifToken, elseToken); |
| 3200 return token; | 3200 return token; |
| 3201 } | 3201 } |
| 3202 | 3202 |
| 3203 Token parseForStatement(Token awaitToken, Token token) { | 3203 Token parseForStatement(Token awaitToken, Token token) { |
| 3204 Token forToken = token; | 3204 Token forToken = token; |
| 3205 listener.beginForStatement(forToken); | 3205 listener.beginForStatement(forToken); |
| 3206 token = expect('for', token); | 3206 token = expect('for', token); |
| 3207 Token leftParenthesis = token; |
| 3207 token = expect('(', token); | 3208 token = expect('(', token); |
| 3208 token = parseVariablesDeclarationOrExpressionOpt(token); | 3209 token = parseVariablesDeclarationOrExpressionOpt(token); |
| 3209 if (optional('in', token)) { | 3210 if (optional('in', token)) { |
| 3210 return parseForInRest(awaitToken, forToken, token); | 3211 return parseForInRest(awaitToken, forToken, leftParenthesis, token); |
| 3211 } else { | 3212 } else { |
| 3212 if (awaitToken != null) { | 3213 if (awaitToken != null) { |
| 3213 reportRecoverableError(awaitToken, ErrorKind.InvalidAwaitFor); | 3214 reportRecoverableError(awaitToken, ErrorKind.InvalidAwaitFor); |
| 3214 } | 3215 } |
| 3215 return parseForRest(forToken, token); | 3216 return parseForRest(forToken, token); |
| 3216 } | 3217 } |
| 3217 } | 3218 } |
| 3218 | 3219 |
| 3219 Token parseVariablesDeclarationOrExpressionOpt(Token token) { | 3220 Token parseVariablesDeclarationOrExpressionOpt(Token token) { |
| 3220 final String value = token.stringValue; | 3221 final String value = token.stringValue; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3253 } | 3254 } |
| 3254 } | 3255 } |
| 3255 token = expect(')', token); | 3256 token = expect(')', token); |
| 3256 listener.beginForStatementBody(token); | 3257 listener.beginForStatementBody(token); |
| 3257 token = parseStatement(token); | 3258 token = parseStatement(token); |
| 3258 listener.endForStatementBody(token); | 3259 listener.endForStatementBody(token); |
| 3259 listener.endForStatement(expressionCount, forToken, token); | 3260 listener.endForStatement(expressionCount, forToken, token); |
| 3260 return token; | 3261 return token; |
| 3261 } | 3262 } |
| 3262 | 3263 |
| 3263 Token parseForInRest(Token awaitToken, Token forToken, Token token) { | 3264 Token parseForInRest( |
| 3265 Token awaitToken, Token forToken, Token leftParenthesis, Token token) { |
| 3264 assert(optional('in', token)); | 3266 assert(optional('in', token)); |
| 3265 Token inKeyword = token; | 3267 Token inKeyword = token; |
| 3266 token = token.next; | 3268 token = token.next; |
| 3267 listener.beginForInExpression(token); | 3269 listener.beginForInExpression(token); |
| 3268 token = parseExpression(token); | 3270 token = parseExpression(token); |
| 3269 listener.endForInExpression(token); | 3271 listener.endForInExpression(token); |
| 3272 Token rightParenthesis = token; |
| 3270 token = expect(')', token); | 3273 token = expect(')', token); |
| 3271 listener.beginForInBody(token); | 3274 listener.beginForInBody(token); |
| 3272 token = parseStatement(token); | 3275 token = parseStatement(token); |
| 3273 listener.endForInBody(token); | 3276 listener.endForInBody(token); |
| 3274 listener.endForIn(awaitToken, forToken, inKeyword, token); | 3277 listener.endForIn(awaitToken, forToken, leftParenthesis, inKeyword, |
| 3278 rightParenthesis, token); |
| 3275 return token; | 3279 return token; |
| 3276 } | 3280 } |
| 3277 | 3281 |
| 3278 Token parseWhileStatement(Token token) { | 3282 Token parseWhileStatement(Token token) { |
| 3279 Token whileToken = token; | 3283 Token whileToken = token; |
| 3280 listener.beginWhileStatement(whileToken); | 3284 listener.beginWhileStatement(whileToken); |
| 3281 token = expect('while', token); | 3285 token = expect('while', token); |
| 3282 token = parseParenthesizedExpression(token); | 3286 token = parseParenthesizedExpression(token); |
| 3283 listener.beginWhileStatementBody(token); | 3287 listener.beginWhileStatementBody(token); |
| 3284 token = parseStatement(token); | 3288 token = parseStatement(token); |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3597 break; | 3601 break; |
| 3598 } | 3602 } |
| 3599 if (isRecoverable) { | 3603 if (isRecoverable) { |
| 3600 listener.handleRecoverableError(token, kind, arguments); | 3604 listener.handleRecoverableError(token, kind, arguments); |
| 3601 return null; | 3605 return null; |
| 3602 } else { | 3606 } else { |
| 3603 return listener.handleUnrecoverableError(token, kind, arguments); | 3607 return listener.handleUnrecoverableError(token, kind, arguments); |
| 3604 } | 3608 } |
| 3605 } | 3609 } |
| 3606 } | 3610 } |
| OLD | NEW |