OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 // This code was auto-generated, is not intended to be edited, and is subject to | 5 // This code was auto-generated, is not intended to be edited, and is subject to |
6 // significant change. Please see the README file for more information. | 6 // significant change. Please see the README file for more information. |
7 | 7 |
8 library engine.parser; | 8 library engine.parser; |
9 | 9 |
10 import "dart:math" as math; | 10 import "dart:math" as math; |
(...skipping 6188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6199 * <pre> | 6199 * <pre> |
6200 * exportDirective ::= | 6200 * exportDirective ::= |
6201 * metadata 'export' stringLiteral combinator*';' | 6201 * metadata 'export' stringLiteral combinator*';' |
6202 * </pre> | 6202 * </pre> |
6203 * | 6203 * |
6204 * @param commentAndMetadata the metadata to be associated with the directive | 6204 * @param commentAndMetadata the metadata to be associated with the directive |
6205 * @return the export directive that was parsed | 6205 * @return the export directive that was parsed |
6206 */ | 6206 */ |
6207 ExportDirective _parseExportDirective(CommentAndMetadata commentAndMetadata) { | 6207 ExportDirective _parseExportDirective(CommentAndMetadata commentAndMetadata) { |
6208 Token exportKeyword = _expectKeyword(Keyword.EXPORT); | 6208 Token exportKeyword = _expectKeyword(Keyword.EXPORT); |
6209 StringLiteral libraryUri = parseStringLiteral(); | 6209 StringLiteral libraryUri = _parseUri(); |
6210 List<Combinator> combinators = _parseCombinators(); | 6210 List<Combinator> combinators = _parseCombinators(); |
6211 Token semicolon = _expectSemicolon(); | 6211 Token semicolon = _expectSemicolon(); |
6212 return new ExportDirective( | 6212 return new ExportDirective( |
6213 commentAndMetadata.comment, | 6213 commentAndMetadata.comment, |
6214 commentAndMetadata.metadata, | 6214 commentAndMetadata.metadata, |
6215 exportKeyword, | 6215 exportKeyword, |
6216 libraryUri, | 6216 libraryUri, |
6217 combinators, | 6217 combinators, |
6218 semicolon); | 6218 semicolon); |
6219 } | 6219 } |
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6896 * <pre> | 6896 * <pre> |
6897 * importDirective ::= | 6897 * importDirective ::= |
6898 * metadata 'import' stringLiteral ('as' identifier)? combinator*';' | 6898 * metadata 'import' stringLiteral ('as' identifier)? combinator*';' |
6899 * </pre> | 6899 * </pre> |
6900 * | 6900 * |
6901 * @param commentAndMetadata the metadata to be associated with the directive | 6901 * @param commentAndMetadata the metadata to be associated with the directive |
6902 * @return the import directive that was parsed | 6902 * @return the import directive that was parsed |
6903 */ | 6903 */ |
6904 ImportDirective _parseImportDirective(CommentAndMetadata commentAndMetadata) { | 6904 ImportDirective _parseImportDirective(CommentAndMetadata commentAndMetadata) { |
6905 Token importKeyword = _expectKeyword(Keyword.IMPORT); | 6905 Token importKeyword = _expectKeyword(Keyword.IMPORT); |
6906 StringLiteral libraryUri = parseStringLiteral(); | 6906 StringLiteral libraryUri = _parseUri(); |
6907 Token deferredToken = null; | 6907 Token deferredToken = null; |
6908 Token asToken = null; | 6908 Token asToken = null; |
6909 SimpleIdentifier prefix = null; | 6909 SimpleIdentifier prefix = null; |
6910 if (_matchesKeyword(Keyword.DEFERRED)) { | 6910 if (_matchesKeyword(Keyword.DEFERRED)) { |
6911 if (_parseDeferredLibraries) { | 6911 if (_parseDeferredLibraries) { |
6912 deferredToken = andAdvance; | 6912 deferredToken = andAdvance; |
6913 } else { | 6913 } else { |
6914 _reportErrorForCurrentToken( | 6914 _reportErrorForCurrentToken( |
6915 ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED); | 6915 ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED); |
6916 _advance(); | 6916 _advance(); |
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7757 ofKeyword); | 7757 ofKeyword); |
7758 Token semicolon = _expect(TokenType.SEMICOLON); | 7758 Token semicolon = _expect(TokenType.SEMICOLON); |
7759 return new PartOfDirective( | 7759 return new PartOfDirective( |
7760 commentAndMetadata.comment, | 7760 commentAndMetadata.comment, |
7761 commentAndMetadata.metadata, | 7761 commentAndMetadata.metadata, |
7762 partKeyword, | 7762 partKeyword, |
7763 ofKeyword, | 7763 ofKeyword, |
7764 libraryName, | 7764 libraryName, |
7765 semicolon); | 7765 semicolon); |
7766 } | 7766 } |
7767 StringLiteral partUri = parseStringLiteral(); | 7767 StringLiteral partUri = _parseUri(); |
7768 Token semicolon = _expect(TokenType.SEMICOLON); | 7768 Token semicolon = _expect(TokenType.SEMICOLON); |
7769 return new PartDirective( | 7769 return new PartDirective( |
7770 commentAndMetadata.comment, | 7770 commentAndMetadata.comment, |
7771 commentAndMetadata.metadata, | 7771 commentAndMetadata.metadata, |
7772 partKeyword, | 7772 partKeyword, |
7773 partUri, | 7773 partUri, |
7774 semicolon); | 7774 semicolon); |
7775 } | 7775 } |
7776 | 7776 |
7777 /** | 7777 /** |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8615 } else if (_matches(TokenType.PLUS)) { | 8615 } else if (_matches(TokenType.PLUS)) { |
8616 _reportErrorForCurrentToken(ParserErrorCode.MISSING_IDENTIFIER); | 8616 _reportErrorForCurrentToken(ParserErrorCode.MISSING_IDENTIFIER); |
8617 return _createSyntheticIdentifier(); | 8617 return _createSyntheticIdentifier(); |
8618 } else if (_matchesString(_AWAIT)) { | 8618 } else if (_matchesString(_AWAIT)) { |
8619 return _parseAwaitExpression(); | 8619 return _parseAwaitExpression(); |
8620 } | 8620 } |
8621 return _parsePostfixExpression(); | 8621 return _parsePostfixExpression(); |
8622 } | 8622 } |
8623 | 8623 |
8624 /** | 8624 /** |
| 8625 * Parse a string literal representing a URI. |
| 8626 */ |
| 8627 StringLiteral _parseUri() { |
| 8628 bool iskeywordAfterUri(Token token) => |
| 8629 token.lexeme == Keyword.AS.syntax || |
| 8630 token.lexeme == _HIDE || |
| 8631 token.lexeme == _SHOW; |
| 8632 if (!_matches(TokenType.STRING) && |
| 8633 !_matches(TokenType.SEMICOLON) && |
| 8634 !iskeywordAfterUri(_currentToken)) { |
| 8635 // Attempt to recover in the case where the URI was not enclosed in |
| 8636 // quotes. |
| 8637 Token token = _currentToken; |
| 8638 while ((_tokenMatchesIdentifier(token) && !iskeywordAfterUri(token)) || |
| 8639 _tokenMatches(token, TokenType.COLON) || |
| 8640 _tokenMatches(token, TokenType.SLASH) || |
| 8641 _tokenMatches(token, TokenType.PERIOD) || |
| 8642 _tokenMatches(token, TokenType.PERIOD_PERIOD) || |
| 8643 _tokenMatches(token, TokenType.PERIOD_PERIOD_PERIOD) || |
| 8644 _tokenMatches(token, TokenType.INT) || |
| 8645 _tokenMatches(token, TokenType.DOUBLE)) { |
| 8646 token = token.next; |
| 8647 } |
| 8648 if (_tokenMatches(token, TokenType.SEMICOLON) || |
| 8649 iskeywordAfterUri(token)) { |
| 8650 Token endToken = token.previous; |
| 8651 token = _currentToken; |
| 8652 int endOffset = token.end; |
| 8653 StringBuffer buffer = new StringBuffer(); |
| 8654 buffer.write(token.lexeme); |
| 8655 while (token != endToken) { |
| 8656 token = token.next; |
| 8657 if (token.offset != endOffset || token.precedingComments != null) { |
| 8658 return parseStringLiteral(); |
| 8659 } |
| 8660 buffer.write(token.lexeme); |
| 8661 endOffset = token.end; |
| 8662 } |
| 8663 String value = buffer.toString(); |
| 8664 Token newToken = |
| 8665 new StringToken(TokenType.STRING, "'$value'", _currentToken.offset); |
| 8666 _reportErrorForToken( |
| 8667 ParserErrorCode.NON_STRING_LITERAL_AS_URI, |
| 8668 newToken); |
| 8669 _currentToken = endToken.next; |
| 8670 return new SimpleStringLiteral(newToken, value); |
| 8671 } |
| 8672 } |
| 8673 return parseStringLiteral(); |
| 8674 } |
| 8675 |
| 8676 /** |
8625 * Parse a variable declaration. | 8677 * Parse a variable declaration. |
8626 * | 8678 * |
8627 * <pre> | 8679 * <pre> |
8628 * variableDeclaration ::= | 8680 * variableDeclaration ::= |
8629 * identifier ('=' expression)? | 8681 * identifier ('=' expression)? |
8630 * </pre> | 8682 * </pre> |
8631 * | 8683 * |
8632 * @return the variable declaration that was parsed | 8684 * @return the variable declaration that was parsed |
8633 */ | 8685 */ |
8634 VariableDeclaration _parseVariableDeclaration() { | 8686 VariableDeclaration _parseVariableDeclaration() { |
(...skipping 1836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10471 static const ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = | 10523 static const ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = |
10472 const ParserErrorCode( | 10524 const ParserErrorCode( |
10473 'NON_IDENTIFIER_LIBRARY_NAME', | 10525 'NON_IDENTIFIER_LIBRARY_NAME', |
10474 "The name of a library must be an identifier"); | 10526 "The name of a library must be an identifier"); |
10475 | 10527 |
10476 static const ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = | 10528 static const ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = |
10477 const ParserErrorCode( | 10529 const ParserErrorCode( |
10478 'NON_PART_OF_DIRECTIVE_IN_PART', | 10530 'NON_PART_OF_DIRECTIVE_IN_PART', |
10479 "The part-of directive must be the only directive in a part"); | 10531 "The part-of directive must be the only directive in a part"); |
10480 | 10532 |
| 10533 static const ParserErrorCode NON_STRING_LITERAL_AS_URI = |
| 10534 const ParserErrorCode( |
| 10535 'NON_STRING_LITERAL_AS_URI', |
| 10536 "The URI must be a string literal", |
| 10537 "Enclose the URI in either single or double quotes."); |
| 10538 |
10481 static const ParserErrorCode NON_USER_DEFINABLE_OPERATOR = | 10539 static const ParserErrorCode NON_USER_DEFINABLE_OPERATOR = |
10482 const ParserErrorCode( | 10540 const ParserErrorCode( |
10483 'NON_USER_DEFINABLE_OPERATOR', | 10541 'NON_USER_DEFINABLE_OPERATOR', |
10484 "The operator '{0}' is not user definable"); | 10542 "The operator '{0}' is not user definable"); |
10485 | 10543 |
10486 static const ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = | 10544 static const ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = |
10487 const ParserErrorCode( | 10545 const ParserErrorCode( |
10488 'NORMAL_BEFORE_OPTIONAL_PARAMETERS', | 10546 'NORMAL_BEFORE_OPTIONAL_PARAMETERS', |
10489 "Normal parameters must occur before optional parameters"); | 10547 "Normal parameters must occur before optional parameters"); |
10490 | 10548 |
(...skipping 1545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12036 * Copy resolution data from one node to another. | 12094 * Copy resolution data from one node to another. |
12037 * | 12095 * |
12038 * @param fromNode the node from which resolution information will be copied | 12096 * @param fromNode the node from which resolution information will be copied |
12039 * @param toNode the node to which resolution information will be copied | 12097 * @param toNode the node to which resolution information will be copied |
12040 */ | 12098 */ |
12041 static void copyResolutionData(AstNode fromNode, AstNode toNode) { | 12099 static void copyResolutionData(AstNode fromNode, AstNode toNode) { |
12042 ResolutionCopier copier = new ResolutionCopier(); | 12100 ResolutionCopier copier = new ResolutionCopier(); |
12043 copier._isEqualNodes(fromNode, toNode); | 12101 copier._isEqualNodes(fromNode, toNode); |
12044 } | 12102 } |
12045 } | 12103 } |
OLD | NEW |