OLD | NEW |
1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
3 library engine.scanner; | 3 library engine.scanner; |
4 import 'dart:collection'; | 4 import 'dart:collection'; |
5 import 'java_core.dart'; | 5 import 'java_core.dart'; |
6 import 'java_engine.dart'; | 6 import 'java_engine.dart'; |
7 import 'source.dart'; | 7 import 'source.dart'; |
8 import 'error.dart'; | 8 import 'error.dart'; |
9 import 'instrumentation.dart'; | 9 import 'instrumentation.dart'; |
10 /** | 10 /** |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 LIBRARY, | 313 LIBRARY, |
314 OPERATOR, | 314 OPERATOR, |
315 PART, | 315 PART, |
316 SET, | 316 SET, |
317 STATIC, | 317 STATIC, |
318 TYPEDEF]; | 318 TYPEDEF]; |
319 | 319 |
320 /** | 320 /** |
321 * The lexeme for the keyword. | 321 * The lexeme for the keyword. |
322 */ | 322 */ |
323 String _syntax; | 323 String syntax; |
324 | 324 |
325 /** | 325 /** |
326 * A flag indicating whether the keyword is a pseudo-keyword. Pseudo keywords
can be used as | 326 * A flag indicating whether the keyword is a pseudo-keyword. Pseudo keywords
can be used as |
327 * identifiers. | 327 * identifiers. |
328 */ | 328 */ |
329 bool _isPseudoKeyword2 = false; | 329 bool isPseudoKeyword = false; |
330 | 330 |
331 /** | 331 /** |
332 * A table mapping the lexemes of keywords to the corresponding keyword. | 332 * A table mapping the lexemes of keywords to the corresponding keyword. |
333 */ | 333 */ |
334 static Map<String, Keyword> keywords = createKeywordMap(); | 334 static Map<String, Keyword> keywords = createKeywordMap(); |
335 | 335 |
336 /** | 336 /** |
337 * Create a table mapping the lexemes of keywords to the corresponding keyword
. | 337 * Create a table mapping the lexemes of keywords to the corresponding keyword
. |
338 * | 338 * |
339 * @return the table that was created | 339 * @return the table that was created |
340 */ | 340 */ |
341 static Map<String, Keyword> createKeywordMap() { | 341 static Map<String, Keyword> createKeywordMap() { |
342 LinkedHashMap<String, Keyword> result = new LinkedHashMap<String, Keyword>()
; | 342 LinkedHashMap<String, Keyword> result = new LinkedHashMap<String, Keyword>()
; |
343 for (Keyword keyword in values) { | 343 for (Keyword keyword in values) { |
344 result[keyword._syntax] = keyword; | 344 result[keyword.syntax] = keyword; |
345 } | 345 } |
346 return result; | 346 return result; |
347 } | 347 } |
348 | 348 |
349 /** | 349 /** |
350 * Initialize a newly created keyword to have the given syntax. The keyword is
not a | 350 * Initialize a newly created keyword to have the given syntax. The keyword is
not a |
351 * pseudo-keyword. | 351 * pseudo-keyword. |
352 * | 352 * |
353 * @param syntax the lexeme for the keyword | 353 * @param syntax the lexeme for the keyword |
354 */ | 354 */ |
355 Keyword.con1(String name, int ordinal, String syntax) : this.con2(name, ordina
l, syntax, false); | 355 Keyword.con1(String name, int ordinal, String syntax) : this.con2(name, ordina
l, syntax, false); |
356 | 356 |
357 /** | 357 /** |
358 * Initialize a newly created keyword to have the given syntax. The keyword is
a pseudo-keyword if | 358 * Initialize a newly created keyword to have the given syntax. The keyword is
a pseudo-keyword if |
359 * the given flag is `true`. | 359 * the given flag is `true`. |
360 * | 360 * |
361 * @param syntax the lexeme for the keyword | 361 * @param syntax the lexeme for the keyword |
362 * @param isPseudoKeyword `true` if this keyword is a pseudo-keyword | 362 * @param isPseudoKeyword `true` if this keyword is a pseudo-keyword |
363 */ | 363 */ |
364 Keyword.con2(String name, int ordinal, String syntax, bool isPseudoKeyword) :
super(name, ordinal) { | 364 Keyword.con2(String name, int ordinal, String syntax, bool isPseudoKeyword) :
super(name, ordinal) { |
365 this._syntax = syntax; | 365 this.syntax = syntax; |
366 this._isPseudoKeyword2 = isPseudoKeyword; | 366 this.isPseudoKeyword = isPseudoKeyword; |
367 } | 367 } |
368 | |
369 /** | |
370 * Return the lexeme for the keyword. | |
371 * | |
372 * @return the lexeme for the keyword | |
373 */ | |
374 String get syntax => _syntax; | |
375 | |
376 /** | |
377 * Return `true` if this keyword is a pseudo-keyword. Pseudo keywords can be u
sed as | |
378 * identifiers. | |
379 * | |
380 * @return `true` if this keyword is a pseudo-keyword | |
381 */ | |
382 bool get isPseudoKeyword => _isPseudoKeyword2; | |
383 } | 368 } |
384 /** | 369 /** |
385 * The abstract class `AbstractScanner` implements a scanner for Dart code. Subc
lasses are | 370 * The abstract class `AbstractScanner` implements a scanner for Dart code. Subc
lasses are |
386 * required to implement the interface used to access the characters being scann
ed. | 371 * required to implement the interface used to access the characters being scann
ed. |
387 * | 372 * |
388 * The lexical structure of Dart is ambiguous without knowledge of the context i
n which a token is | 373 * The lexical structure of Dart is ambiguous without knowledge of the context i
n which a token is |
389 * being scanned. For example, without context we cannot determine whether sourc
e of the form "<<" | 374 * being scanned. For example, without context we cannot determine whether sourc
e of the form "<<" |
390 * should be scanned as a single left-shift operator or as two left angle bracke
ts. This scanner | 375 * should be scanned as a single left-shift operator or as two left angle bracke
ts. This scanner |
391 * does not have any context, so it always resolves such conflicts by scanning t
he longest possible | 376 * does not have any context, so it always resolves such conflicts by scanning t
he longest possible |
392 * token. | 377 * token. |
393 * | 378 * |
394 * @coverage dart.engine.parser | 379 * @coverage dart.engine.parser |
395 */ | 380 */ |
396 abstract class AbstractScanner { | 381 abstract class AbstractScanner { |
397 | 382 |
398 /** | 383 /** |
399 * The source being scanned. | 384 * The source being scanned. |
400 */ | 385 */ |
401 Source _source; | 386 Source source; |
402 | 387 |
403 /** | 388 /** |
404 * The error listener that will be informed of any errors that are found durin
g the scan. | 389 * The error listener that will be informed of any errors that are found durin
g the scan. |
405 */ | 390 */ |
406 AnalysisErrorListener _errorListener; | 391 AnalysisErrorListener _errorListener; |
407 | 392 |
408 /** | 393 /** |
409 * The token pointing to the head of the linked list of tokens. | 394 * The token pointing to the head of the linked list of tokens. |
410 */ | 395 */ |
411 Token _tokens; | 396 Token _tokens; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 */ | 431 */ |
447 bool _hasUnmatchedGroups2 = false; | 432 bool _hasUnmatchedGroups2 = false; |
448 | 433 |
449 /** | 434 /** |
450 * Initialize a newly created scanner. | 435 * Initialize a newly created scanner. |
451 * | 436 * |
452 * @param source the source being scanned | 437 * @param source the source being scanned |
453 * @param errorListener the error listener that will be informed of any errors
that are found | 438 * @param errorListener the error listener that will be informed of any errors
that are found |
454 */ | 439 */ |
455 AbstractScanner(Source source, AnalysisErrorListener errorListener) { | 440 AbstractScanner(Source source, AnalysisErrorListener errorListener) { |
456 this._source = source; | 441 this.source = source; |
457 this._errorListener = errorListener; | 442 this._errorListener = errorListener; |
458 _tokens = new Token(TokenType.EOF, -1); | 443 _tokens = new Token(TokenType.EOF, -1); |
459 _tokens.setNext(_tokens); | 444 _tokens.setNext(_tokens); |
460 _tail = _tokens; | 445 _tail = _tokens; |
461 _tokenStart = -1; | 446 _tokenStart = -1; |
462 _lineStarts.add(0); | 447 _lineStarts.add(0); |
463 } | 448 } |
464 | 449 |
465 /** | 450 /** |
466 * Return an array containing the offsets of the first character of each line
in the source code. | 451 * Return an array containing the offsets of the first character of each line
in the source code. |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 } | 783 } |
799 _hasUnmatchedGroups2 = true; | 784 _hasUnmatchedGroups2 = true; |
800 _groupingStack.removeAt(last); | 785 _groupingStack.removeAt(last); |
801 last--; | 786 last--; |
802 } | 787 } |
803 return null; | 788 return null; |
804 } | 789 } |
805 Token firstToken() => _tokens.next; | 790 Token firstToken() => _tokens.next; |
806 | 791 |
807 /** | 792 /** |
808 * Return the source being scanned. | |
809 * | |
810 * @return the source being scanned | |
811 */ | |
812 Source get source => _source; | |
813 | |
814 /** | |
815 * Report an error at the current offset. | 793 * Report an error at the current offset. |
816 * | 794 * |
817 * @param errorCode the error code indicating the nature of the error | 795 * @param errorCode the error code indicating the nature of the error |
818 * @param arguments any arguments needed to complete the error message | 796 * @param arguments any arguments needed to complete the error message |
819 */ | 797 */ |
820 void reportError(ScannerErrorCode errorCode, List<Object> arguments) { | 798 void reportError(ScannerErrorCode errorCode, List<Object> arguments) { |
821 _errorListener.onError(new AnalysisError.con2(source, offset, 1, errorCode,
arguments)); | 799 _errorListener.onError(new AnalysisError.con2(source, offset, 1, errorCode,
arguments)); |
822 } | 800 } |
823 int select(int choice, TokenType yesType, TokenType noType) { | 801 int select(int choice, TokenType yesType, TokenType noType) { |
824 int next = advance(); | 802 int next = advance(); |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1449 * Instances of the class `Token` represent a token that was scanned from the in
put. Each | 1427 * Instances of the class `Token` represent a token that was scanned from the in
put. Each |
1450 * token knows which token follows it, acting as the head of a linked list of to
kens. | 1428 * token knows which token follows it, acting as the head of a linked list of to
kens. |
1451 * | 1429 * |
1452 * @coverage dart.engine.parser | 1430 * @coverage dart.engine.parser |
1453 */ | 1431 */ |
1454 class Token { | 1432 class Token { |
1455 | 1433 |
1456 /** | 1434 /** |
1457 * The type of the token. | 1435 * The type of the token. |
1458 */ | 1436 */ |
1459 TokenType _type; | 1437 TokenType type; |
1460 | 1438 |
1461 /** | 1439 /** |
1462 * The offset from the beginning of the file to the first character in the tok
en. | 1440 * The offset from the beginning of the file to the first character in the tok
en. |
1463 */ | 1441 */ |
1464 int _offset = 0; | 1442 int offset = 0; |
1465 | 1443 |
1466 /** | 1444 /** |
1467 * The previous token in the token stream. | 1445 * The previous token in the token stream. |
1468 */ | 1446 */ |
1469 Token _previous; | 1447 Token previous; |
1470 | 1448 |
1471 /** | 1449 /** |
1472 * The next token in the token stream. | 1450 * The next token in the token stream. |
1473 */ | 1451 */ |
1474 Token _next; | 1452 Token next; |
1475 | 1453 |
1476 /** | 1454 /** |
1477 * Initialize a newly created token to have the given type and offset. | 1455 * Initialize a newly created token to have the given type and offset. |
1478 * | 1456 * |
1479 * @param type the type of the token | 1457 * @param type the type of the token |
1480 * @param offset the offset from the beginning of the file to the first charac
ter in the token | 1458 * @param offset the offset from the beginning of the file to the first charac
ter in the token |
1481 */ | 1459 */ |
1482 Token(TokenType type, int offset) { | 1460 Token(TokenType type, int offset) { |
1483 this._type = type; | 1461 this.type = type; |
1484 this._offset = offset; | 1462 this.offset = offset; |
1485 } | 1463 } |
1486 | 1464 |
1487 /** | 1465 /** |
1488 * Return the offset from the beginning of the file to the character after las
t character of the | 1466 * Return the offset from the beginning of the file to the character after las
t character of the |
1489 * token. | 1467 * token. |
1490 * | 1468 * |
1491 * @return the offset from the beginning of the file to the first character af
ter last character | 1469 * @return the offset from the beginning of the file to the first character af
ter last character |
1492 * of the token | 1470 * of the token |
1493 */ | 1471 */ |
1494 int get end => _offset + length; | 1472 int get end => offset + length; |
1495 | 1473 |
1496 /** | 1474 /** |
1497 * Return the number of characters in the node's source range. | 1475 * Return the number of characters in the node's source range. |
1498 * | 1476 * |
1499 * @return the number of characters in the node's source range | 1477 * @return the number of characters in the node's source range |
1500 */ | 1478 */ |
1501 int get length => lexeme.length; | 1479 int get length => lexeme.length; |
1502 | 1480 |
1503 /** | 1481 /** |
1504 * Return the lexeme that represents this token. | 1482 * Return the lexeme that represents this token. |
1505 * | 1483 * |
1506 * @return the lexeme that represents this token | 1484 * @return the lexeme that represents this token |
1507 */ | 1485 */ |
1508 String get lexeme => _type.lexeme; | 1486 String get lexeme => type.lexeme; |
1509 | |
1510 /** | |
1511 * Return the next token in the token stream. | |
1512 * | |
1513 * @return the next token in the token stream | |
1514 */ | |
1515 Token get next => _next; | |
1516 | |
1517 /** | |
1518 * Return the offset from the beginning of the file to the first character in
the token. | |
1519 * | |
1520 * @return the offset from the beginning of the file to the first character in
the token | |
1521 */ | |
1522 int get offset => _offset; | |
1523 | 1487 |
1524 /** | 1488 /** |
1525 * Return the first comment in the list of comments that precede this token, o
r `null` if | 1489 * Return the first comment in the list of comments that precede this token, o
r `null` if |
1526 * there are no comments preceding this token. Additional comments can be reac
hed by following the | 1490 * there are no comments preceding this token. Additional comments can be reac
hed by following the |
1527 * token stream using [getNext] until `null` is returned. | 1491 * token stream using [getNext] until `null` is returned. |
1528 * | 1492 * |
1529 * @return the first comment in the list of comments that precede this token | 1493 * @return the first comment in the list of comments that precede this token |
1530 */ | 1494 */ |
1531 Token get precedingComments => null; | 1495 Token get precedingComments => null; |
1532 | 1496 |
1533 /** | 1497 /** |
1534 * Return the previous token in the token stream. | |
1535 * | |
1536 * @return the previous token in the token stream | |
1537 */ | |
1538 Token get previous => _previous; | |
1539 | |
1540 /** | |
1541 * Return the type of the token. | |
1542 * | |
1543 * @return the type of the token | |
1544 */ | |
1545 TokenType get type => _type; | |
1546 | |
1547 /** | |
1548 * Return `true` if this token represents an operator. | 1498 * Return `true` if this token represents an operator. |
1549 * | 1499 * |
1550 * @return `true` if this token represents an operator | 1500 * @return `true` if this token represents an operator |
1551 */ | 1501 */ |
1552 bool get isOperator => _type.isOperator; | 1502 bool get isOperator => type.isOperator; |
1553 | 1503 |
1554 /** | 1504 /** |
1555 * Return `true` if this token is a synthetic token. A synthetic token is a to
ken that was | 1505 * Return `true` if this token is a synthetic token. A synthetic token is a to
ken that was |
1556 * introduced by the parser in order to recover from an error in the code. Syn
thetic tokens always | 1506 * introduced by the parser in order to recover from an error in the code. Syn
thetic tokens always |
1557 * have a length of zero (`0`). | 1507 * have a length of zero (`0`). |
1558 * | 1508 * |
1559 * @return `true` if this token is a synthetic token | 1509 * @return `true` if this token is a synthetic token |
1560 */ | 1510 */ |
1561 bool get isSynthetic => length == 0; | 1511 bool get isSynthetic => length == 0; |
1562 | 1512 |
1563 /** | 1513 /** |
1564 * Return `true` if this token represents an operator that can be defined by u
sers. | 1514 * Return `true` if this token represents an operator that can be defined by u
sers. |
1565 * | 1515 * |
1566 * @return `true` if this token represents an operator that can be defined by
users | 1516 * @return `true` if this token represents an operator that can be defined by
users |
1567 */ | 1517 */ |
1568 bool get isUserDefinableOperator => _type.isUserDefinableOperator; | 1518 bool get isUserDefinableOperator => type.isUserDefinableOperator; |
1569 | 1519 |
1570 /** | 1520 /** |
1571 * Set the next token in the token stream to the given token. This has the sid
e-effect of setting | 1521 * Set the next token in the token stream to the given token. This has the sid
e-effect of setting |
1572 * this token to be the previous token for the given token. | 1522 * this token to be the previous token for the given token. |
1573 * | 1523 * |
1574 * @param token the next token in the token stream | 1524 * @param token the next token in the token stream |
1575 * @return the token that was passed in | 1525 * @return the token that was passed in |
1576 */ | 1526 */ |
1577 Token setNext(Token token) { | 1527 Token setNext(Token token) { |
1578 _next = token; | 1528 next = token; |
1579 token.previous = this; | 1529 token.previous = this; |
1580 return token; | 1530 return token; |
1581 } | 1531 } |
1582 | 1532 |
1583 /** | 1533 /** |
1584 * Set the next token in the token stream to the given token without changing
which token is the | 1534 * Set the next token in the token stream to the given token without changing
which token is the |
1585 * previous token for the given token. | 1535 * previous token for the given token. |
1586 * | 1536 * |
1587 * @param token the next token in the token stream | 1537 * @param token the next token in the token stream |
1588 * @return the token that was passed in | 1538 * @return the token that was passed in |
1589 */ | 1539 */ |
1590 Token setNextWithoutSettingPrevious(Token token) { | 1540 Token setNextWithoutSettingPrevious(Token token) { |
1591 _next = token; | 1541 next = token; |
1592 return token; | 1542 return token; |
1593 } | 1543 } |
1594 | |
1595 /** | |
1596 * Set the offset from the beginning of the file to the first character in the
token to the given | |
1597 * offset. | |
1598 * | |
1599 * @param offset the offset from the beginning of the file to the first charac
ter in the token | |
1600 */ | |
1601 void set offset(int offset2) { | |
1602 this._offset = offset2; | |
1603 } | |
1604 String toString() => lexeme; | 1544 String toString() => lexeme; |
1605 | 1545 |
1606 /** | 1546 /** |
1607 * Return the value of this token. For keyword tokens, this is the keyword ass
ociated with the | 1547 * Return the value of this token. For keyword tokens, this is the keyword ass
ociated with the |
1608 * token, for other tokens it is the lexeme associated with the token. | 1548 * token, for other tokens it is the lexeme associated with the token. |
1609 * | 1549 * |
1610 * @return the value of this token | 1550 * @return the value of this token |
1611 */ | 1551 */ |
1612 Object value() => _type.lexeme; | 1552 Object value() => type.lexeme; |
1613 | |
1614 /** | |
1615 * Set the previous token in the token stream to the given token. | |
1616 * | |
1617 * @param previous the previous token in the token stream | |
1618 */ | |
1619 void set previous(Token previous2) { | |
1620 this._previous = previous2; | |
1621 } | |
1622 } | 1553 } |
1623 /** | 1554 /** |
1624 * Instances of the class `StringScanner` implement a scanner that reads from a
string. The | 1555 * Instances of the class `StringScanner` implement a scanner that reads from a
string. The |
1625 * scanning logic is in the superclass. | 1556 * scanning logic is in the superclass. |
1626 * | 1557 * |
1627 * @coverage dart.engine.parser | 1558 * @coverage dart.engine.parser |
1628 */ | 1559 */ |
1629 class StringScanner extends AbstractScanner { | 1560 class StringScanner extends AbstractScanner { |
1630 | 1561 |
1631 /** | 1562 /** |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1731 /** | 1662 /** |
1732 * Instances of the class `KeywordToken` represent a keyword in the language. | 1663 * Instances of the class `KeywordToken` represent a keyword in the language. |
1733 * | 1664 * |
1734 * @coverage dart.engine.parser | 1665 * @coverage dart.engine.parser |
1735 */ | 1666 */ |
1736 class KeywordToken extends Token { | 1667 class KeywordToken extends Token { |
1737 | 1668 |
1738 /** | 1669 /** |
1739 * The keyword being represented by this token. | 1670 * The keyword being represented by this token. |
1740 */ | 1671 */ |
1741 Keyword _keyword; | 1672 Keyword keyword; |
1742 | 1673 |
1743 /** | 1674 /** |
1744 * Initialize a newly created token to represent the given keyword. | 1675 * Initialize a newly created token to represent the given keyword. |
1745 * | 1676 * |
1746 * @param keyword the keyword being represented by this token | 1677 * @param keyword the keyword being represented by this token |
1747 * @param offset the offset from the beginning of the file to the first charac
ter in the token | 1678 * @param offset the offset from the beginning of the file to the first charac
ter in the token |
1748 */ | 1679 */ |
1749 KeywordToken(Keyword keyword, int offset) : super(TokenType.KEYWORD, offset) { | 1680 KeywordToken(Keyword keyword, int offset) : super(TokenType.KEYWORD, offset) { |
1750 this._keyword = keyword; | 1681 this.keyword = keyword; |
1751 } | 1682 } |
1752 | 1683 String get lexeme => keyword.syntax; |
1753 /** | 1684 Keyword value() => keyword; |
1754 * Return the keyword being represented by this token. | |
1755 * | |
1756 * @return the keyword being represented by this token | |
1757 */ | |
1758 Keyword get keyword => _keyword; | |
1759 String get lexeme => _keyword.syntax; | |
1760 Keyword value() => _keyword; | |
1761 } | 1685 } |
1762 /** | 1686 /** |
1763 * Instances of the class `BeginToken` represent the opening half of a grouping
pair of | 1687 * Instances of the class `BeginToken` represent the opening half of a grouping
pair of |
1764 * tokens. This is used for curly brackets ('{'), parentheses ('('), and square
brackets ('['). | 1688 * tokens. This is used for curly brackets ('{'), parentheses ('('), and square
brackets ('['). |
1765 * | 1689 * |
1766 * @coverage dart.engine.parser | 1690 * @coverage dart.engine.parser |
1767 */ | 1691 */ |
1768 class BeginToken extends Token { | 1692 class BeginToken extends Token { |
1769 | 1693 |
1770 /** | 1694 /** |
1771 * The token that corresponds to this token. | 1695 * The token that corresponds to this token. |
1772 */ | 1696 */ |
1773 Token _endToken; | 1697 Token endToken; |
1774 | 1698 |
1775 /** | 1699 /** |
1776 * Initialize a newly created token representing the opening half of a groupin
g pair of tokens. | 1700 * Initialize a newly created token representing the opening half of a groupin
g pair of tokens. |
1777 * | 1701 * |
1778 * @param type the type of the token | 1702 * @param type the type of the token |
1779 * @param offset the offset from the beginning of the file to the first charac
ter in the token | 1703 * @param offset the offset from the beginning of the file to the first charac
ter in the token |
1780 */ | 1704 */ |
1781 BeginToken(TokenType type, int offset) : super(type, offset) { | 1705 BeginToken(TokenType type, int offset) : super(type, offset) { |
1782 assert((identical(type, TokenType.OPEN_CURLY_BRACKET) || identical(type, Tok
enType.OPEN_PAREN) || identical(type, TokenType.OPEN_SQUARE_BRACKET) || identica
l(type, TokenType.STRING_INTERPOLATION_EXPRESSION))); | 1706 assert((identical(type, TokenType.OPEN_CURLY_BRACKET) || identical(type, Tok
enType.OPEN_PAREN) || identical(type, TokenType.OPEN_SQUARE_BRACKET) || identica
l(type, TokenType.STRING_INTERPOLATION_EXPRESSION))); |
1783 } | 1707 } |
1784 | |
1785 /** | |
1786 * Return the token that corresponds to this token. | |
1787 * | |
1788 * @return the token that corresponds to this token | |
1789 */ | |
1790 Token get endToken => _endToken; | |
1791 | |
1792 /** | |
1793 * Set the token that corresponds to this token to the given token. | |
1794 * | |
1795 * @param token the token that corresponds to this token | |
1796 */ | |
1797 void set endToken(Token token) { | |
1798 this._endToken = token; | |
1799 } | |
1800 } | 1708 } |
1801 /** | 1709 /** |
1802 * The enumeration `TokenClass` represents classes (or groups) of tokens with a
similar use. | 1710 * The enumeration `TokenClass` represents classes (or groups) of tokens with a
similar use. |
1803 * | 1711 * |
1804 * @coverage dart.engine.parser | 1712 * @coverage dart.engine.parser |
1805 */ | 1713 */ |
1806 class TokenClass extends Enum<TokenClass> { | 1714 class TokenClass extends Enum<TokenClass> { |
1807 | 1715 |
1808 /** | 1716 /** |
1809 * A value used to indicate that the token type is not part of any specific cl
ass of token. | 1717 * A value used to indicate that the token type is not part of any specific cl
ass of token. |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1899 MULTIPLICATIVE_OPERATOR, | 1807 MULTIPLICATIVE_OPERATOR, |
1900 RELATIONAL_OPERATOR, | 1808 RELATIONAL_OPERATOR, |
1901 SHIFT_OPERATOR, | 1809 SHIFT_OPERATOR, |
1902 UNARY_POSTFIX_OPERATOR, | 1810 UNARY_POSTFIX_OPERATOR, |
1903 UNARY_PREFIX_OPERATOR]; | 1811 UNARY_PREFIX_OPERATOR]; |
1904 | 1812 |
1905 /** | 1813 /** |
1906 * The precedence of tokens of this class, or `0` if the such tokens do not re
present an | 1814 * The precedence of tokens of this class, or `0` if the such tokens do not re
present an |
1907 * operator. | 1815 * operator. |
1908 */ | 1816 */ |
1909 int _precedence = 0; | 1817 int precedence = 0; |
1910 TokenClass.con1(String name, int ordinal) : this.con2(name, ordinal, 0); | 1818 TokenClass.con1(String name, int ordinal) : this.con2(name, ordinal, 0); |
1911 TokenClass.con2(String name, int ordinal, int precedence) : super(name, ordina
l) { | 1819 TokenClass.con2(String name, int ordinal, int precedence) : super(name, ordina
l) { |
1912 this._precedence = precedence; | 1820 this.precedence = precedence; |
1913 } | 1821 } |
1914 | |
1915 /** | |
1916 * Return the precedence of tokens of this class, or `0` if the such tokens do
not represent | |
1917 * an operator. | |
1918 * | |
1919 * @return the precedence of tokens of this class | |
1920 */ | |
1921 int get precedence => _precedence; | |
1922 } | 1822 } |
1923 /** | 1823 /** |
1924 * Instances of the class `KeywordTokenWithComment` implement a keyword token th
at is preceded | 1824 * Instances of the class `KeywordTokenWithComment` implement a keyword token th
at is preceded |
1925 * by comments. | 1825 * by comments. |
1926 * | 1826 * |
1927 * @coverage dart.engine.parser | 1827 * @coverage dart.engine.parser |
1928 */ | 1828 */ |
1929 class KeywordTokenWithComment extends KeywordToken { | 1829 class KeywordTokenWithComment extends KeywordToken { |
1930 | 1830 |
1931 /** | 1831 /** |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2097 | 1997 |
2098 /** | 1998 /** |
2099 * The class of the token. | 1999 * The class of the token. |
2100 */ | 2000 */ |
2101 TokenClass _tokenClass; | 2001 TokenClass _tokenClass; |
2102 | 2002 |
2103 /** | 2003 /** |
2104 * The lexeme that defines this type of token, or `null` if there is more than
one possible | 2004 * The lexeme that defines this type of token, or `null` if there is more than
one possible |
2105 * lexeme for this type of token. | 2005 * lexeme for this type of token. |
2106 */ | 2006 */ |
2107 String _lexeme; | 2007 String lexeme; |
2108 TokenType.con1(String name, int ordinal) : this.con2(name, ordinal, TokenClass
.NO_CLASS, null); | 2008 TokenType.con1(String name, int ordinal) : this.con2(name, ordinal, TokenClass
.NO_CLASS, null); |
2109 TokenType.con2(String name, int ordinal, TokenClass tokenClass, String lexeme)
: super(name, ordinal) { | 2009 TokenType.con2(String name, int ordinal, TokenClass tokenClass, String lexeme)
: super(name, ordinal) { |
2110 this._tokenClass = tokenClass == null ? TokenClass.NO_CLASS : tokenClass; | 2010 this._tokenClass = tokenClass == null ? TokenClass.NO_CLASS : tokenClass; |
2111 this._lexeme = lexeme; | 2011 this.lexeme = lexeme; |
2112 } | 2012 } |
2113 | 2013 |
2114 /** | 2014 /** |
2115 * Return the lexeme that defines this type of token, or `null` if there is mo
re than one | |
2116 * possible lexeme for this type of token. | |
2117 * | |
2118 * @return the lexeme that defines this type of token | |
2119 */ | |
2120 String get lexeme => _lexeme; | |
2121 | |
2122 /** | |
2123 * Return the precedence of the token, or `0` if the token does not represent
an operator. | 2015 * Return the precedence of the token, or `0` if the token does not represent
an operator. |
2124 * | 2016 * |
2125 * @return the precedence of the token | 2017 * @return the precedence of the token |
2126 */ | 2018 */ |
2127 int get precedence => _tokenClass.precedence; | 2019 int get precedence => _tokenClass.precedence; |
2128 | 2020 |
2129 /** | 2021 /** |
2130 * Return `true` if this type of token represents an additive operator. | 2022 * Return `true` if this type of token represents an additive operator. |
2131 * | 2023 * |
2132 * @return `true` if this type of token represents an additive operator | 2024 * @return `true` if this type of token represents an additive operator |
(...skipping 26 matching lines...) Expand all Loading... |
2159 * | 2051 * |
2160 * @return `true` if this type of token represents an equality operator | 2052 * @return `true` if this type of token represents an equality operator |
2161 */ | 2053 */ |
2162 bool get isEqualityOperator => identical(_tokenClass, TokenClass.EQUALITY_OPER
ATOR); | 2054 bool get isEqualityOperator => identical(_tokenClass, TokenClass.EQUALITY_OPER
ATOR); |
2163 | 2055 |
2164 /** | 2056 /** |
2165 * Return `true` if this type of token represents an increment operator. | 2057 * Return `true` if this type of token represents an increment operator. |
2166 * | 2058 * |
2167 * @return `true` if this type of token represents an increment operator | 2059 * @return `true` if this type of token represents an increment operator |
2168 */ | 2060 */ |
2169 bool get isIncrementOperator => identical(_lexeme, "++") || identical(_lexeme,
"--"); | 2061 bool get isIncrementOperator => identical(lexeme, "++") || identical(lexeme, "
--"); |
2170 | 2062 |
2171 /** | 2063 /** |
2172 * Return `true` if this type of token represents a multiplicative operator. | 2064 * Return `true` if this type of token represents a multiplicative operator. |
2173 * | 2065 * |
2174 * @return `true` if this type of token represents a multiplicative operator | 2066 * @return `true` if this type of token represents a multiplicative operator |
2175 */ | 2067 */ |
2176 bool get isMultiplicativeOperator => identical(_tokenClass, TokenClass.MULTIPL
ICATIVE_OPERATOR); | 2068 bool get isMultiplicativeOperator => identical(_tokenClass, TokenClass.MULTIPL
ICATIVE_OPERATOR); |
2177 | 2069 |
2178 /** | 2070 /** |
2179 * Return `true` if this token type represents an operator. | 2071 * Return `true` if this token type represents an operator. |
(...skipping 28 matching lines...) Expand all Loading... |
2208 * | 2100 * |
2209 * @return `true` if this type of token represents a unary prefix operator | 2101 * @return `true` if this type of token represents a unary prefix operator |
2210 */ | 2102 */ |
2211 bool get isUnaryPrefixOperator => identical(_tokenClass, TokenClass.UNARY_PREF
IX_OPERATOR); | 2103 bool get isUnaryPrefixOperator => identical(_tokenClass, TokenClass.UNARY_PREF
IX_OPERATOR); |
2212 | 2104 |
2213 /** | 2105 /** |
2214 * Return `true` if this token type represents an operator that can be defined
by users. | 2106 * Return `true` if this token type represents an operator that can be defined
by users. |
2215 * | 2107 * |
2216 * @return `true` if this token type represents an operator that can be define
d by users | 2108 * @return `true` if this token type represents an operator that can be define
d by users |
2217 */ | 2109 */ |
2218 bool get isUserDefinableOperator => identical(_lexeme, "==") || identical(_lex
eme, "~") || identical(_lexeme, "[]") || identical(_lexeme, "[]=") || identical(
_lexeme, "*") || identical(_lexeme, "/") || identical(_lexeme, "%") || identical
(_lexeme, "~/") || identical(_lexeme, "+") || identical(_lexeme, "-") || identic
al(_lexeme, "<<") || identical(_lexeme, ">>") || identical(_lexeme, ">=") || ide
ntical(_lexeme, ">") || identical(_lexeme, "<=") || identical(_lexeme, "<") || i
dentical(_lexeme, "&") || identical(_lexeme, "^") || identical(_lexeme, "|"); | 2110 bool get isUserDefinableOperator => identical(lexeme, "==") || identical(lexem
e, "~") || identical(lexeme, "[]") || identical(lexeme, "[]=") || identical(lexe
me, "*") || identical(lexeme, "/") || identical(lexeme, "%") || identical(lexeme
, "~/") || identical(lexeme, "+") || identical(lexeme, "-") || identical(lexeme,
"<<") || identical(lexeme, ">>") || identical(lexeme, ">=") || identical(lexeme
, ">") || identical(lexeme, "<=") || identical(lexeme, "<") || identical(lexeme,
"&") || identical(lexeme, "^") || identical(lexeme, "|"); |
2219 } | 2111 } |
2220 class TokenType_EOF extends TokenType { | 2112 class TokenType_EOF extends TokenType { |
2221 TokenType_EOF(String name, int ordinal, TokenClass arg0, String arg1) : super.
con2(name, ordinal, arg0, arg1); | 2113 TokenType_EOF(String name, int ordinal, TokenClass arg0, String arg1) : super.
con2(name, ordinal, arg0, arg1); |
2222 String toString() => "-eof-"; | 2114 String toString() => "-eof-"; |
2223 } | 2115 } |
OLD | NEW |