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 dart2js.parser; | 5 library dart2js.parser; |
6 | 6 |
7 import '../options.dart' show ParserOptions; | 7 import '../options.dart' show ParserOptions; |
8 import '../common.dart'; | 8 import '../common.dart'; |
9 import '../tokens/keyword.dart' show Keyword; | 9 import '../tokens/keyword.dart' show Keyword; |
10 import '../tokens/precedence.dart' show PrecedenceInfo; | 10 import '../tokens/precedence.dart' show PrecedenceInfo; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 */ | 97 */ |
98 class Parser { | 98 class Parser { |
99 final Listener listener; | 99 final Listener listener; |
100 final ParserOptions parserOptions; | 100 final ParserOptions parserOptions; |
101 bool mayParseFunctionExpressions = true; | 101 bool mayParseFunctionExpressions = true; |
102 bool asyncAwaitKeywordsEnabled; | 102 bool asyncAwaitKeywordsEnabled; |
103 | 103 |
104 final bool enableGenericMethodSyntax; | 104 final bool enableGenericMethodSyntax; |
105 | 105 |
106 Parser(this.listener, ParserOptions parserOptions, | 106 Parser(this.listener, ParserOptions parserOptions, |
107 {this.asyncAwaitKeywordsEnabled: false}) : | 107 {this.asyncAwaitKeywordsEnabled: false}) |
108 parserOptions = parserOptions, | 108 : parserOptions = parserOptions, |
109 enableGenericMethodSyntax = parserOptions.enableGenericMethodSyntax; | 109 enableGenericMethodSyntax = parserOptions.enableGenericMethodSyntax; |
110 | 110 |
111 Token parseUnit(Token token) { | 111 Token parseUnit(Token token) { |
112 listener.beginCompilationUnit(token); | 112 listener.beginCompilationUnit(token); |
113 int count = 0; | 113 int count = 0; |
114 while (!identical(token.kind, EOF_TOKEN)) { | 114 while (!identical(token.kind, EOF_TOKEN)) { |
115 token = parseTopLevelDeclaration(token); | 115 token = parseTopLevelDeclaration(token); |
116 listener.endTopLevelDeclaration(token); | 116 listener.endTopLevelDeclaration(token); |
117 count++; | 117 count++; |
118 } | 118 } |
119 listener.endCompilationUnit(count, token); | 119 listener.endCompilationUnit(count, token); |
(...skipping 2185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2305 mayParseFunctionExpressions = old; | 2305 mayParseFunctionExpressions = old; |
2306 listener.handleLiteralMap(count, beginToken, constKeyword, token); | 2306 listener.handleLiteralMap(count, beginToken, constKeyword, token); |
2307 return expect('}', token); | 2307 return expect('}', token); |
2308 } | 2308 } |
2309 | 2309 |
2310 /// formalParameterList functionBody. | 2310 /// formalParameterList functionBody. |
2311 /// | 2311 /// |
2312 /// This is a suffix parser because it is assumed that type arguments have | 2312 /// This is a suffix parser because it is assumed that type arguments have |
2313 /// been parsed, or `listener.handleNoTypeArguments(..)` has been executed. | 2313 /// been parsed, or `listener.handleNoTypeArguments(..)` has been executed. |
2314 Token parseLiteralFunctionSuffix(Token token) { | 2314 Token parseLiteralFunctionSuffix(Token token) { |
2315 assert(optional('(',token)); | 2315 assert(optional('(', token)); |
2316 BeginGroupToken beginGroup = token; | 2316 BeginGroupToken beginGroup = token; |
2317 if (beginGroup.endGroup != null) { | 2317 if (beginGroup.endGroup != null) { |
2318 Token nextToken = beginGroup.endGroup.next; | 2318 Token nextToken = beginGroup.endGroup.next; |
2319 int kind = nextToken.kind; | 2319 int kind = nextToken.kind; |
2320 if (identical(kind, FUNCTION_TOKEN) || | 2320 if (identical(kind, FUNCTION_TOKEN) || |
2321 identical(kind, OPEN_CURLY_BRACKET_TOKEN) || | 2321 identical(kind, OPEN_CURLY_BRACKET_TOKEN) || |
2322 (identical(kind, KEYWORD_TOKEN) && | 2322 (identical(kind, KEYWORD_TOKEN) && |
2323 (nextToken.value == 'async' || nextToken.value == 'sync'))) { | 2323 (nextToken.value == 'async' || nextToken.value == 'sync'))) { |
2324 return parseUnnamedFunction(token); | 2324 return parseUnnamedFunction(token); |
2325 } | 2325 } |
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2982 } | 2982 } |
2983 listener.handleContinueStatement(hasTarget, continueKeyword, token); | 2983 listener.handleContinueStatement(hasTarget, continueKeyword, token); |
2984 return expectSemicolon(token); | 2984 return expectSemicolon(token); |
2985 } | 2985 } |
2986 | 2986 |
2987 Token parseEmptyStatement(Token token) { | 2987 Token parseEmptyStatement(Token token) { |
2988 listener.handleEmptyStatement(token); | 2988 listener.handleEmptyStatement(token); |
2989 return expectSemicolon(token); | 2989 return expectSemicolon(token); |
2990 } | 2990 } |
2991 } | 2991 } |
OLD | NEW |