| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 /** | 5 /** |
| 6 * An event generating parser of Dart programs. This parser expects | 6 * An event generating parser of Dart programs. This parser expects |
| 7 * all tokens in a linked list. | 7 * all tokens in a linked list. |
| 8 */ | 8 */ |
| 9 class Parser { | 9 class Parser { |
| 10 final Listener listener; | 10 final Listener listener; |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 return parseStuff(token, | 310 return parseStuff(token, |
| 311 (t) => listener.beginTypeArguments(t), | 311 (t) => listener.beginTypeArguments(t), |
| 312 (t) => parseType(t), | 312 (t) => parseType(t), |
| 313 (c, bt, et) => listener.endTypeArguments(c, bt, et), | 313 (c, bt, et) => listener.endTypeArguments(c, bt, et), |
| 314 (t) => listener.handleNoTypeArguments(t)); | 314 (t) => listener.handleNoTypeArguments(t)); |
| 315 } | 315 } |
| 316 | 316 |
| 317 Token parseTypeVariablesOpt(Token token) { | 317 Token parseTypeVariablesOpt(Token token) { |
| 318 if (optional('<', token)) { | 318 if (optional('<', token)) { |
| 319 BeginGroupToken beginGroupToken = token; | 319 BeginGroupToken beginGroupToken = token; |
| 320 token = beginGroupToken.endGroup.next; | 320 // TODO(ahe): Parse type variables. |
| 321 |
| 322 // For now, skip to the matching '>' if it exists. Otherwise, |
| 323 // don't advance and assume the caller will report some kind of |
| 324 // error. |
| 325 if (beginGroupToken.endGroup !== null) { |
| 326 token = beginGroupToken.endGroup.next; |
| 327 } |
| 321 } | 328 } |
| 322 listener.handleNoTypeVariables(token); | 329 listener.handleNoTypeVariables(token); |
| 323 return token; | 330 return token; |
| 324 } | 331 } |
| 325 | 332 |
| 326 Token parseTypeVariablesOptX(Token token) { | 333 Token parseTypeVariablesOptX(Token token) { |
| 327 return parseStuff(token, | 334 return parseStuff(token, |
| 328 (t) => listener.beginTypeVariables(t), | 335 (t) => listener.beginTypeVariables(t), |
| 329 (t) => parseTypeVariable(t), | 336 (t) => parseTypeVariable(t), |
| 330 (c, bt, et) => listener.endTypeVariables(c, bt, et), | 337 (c, bt, et) => listener.endTypeVariables(c, bt, et), |
| (...skipping 1282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1613 } | 1620 } |
| 1614 listener.handleContinueStatement(hasTarget, continueKeyword, token); | 1621 listener.handleContinueStatement(hasTarget, continueKeyword, token); |
| 1615 return expectSemicolon(token); | 1622 return expectSemicolon(token); |
| 1616 } | 1623 } |
| 1617 | 1624 |
| 1618 Token parseEmptyStatement(Token token) { | 1625 Token parseEmptyStatement(Token token) { |
| 1619 listener.handleEmptyStatement(token); | 1626 listener.handleEmptyStatement(token); |
| 1620 return expectSemicolon(token); | 1627 return expectSemicolon(token); |
| 1621 } | 1628 } |
| 1622 } | 1629 } |
| OLD | NEW |