Chromium Code Reviews| 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 '../diagnostics/messages.dart' show | 7 import '../diagnostics/messages.dart' show |
| 8 MessageKind; | 8 MessageKind; |
| 9 import '../tokens/keyword.dart' show | 9 import '../tokens/keyword.dart' show |
| 10 Keyword; | 10 Keyword; |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 145 Token libraryKeyword = token; | 145 Token libraryKeyword = token; |
| 146 listener.beginLibraryName(libraryKeyword); | 146 listener.beginLibraryName(libraryKeyword); |
| 147 assert(optional('library', token)); | 147 assert(optional('library', token)); |
| 148 token = parseQualified(token.next); | 148 token = parseQualified(token.next); |
| 149 Token semicolon = token; | 149 Token semicolon = token; |
| 150 token = expect(';', token); | 150 token = expect(';', token); |
| 151 listener.endLibraryName(libraryKeyword, semicolon); | 151 listener.endLibraryName(libraryKeyword, semicolon); |
| 152 return token; | 152 return token; |
| 153 } | 153 } |
| 154 | 154 |
| 155 /// import uri (as identifier)? combinator* ';' | 155 /// import uri (if (test) uri)* (as identifier)? combinator* ';' |
| 156 Token parseImport(Token token) { | 156 Token parseImport(Token token) { |
| 157 Token importKeyword = token; | 157 Token importKeyword = token; |
| 158 listener.beginImport(importKeyword); | 158 listener.beginImport(importKeyword); |
| 159 assert(optional('import', token)); | 159 assert(optional('import', token)); |
| 160 token = parseLiteralStringOrRecoverExpression(token.next); | 160 token = parseLiteralStringOrRecoverExpression(token.next); |
| 161 token = parseConditionalUris(token); | |
| 161 Token deferredKeyword; | 162 Token deferredKeyword; |
| 162 if (optional('deferred', token)) { | 163 if (optional('deferred', token)) { |
| 163 deferredKeyword = token; | 164 deferredKeyword = token; |
| 164 token = token.next; | 165 token = token.next; |
| 165 } | 166 } |
| 166 Token asKeyword; | 167 Token asKeyword; |
| 167 if (optional('as', token)) { | 168 if (optional('as', token)) { |
| 168 asKeyword = token; | 169 asKeyword = token; |
| 169 token = parseIdentifier(token.next); | 170 token = parseIdentifier(token.next); |
| 170 } | 171 } |
| 171 token = parseCombinators(token); | 172 token = parseCombinators(token); |
| 172 Token semicolon = token; | 173 Token semicolon = token; |
| 173 token = expect(';', token); | 174 token = expect(';', token); |
| 174 listener.endImport(importKeyword, deferredKeyword, asKeyword, semicolon); | 175 listener.endImport(importKeyword, deferredKeyword, asKeyword, semicolon); |
| 175 return token; | 176 return token; |
| 176 } | 177 } |
| 177 | 178 |
| 179 /// if (test) uri | |
| 180 Token parseConditionalUris(Token token) { | |
| 181 listener.beginConditionalUris(token); | |
| 182 int count = 0; | |
| 183 while (optional('if', token)) { | |
| 184 count++; | |
| 185 token = parseConditionalUri(token); | |
| 186 } | |
| 187 listener.endConditionalUris(count); | |
| 188 return token; | |
| 189 } | |
| 190 | |
| 191 Token parseConditionalUri(Token token) { | |
| 192 listener.beginConditionalUri(token); | |
| 193 Token ifKeyword = token; | |
| 194 token = expect('if', token); | |
| 195 token = expect('(', token); | |
| 196 token = parseDottedName(token); | |
| 197 Token equalitySign; | |
| 198 if (optional('==', token)) { | |
| 199 equalitySign = token; | |
| 200 token = parseLiteralStringOrRecoverExpression(token.next); | |
| 201 } | |
| 202 token = expect(')', token); | |
| 203 token = parseLiteralStringOrRecoverExpression(token); | |
| 204 listener.endConditionalUri(ifKeyword, equalitySign); | |
| 205 return token; | |
| 206 } | |
| 207 | |
| 208 Token parseDottedName(Token token) { | |
| 209 listener.beginDottedName(token); | |
| 210 Token firstIdentifier = token; | |
| 211 token = parseIdentifier(token); | |
| 212 int count = 1; | |
| 213 while (optional('.', token)) { | |
| 214 token = parseIdentifier(token.next); | |
| 215 count++; | |
| 216 } | |
| 217 listener.endDottedName(count, firstIdentifier); | |
| 218 return token; | |
| 219 } | |
| 220 | |
| 178 /// export uri combinator* ';' | 221 /// export uri combinator* ';' |
|
Johnni Winther
2015/10/13 08:44:29
Update comment.
floitsch
2015/10/13 21:01:44
Done.
| |
| 179 Token parseExport(Token token) { | 222 Token parseExport(Token token) { |
| 180 Token exportKeyword = token; | 223 Token exportKeyword = token; |
| 181 listener.beginExport(exportKeyword); | 224 listener.beginExport(exportKeyword); |
| 182 assert(optional('export', token)); | 225 assert(optional('export', token)); |
| 183 token = parseLiteralStringOrRecoverExpression(token.next); | 226 token = parseLiteralStringOrRecoverExpression(token.next); |
| 227 token = parseConditionalUris(token); | |
| 184 token = parseCombinators(token); | 228 token = parseCombinators(token); |
| 185 Token semicolon = token; | 229 Token semicolon = token; |
| 186 token = expect(';', token); | 230 token = expect(';', token); |
| 187 listener.endExport(exportKeyword, semicolon); | 231 listener.endExport(exportKeyword, semicolon); |
| 188 return token; | 232 return token; |
| 189 } | 233 } |
| 190 | 234 |
| 191 Token parseCombinators(Token token) { | 235 Token parseCombinators(Token token) { |
| 192 listener.beginCombinators(token); | 236 listener.beginCombinators(token); |
| 193 int count = 0; | 237 int count = 0; |
| (...skipping 2531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2725 } | 2769 } |
| 2726 listener.handleContinueStatement(hasTarget, continueKeyword, token); | 2770 listener.handleContinueStatement(hasTarget, continueKeyword, token); |
| 2727 return expectSemicolon(token); | 2771 return expectSemicolon(token); |
| 2728 } | 2772 } |
| 2729 | 2773 |
| 2730 Token parseEmptyStatement(Token token) { | 2774 Token parseEmptyStatement(Token token) { |
| 2731 listener.handleEmptyStatement(token); | 2775 listener.handleEmptyStatement(token); |
| 2732 return expectSemicolon(token); | 2776 return expectSemicolon(token); |
| 2733 } | 2777 } |
| 2734 } | 2778 } |
| OLD | NEW |