Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(812)

Unified Diff: pkg/front_end/lib/src/fasta/scanner/precedence.dart

Issue 2749033003: fasta.Token implement analyzer.Token.isOperator (Closed)
Patch Set: merge Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/scanner/token.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/scanner/precedence.dart
diff --git a/pkg/front_end/lib/src/fasta/scanner/precedence.dart b/pkg/front_end/lib/src/fasta/scanner/precedence.dart
index 5ff90eed41d30e572579609cb0de2d284e829fb7..40776d24f3594a5a4c3d30f19bc97ab0197739a6 100644
--- a/pkg/front_end/lib/src/fasta/scanner/precedence.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/precedence.dart
@@ -10,8 +10,10 @@ class PrecedenceInfo {
final String value;
final int precedence;
final int kind;
+ final bool isOperator;
- const PrecedenceInfo(this.value, this.precedence, this.kind);
+ const PrecedenceInfo(this.value, this.precedence, this.kind,
+ {this.isOperator: false});
toString() => 'PrecedenceInfo($value, $precedence, $kind)';
@@ -105,23 +107,29 @@ const PrecedenceInfo PERIOD_PERIOD_PERIOD_INFO =
* except assignment.
*/
const int CASCADE_PRECEDENCE = 2;
-const PrecedenceInfo PERIOD_PERIOD_INFO =
- const PrecedenceInfo('..', CASCADE_PRECEDENCE, PERIOD_PERIOD_TOKEN);
+const PrecedenceInfo PERIOD_PERIOD_INFO = const PrecedenceInfo(
+ '..', CASCADE_PRECEDENCE, PERIOD_PERIOD_TOKEN,
+ isOperator: true);
ahe 2017/03/15 14:54:25 Are you sure about that? Isn't an operator someth
-const PrecedenceInfo BANG_INFO = const PrecedenceInfo('!', 0, BANG_TOKEN);
+const PrecedenceInfo BANG_INFO =
+ const PrecedenceInfo('!', 0, BANG_TOKEN, isOperator: true);
const PrecedenceInfo COLON_INFO = const PrecedenceInfo(':', 0, COLON_TOKEN);
-const PrecedenceInfo INDEX_INFO = const PrecedenceInfo('[]', 0, INDEX_TOKEN);
-const PrecedenceInfo MINUS_MINUS_INFO =
- const PrecedenceInfo('--', POSTFIX_PRECEDENCE, MINUS_MINUS_TOKEN);
-const PrecedenceInfo PLUS_PLUS_INFO =
- const PrecedenceInfo('++', POSTFIX_PRECEDENCE, PLUS_PLUS_TOKEN);
-const PrecedenceInfo TILDE_INFO = const PrecedenceInfo('~', 0, TILDE_TOKEN);
+const PrecedenceInfo INDEX_INFO =
+ const PrecedenceInfo('[]', 0, INDEX_TOKEN, isOperator: true);
+const PrecedenceInfo MINUS_MINUS_INFO = const PrecedenceInfo(
+ '--', POSTFIX_PRECEDENCE, MINUS_MINUS_TOKEN,
+ isOperator: true);
+const PrecedenceInfo PLUS_PLUS_INFO = const PrecedenceInfo(
+ '++', POSTFIX_PRECEDENCE, PLUS_PLUS_TOKEN,
+ isOperator: true);
+const PrecedenceInfo TILDE_INFO =
+ const PrecedenceInfo('~', 0, TILDE_TOKEN, isOperator: true);
const PrecedenceInfo FUNCTION_INFO =
const PrecedenceInfo('=>', 0, FUNCTION_TOKEN);
const PrecedenceInfo HASH_INFO = const PrecedenceInfo('#', 0, HASH_TOKEN);
const PrecedenceInfo INDEX_EQ_INFO =
- const PrecedenceInfo('[]=', 0, INDEX_EQ_TOKEN);
+ const PrecedenceInfo('[]=', 0, INDEX_EQ_TOKEN, isOperator: true);
const PrecedenceInfo SEMICOLON_INFO =
const PrecedenceInfo(';', 0, SEMICOLON_TOKEN);
const PrecedenceInfo COMMA_INFO = const PrecedenceInfo(',', 0, COMMA_TOKEN);
@@ -130,99 +138,127 @@ const PrecedenceInfo AT_INFO = const PrecedenceInfo('@', 0, AT_TOKEN);
// Assignment operators.
const int ASSIGNMENT_PRECEDENCE = 1;
-const PrecedenceInfo AMPERSAND_EQ_INFO =
- const PrecedenceInfo('&=', ASSIGNMENT_PRECEDENCE, AMPERSAND_EQ_TOKEN);
-const PrecedenceInfo BAR_EQ_INFO =
- const PrecedenceInfo('|=', ASSIGNMENT_PRECEDENCE, BAR_EQ_TOKEN);
-const PrecedenceInfo CARET_EQ_INFO =
- const PrecedenceInfo('^=', ASSIGNMENT_PRECEDENCE, CARET_EQ_TOKEN);
-const PrecedenceInfo EQ_INFO =
- const PrecedenceInfo('=', ASSIGNMENT_PRECEDENCE, EQ_TOKEN);
-const PrecedenceInfo GT_GT_EQ_INFO =
- const PrecedenceInfo('>>=', ASSIGNMENT_PRECEDENCE, GT_GT_EQ_TOKEN);
-const PrecedenceInfo LT_LT_EQ_INFO =
- const PrecedenceInfo('<<=', ASSIGNMENT_PRECEDENCE, LT_LT_EQ_TOKEN);
-const PrecedenceInfo MINUS_EQ_INFO =
- const PrecedenceInfo('-=', ASSIGNMENT_PRECEDENCE, MINUS_EQ_TOKEN);
-const PrecedenceInfo PERCENT_EQ_INFO =
- const PrecedenceInfo('%=', ASSIGNMENT_PRECEDENCE, PERCENT_EQ_TOKEN);
-const PrecedenceInfo PLUS_EQ_INFO =
- const PrecedenceInfo('+=', ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN);
-const PrecedenceInfo SLASH_EQ_INFO =
- const PrecedenceInfo('/=', ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN);
-const PrecedenceInfo STAR_EQ_INFO =
- const PrecedenceInfo('*=', ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN);
-const PrecedenceInfo TILDE_SLASH_EQ_INFO =
- const PrecedenceInfo('~/=', ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN);
+const PrecedenceInfo AMPERSAND_EQ_INFO = const PrecedenceInfo(
+ '&=', ASSIGNMENT_PRECEDENCE, AMPERSAND_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo BAR_EQ_INFO = const PrecedenceInfo(
+ '|=', ASSIGNMENT_PRECEDENCE, BAR_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo CARET_EQ_INFO = const PrecedenceInfo(
+ '^=', ASSIGNMENT_PRECEDENCE, CARET_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo EQ_INFO = const PrecedenceInfo(
+ '=', ASSIGNMENT_PRECEDENCE, EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo GT_GT_EQ_INFO = const PrecedenceInfo(
+ '>>=', ASSIGNMENT_PRECEDENCE, GT_GT_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo LT_LT_EQ_INFO = const PrecedenceInfo(
+ '<<=', ASSIGNMENT_PRECEDENCE, LT_LT_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo MINUS_EQ_INFO = const PrecedenceInfo(
+ '-=', ASSIGNMENT_PRECEDENCE, MINUS_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo PERCENT_EQ_INFO = const PrecedenceInfo(
+ '%=', ASSIGNMENT_PRECEDENCE, PERCENT_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo PLUS_EQ_INFO = const PrecedenceInfo(
+ '+=', ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo SLASH_EQ_INFO = const PrecedenceInfo(
+ '/=', ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo STAR_EQ_INFO = const PrecedenceInfo(
+ '*=', ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo TILDE_SLASH_EQ_INFO = const PrecedenceInfo(
+ '~/=', ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN,
+ isOperator: true);
const PrecedenceInfo QUESTION_QUESTION_EQ_INFO = const PrecedenceInfo(
- '??=', ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN);
+ '??=', ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN,
+ isOperator: true);
const PrecedenceInfo QUESTION_INFO =
- const PrecedenceInfo('?', 3, QUESTION_TOKEN);
+ const PrecedenceInfo('?', 3, QUESTION_TOKEN, isOperator: true);
const PrecedenceInfo QUESTION_QUESTION_INFO =
- const PrecedenceInfo('??', 4, QUESTION_QUESTION_TOKEN);
+ const PrecedenceInfo('??', 4, QUESTION_QUESTION_TOKEN, isOperator: true);
const PrecedenceInfo BAR_BAR_INFO =
- const PrecedenceInfo('||', 5, BAR_BAR_TOKEN);
+ const PrecedenceInfo('||', 5, BAR_BAR_TOKEN, isOperator: true);
const PrecedenceInfo AMPERSAND_AMPERSAND_INFO =
- const PrecedenceInfo('&&', 6, AMPERSAND_AMPERSAND_TOKEN);
+ const PrecedenceInfo('&&', 6, AMPERSAND_AMPERSAND_TOKEN, isOperator: true);
-const PrecedenceInfo BAR_INFO = const PrecedenceInfo('|', 9, BAR_TOKEN);
+const PrecedenceInfo BAR_INFO =
+ const PrecedenceInfo('|', 9, BAR_TOKEN, isOperator: true);
-const PrecedenceInfo CARET_INFO = const PrecedenceInfo('^', 10, CARET_TOKEN);
+const PrecedenceInfo CARET_INFO =
+ const PrecedenceInfo('^', 10, CARET_TOKEN, isOperator: true);
const PrecedenceInfo AMPERSAND_INFO =
- const PrecedenceInfo('&', 11, AMPERSAND_TOKEN);
+ const PrecedenceInfo('&', 11, AMPERSAND_TOKEN, isOperator: true);
// Equality operators.
const int EQUALITY_PRECEDENCE = 7;
const PrecedenceInfo BANG_EQ_EQ_INFO =
const PrecedenceInfo('!==', EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN);
-const PrecedenceInfo BANG_EQ_INFO =
- const PrecedenceInfo('!=', EQUALITY_PRECEDENCE, BANG_EQ_TOKEN);
+const PrecedenceInfo BANG_EQ_INFO = const PrecedenceInfo(
+ '!=', EQUALITY_PRECEDENCE, BANG_EQ_TOKEN,
+ isOperator: true);
const PrecedenceInfo EQ_EQ_EQ_INFO =
const PrecedenceInfo('===', EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN);
-const PrecedenceInfo EQ_EQ_INFO =
- const PrecedenceInfo('==', EQUALITY_PRECEDENCE, EQ_EQ_TOKEN);
+const PrecedenceInfo EQ_EQ_INFO = const PrecedenceInfo(
+ '==', EQUALITY_PRECEDENCE, EQ_EQ_TOKEN,
+ isOperator: true);
// Relational operators.
const int RELATIONAL_PRECEDENCE = 8;
-const PrecedenceInfo GT_EQ_INFO =
- const PrecedenceInfo('>=', RELATIONAL_PRECEDENCE, GT_EQ_TOKEN);
-const PrecedenceInfo GT_INFO =
- const PrecedenceInfo('>', RELATIONAL_PRECEDENCE, GT_TOKEN);
+const PrecedenceInfo GT_EQ_INFO = const PrecedenceInfo(
+ '>=', RELATIONAL_PRECEDENCE, GT_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo GT_INFO = const PrecedenceInfo(
+ '>', RELATIONAL_PRECEDENCE, GT_TOKEN,
+ isOperator: true);
const PrecedenceInfo IS_INFO =
const PrecedenceInfo('is', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN);
const PrecedenceInfo AS_INFO =
const PrecedenceInfo('as', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN);
-const PrecedenceInfo LT_EQ_INFO =
- const PrecedenceInfo('<=', RELATIONAL_PRECEDENCE, LT_EQ_TOKEN);
-const PrecedenceInfo LT_INFO =
- const PrecedenceInfo('<', RELATIONAL_PRECEDENCE, LT_TOKEN);
+const PrecedenceInfo LT_EQ_INFO = const PrecedenceInfo(
+ '<=', RELATIONAL_PRECEDENCE, LT_EQ_TOKEN,
+ isOperator: true);
+const PrecedenceInfo LT_INFO = const PrecedenceInfo(
+ '<', RELATIONAL_PRECEDENCE, LT_TOKEN,
+ isOperator: true);
// Shift operators.
-const PrecedenceInfo GT_GT_INFO = const PrecedenceInfo('>>', 12, GT_GT_TOKEN);
-const PrecedenceInfo LT_LT_INFO = const PrecedenceInfo('<<', 12, LT_LT_TOKEN);
+const PrecedenceInfo GT_GT_INFO =
+ const PrecedenceInfo('>>', 12, GT_GT_TOKEN, isOperator: true);
+const PrecedenceInfo LT_LT_INFO =
+ const PrecedenceInfo('<<', 12, LT_LT_TOKEN, isOperator: true);
// Additive operators.
-const PrecedenceInfo MINUS_INFO = const PrecedenceInfo('-', 13, MINUS_TOKEN);
-const PrecedenceInfo PLUS_INFO = const PrecedenceInfo('+', 13, PLUS_TOKEN);
+const PrecedenceInfo MINUS_INFO =
+ const PrecedenceInfo('-', 13, MINUS_TOKEN, isOperator: true);
+const PrecedenceInfo PLUS_INFO =
+ const PrecedenceInfo('+', 13, PLUS_TOKEN, isOperator: true);
// Multiplicative operators.
const PrecedenceInfo PERCENT_INFO =
- const PrecedenceInfo('%', 14, PERCENT_TOKEN);
-const PrecedenceInfo SLASH_INFO = const PrecedenceInfo('/', 14, SLASH_TOKEN);
-const PrecedenceInfo STAR_INFO = const PrecedenceInfo('*', 14, STAR_TOKEN);
+ const PrecedenceInfo('%', 14, PERCENT_TOKEN, isOperator: true);
+const PrecedenceInfo SLASH_INFO =
+ const PrecedenceInfo('/', 14, SLASH_TOKEN, isOperator: true);
+const PrecedenceInfo STAR_INFO =
+ const PrecedenceInfo('*', 14, STAR_TOKEN, isOperator: true);
const PrecedenceInfo TILDE_SLASH_INFO =
- const PrecedenceInfo('~/', 14, TILDE_SLASH_TOKEN);
+ const PrecedenceInfo('~/', 14, TILDE_SLASH_TOKEN, isOperator: true);
const int POSTFIX_PRECEDENCE = 15;
const PrecedenceInfo PERIOD_INFO =
const PrecedenceInfo('.', POSTFIX_PRECEDENCE, PERIOD_TOKEN);
-const PrecedenceInfo QUESTION_PERIOD_INFO =
- const PrecedenceInfo('?.', POSTFIX_PRECEDENCE, QUESTION_PERIOD_TOKEN);
+const PrecedenceInfo QUESTION_PERIOD_INFO = const PrecedenceInfo(
+ '?.', POSTFIX_PRECEDENCE, QUESTION_PERIOD_TOKEN,
+ isOperator: true);
const PrecedenceInfo KEYWORD_INFO =
const PrecedenceInfo('keyword', 0, KEYWORD_TOKEN);
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/scanner/token.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698