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 2997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3008 } else { | 3008 } else { |
3009 listener.handleNoArguments(token); | 3009 listener.handleNoArguments(token); |
3010 token = reportUnrecoverableError(token, ErrorKind.UnexpectedToken)?.next; | 3010 token = reportUnrecoverableError(token, ErrorKind.UnexpectedToken)?.next; |
3011 } | 3011 } |
3012 return token; | 3012 return token; |
3013 } | 3013 } |
3014 | 3014 |
3015 Token parseNewExpression(Token token) { | 3015 Token parseNewExpression(Token token) { |
3016 Token newKeyword = token; | 3016 Token newKeyword = token; |
3017 token = expect('new', token); | 3017 token = expect('new', token); |
| 3018 listener.beginNewExpression(newKeyword); |
3018 token = parseConstructorReference(token); | 3019 token = parseConstructorReference(token); |
3019 token = parseRequiredArguments(token); | 3020 token = parseRequiredArguments(token); |
3020 listener.handleNewExpression(newKeyword); | 3021 listener.endNewExpression(newKeyword); |
3021 return token; | 3022 return token; |
3022 } | 3023 } |
3023 | 3024 |
3024 Token parseConstExpression(Token token) { | 3025 Token parseConstExpression(Token token) { |
3025 Token constKeyword = token; | 3026 Token constKeyword = token; |
3026 token = expect('const', token); | 3027 token = expect('const', token); |
3027 final String value = token.stringValue; | 3028 final String value = token.stringValue; |
3028 if ((identical(value, '[')) || (identical(value, '[]'))) { | 3029 if ((identical(value, '[')) || (identical(value, '[]'))) { |
3029 listener.handleNoTypeArguments(token); | 3030 listener.handleNoTypeArguments(token); |
3030 return parseLiteralListSuffix(token, constKeyword); | 3031 return parseLiteralListSuffix(token, constKeyword); |
3031 } | 3032 } |
3032 if (identical(value, '{')) { | 3033 if (identical(value, '{')) { |
3033 listener.handleNoTypeArguments(token); | 3034 listener.handleNoTypeArguments(token); |
3034 return parseLiteralMapSuffix(token, constKeyword); | 3035 return parseLiteralMapSuffix(token, constKeyword); |
3035 } | 3036 } |
3036 if (identical(value, '<')) { | 3037 if (identical(value, '<')) { |
3037 return parseLiteralListOrMapOrFunction(token, constKeyword); | 3038 return parseLiteralListOrMapOrFunction(token, constKeyword); |
3038 } | 3039 } |
| 3040 listener.beginConstExpression(constKeyword); |
3039 token = parseConstructorReference(token); | 3041 token = parseConstructorReference(token); |
3040 token = parseRequiredArguments(token); | 3042 token = parseRequiredArguments(token); |
3041 listener.handleConstExpression(constKeyword); | 3043 listener.endConstExpression(constKeyword); |
3042 return token; | 3044 return token; |
3043 } | 3045 } |
3044 | 3046 |
3045 Token parseLiteralInt(Token token) { | 3047 Token parseLiteralInt(Token token) { |
3046 listener.handleLiteralInt(token); | 3048 listener.handleLiteralInt(token); |
3047 return token.next; | 3049 return token.next; |
3048 } | 3050 } |
3049 | 3051 |
3050 Token parseLiteralDouble(Token token) { | 3052 Token parseLiteralDouble(Token token) { |
3051 listener.handleLiteralDouble(token); | 3053 listener.handleLiteralDouble(token); |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3697 break; | 3699 break; |
3698 } | 3700 } |
3699 if (isRecoverable) { | 3701 if (isRecoverable) { |
3700 listener.handleRecoverableError(token, kind, arguments); | 3702 listener.handleRecoverableError(token, kind, arguments); |
3701 return null; | 3703 return null; |
3702 } else { | 3704 } else { |
3703 return listener.handleUnrecoverableError(token, kind, arguments); | 3705 return listener.handleUnrecoverableError(token, kind, arguments); |
3704 } | 3706 } |
3705 } | 3707 } |
3706 } | 3708 } |
OLD | NEW |