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

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

Issue 2837473002: merge fasta.PrecedenceInfo into analyzer.TokenType (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 fasta.scanner.precedence; 5 library fasta.scanner.precedence;
6 6
7 import '../../scanner/token.dart'; 7 import '../../scanner/token.dart';
8 import '../../scanner/token.dart' as analyzer;
8 import 'token_constants.dart'; 9 import 'token_constants.dart';
9 10
10 class PrecedenceInfo extends TokenType { 11 const int NO_PRECEDENCE = analyzer.NO_PRECEDENCE;
11 const PrecedenceInfo(String value, String name, int precedence, int kind, 12 const int ASSIGNMENT_PRECEDENCE = analyzer.ASSIGNMENT_PRECEDENCE;
12 {bool isOperator: false, bool isUserDefinableOperator: false}) 13 const int CASCADE_PRECEDENCE = analyzer.CASCADE_PRECEDENCE;
13 : super(value, name, precedence, kind, 14 const int CONDITIONAL_PRECEDENCE = analyzer.CONDITIONAL_PRECEDENCE;
14 isOperator: isOperator, 15 const int IF_NULL_PRECEDENCE = analyzer.IF_NULL_PRECEDENCE;
15 isUserDefinableOperator: isUserDefinableOperator); 16 const int LOGICAL_OR_PRECEDENCE = analyzer.LOGICAL_OR_PRECEDENCE;
16 17 const int LOGICAL_AND_PRECEDENCE = analyzer.LOGICAL_AND_PRECEDENCE;
17 toString() => 'PrecedenceInfo($value, $name, $precedence, $kind)'; 18 const int EQUALITY_PRECEDENCE = analyzer.EQUALITY_PRECEDENCE;
18 19 const int RELATIONAL_PRECEDENCE = analyzer.RELATIONAL_PRECEDENCE;
19 static const List<PrecedenceInfo> all = const <PrecedenceInfo>[ 20 const int BITWISE_OR_PRECEDENCE = analyzer.BITWISE_OR_PRECEDENCE;
20 BACKPING_INFO, 21 const int BITWISE_XOR_PRECEDENCE = analyzer.BITWISE_XOR_PRECEDENCE;
21 BACKSLASH_INFO, 22 const int BITWISE_AND_PRECEDENCE = analyzer.BITWISE_AND_PRECEDENCE;
22 PERIOD_PERIOD_PERIOD_INFO, 23 const int SHIFT_PRECEDENCE = analyzer.SHIFT_PRECEDENCE;
23 PERIOD_PERIOD_INFO, 24 const int ADDITIVE_PRECEDENCE = analyzer.ADDITIVE_PRECEDENCE;
24 BANG_INFO, 25 const int MULTIPLICATIVE_PRECEDENCE = analyzer.MULTIPLICATIVE_PRECEDENCE;
25 COLON_INFO, 26 const int PREFIX_PRECEDENCE = analyzer.PREFIX_PRECEDENCE;
26 INDEX_INFO, 27 const int POSTFIX_PRECEDENCE = analyzer.POSTFIX_PRECEDENCE;
27 MINUS_MINUS_INFO,
28 PLUS_PLUS_INFO,
29 TILDE_INFO,
30 FUNCTION_INFO,
31 HASH_INFO,
32 INDEX_EQ_INFO,
33 SEMICOLON_INFO,
34 COMMA_INFO,
35 AT_INFO,
36 AMPERSAND_EQ_INFO,
37 BAR_EQ_INFO,
38 CARET_EQ_INFO,
39 EQ_INFO,
40 GT_GT_EQ_INFO,
41 LT_LT_EQ_INFO,
42 MINUS_EQ_INFO,
43 PERCENT_EQ_INFO,
44 PLUS_EQ_INFO,
45 SLASH_EQ_INFO,
46 STAR_EQ_INFO,
47 TILDE_SLASH_EQ_INFO,
48 QUESTION_QUESTION_EQ_INFO,
49 QUESTION_INFO,
50 QUESTION_QUESTION_INFO,
51 BAR_BAR_INFO,
52 AMPERSAND_AMPERSAND_INFO,
53 BAR_INFO,
54 CARET_INFO,
55 AMPERSAND_INFO,
56 BANG_EQ_EQ_INFO,
57 BANG_EQ_INFO,
58 EQ_EQ_EQ_INFO,
59 EQ_EQ_INFO,
60 GT_EQ_INFO,
61 GT_INFO,
62 IS_INFO,
63 AS_INFO,
64 LT_EQ_INFO,
65 LT_INFO,
66 GT_GT_INFO,
67 LT_LT_INFO,
68 MINUS_INFO,
69 PLUS_INFO,
70 PERCENT_INFO,
71 SLASH_INFO,
72 STAR_INFO,
73 TILDE_SLASH_INFO,
74 PERIOD_INFO,
75 QUESTION_PERIOD_INFO,
76 KEYWORD_INFO,
77 EOF_INFO,
78 IDENTIFIER_INFO,
79 BAD_INPUT_INFO,
80 OPEN_PAREN_INFO,
81 CLOSE_PAREN_INFO,
82 OPEN_CURLY_BRACKET_INFO,
83 CLOSE_CURLY_BRACKET_INFO,
84 INT_INFO,
85 STRING_INFO,
86 OPEN_SQUARE_BRACKET_INFO,
87 CLOSE_SQUARE_BRACKET_INFO,
88 DOUBLE_INFO,
89 STRING_INTERPOLATION_INFO,
90 STRING_INTERPOLATION_IDENTIFIER_INFO,
91 HEXADECIMAL_INFO,
92 SINGLE_LINE_COMMENT_INFO,
93 MULTI_LINE_COMMENT_INFO,
94 GENERIC_METHOD_TYPE_ASSIGN,
95 GENERIC_METHOD_TYPE_LIST,
96 ];
97 }
98
99 const int NO_PRECEDENCE = 0;
100 const int ASSIGNMENT_PRECEDENCE = 1;
101 const int CASCADE_PRECEDENCE = 2;
102 const int CONDITIONAL_PRECEDENCE = 3;
103 const int IF_NULL_PRECEDENCE = 4;
104 const int LOGICAL_OR_PRECEDENCE = 5;
105 const int LOGICAL_AND_PRECEDENCE = 6;
106 const int EQUALITY_PRECEDENCE = 7;
107 const int RELATIONAL_PRECEDENCE = 8;
108 const int BITWISE_OR_PRECEDENCE = 9;
109 const int BITWISE_XOR_PRECEDENCE = 10;
110 const int BITWISE_AND_PRECEDENCE = 11;
111 const int SHIFT_PRECEDENCE = 12;
112 const int ADDITIVE_PRECEDENCE = 13;
113 const int MULTIPLICATIVE_PRECEDENCE = 14;
114 const int PREFIX_PRECEDENCE = 15;
115 const int POSTFIX_PRECEDENCE = 16;
116 28
117 // TODO(ahe): The following are not tokens in Dart. 29 // TODO(ahe): The following are not tokens in Dart.
118 const PrecedenceInfo BACKPING_INFO = 30 const TokenType BACKPING_INFO =
119 const PrecedenceInfo('`', 'BACKPING', NO_PRECEDENCE, BACKPING_TOKEN); 31 const TokenType('`', 'BACKPING', NO_PRECEDENCE, BACKPING_TOKEN);
120 const PrecedenceInfo BACKSLASH_INFO = 32 const TokenType BACKSLASH_INFO =
121 const PrecedenceInfo('\\', 'BACKSLASH', NO_PRECEDENCE, BACKSLASH_TOKEN); 33 const TokenType('\\', 'BACKSLASH', NO_PRECEDENCE, BACKSLASH_TOKEN);
122 const PrecedenceInfo PERIOD_PERIOD_PERIOD_INFO = const PrecedenceInfo( 34 const TokenType PERIOD_PERIOD_PERIOD_INFO = const TokenType(
123 '...', 'PERIOD_PERIOD_PERIOD', NO_PRECEDENCE, PERIOD_PERIOD_PERIOD_TOKEN); 35 '...', 'PERIOD_PERIOD_PERIOD', NO_PRECEDENCE, PERIOD_PERIOD_PERIOD_TOKEN);
124 36
125 /** 37 /**
126 * The cascade operator has the lowest precedence of any operator 38 * The cascade operator has the lowest precedence of any operator
127 * except assignment. 39 * except assignment.
128 */ 40 */
129 const PrecedenceInfo PERIOD_PERIOD_INFO = const PrecedenceInfo( 41 const TokenType PERIOD_PERIOD_INFO = const TokenType(
130 '..', 'PERIOD_PERIOD', CASCADE_PRECEDENCE, PERIOD_PERIOD_TOKEN, 42 '..', 'PERIOD_PERIOD', CASCADE_PRECEDENCE, PERIOD_PERIOD_TOKEN,
131 isOperator: true); 43 isOperator: true);
132 44
133 const PrecedenceInfo BANG_INFO = const PrecedenceInfo( 45 const TokenType BANG_INFO = const TokenType(
134 '!', 'BANG', PREFIX_PRECEDENCE, BANG_TOKEN, 46 '!', 'BANG', PREFIX_PRECEDENCE, BANG_TOKEN,
135 isOperator: true); 47 isOperator: true);
136 const PrecedenceInfo COLON_INFO = 48 const TokenType COLON_INFO =
137 const PrecedenceInfo(':', 'COLON', NO_PRECEDENCE, COLON_TOKEN); 49 const TokenType(':', 'COLON', NO_PRECEDENCE, COLON_TOKEN);
138 const PrecedenceInfo INDEX_INFO = const PrecedenceInfo( 50 const TokenType INDEX_INFO = const TokenType(
139 '[]', 'INDEX', NO_PRECEDENCE, INDEX_TOKEN, 51 '[]', 'INDEX', NO_PRECEDENCE, INDEX_TOKEN,
140 isOperator: true, isUserDefinableOperator: true); 52 isOperator: true, isUserDefinableOperator: true);
141 const PrecedenceInfo MINUS_MINUS_INFO = const PrecedenceInfo( 53 const TokenType MINUS_MINUS_INFO = const TokenType(
142 '--', 'MINUS_MINUS', POSTFIX_PRECEDENCE, MINUS_MINUS_TOKEN, 54 '--', 'MINUS_MINUS', POSTFIX_PRECEDENCE, MINUS_MINUS_TOKEN,
143 isOperator: true); 55 isOperator: true);
144 const PrecedenceInfo PLUS_PLUS_INFO = const PrecedenceInfo( 56 const TokenType PLUS_PLUS_INFO = const TokenType(
145 '++', 'PLUS_PLUS', POSTFIX_PRECEDENCE, PLUS_PLUS_TOKEN, 57 '++', 'PLUS_PLUS', POSTFIX_PRECEDENCE, PLUS_PLUS_TOKEN,
146 isOperator: true); 58 isOperator: true);
147 const PrecedenceInfo TILDE_INFO = const PrecedenceInfo( 59 const TokenType TILDE_INFO = const TokenType(
148 '~', 'TILDE', PREFIX_PRECEDENCE, TILDE_TOKEN, 60 '~', 'TILDE', PREFIX_PRECEDENCE, TILDE_TOKEN,
149 isOperator: true, isUserDefinableOperator: true); 61 isOperator: true, isUserDefinableOperator: true);
150 62
151 const PrecedenceInfo FUNCTION_INFO = 63 const TokenType FUNCTION_INFO =
152 const PrecedenceInfo('=>', 'FUNCTION', NO_PRECEDENCE, FUNCTION_TOKEN); 64 const TokenType('=>', 'FUNCTION', NO_PRECEDENCE, FUNCTION_TOKEN);
153 const PrecedenceInfo HASH_INFO = 65 const TokenType HASH_INFO =
154 const PrecedenceInfo('#', 'HASH', NO_PRECEDENCE, HASH_TOKEN); 66 const TokenType('#', 'HASH', NO_PRECEDENCE, HASH_TOKEN);
155 const PrecedenceInfo INDEX_EQ_INFO = const PrecedenceInfo( 67 const TokenType INDEX_EQ_INFO = const TokenType(
156 '[]=', 'INDEX_EQ', NO_PRECEDENCE, INDEX_EQ_TOKEN, 68 '[]=', 'INDEX_EQ', NO_PRECEDENCE, INDEX_EQ_TOKEN,
157 isOperator: true, isUserDefinableOperator: true); 69 isOperator: true, isUserDefinableOperator: true);
158 const PrecedenceInfo SEMICOLON_INFO = 70 const TokenType SEMICOLON_INFO =
159 const PrecedenceInfo(';', 'SEMICOLON', NO_PRECEDENCE, SEMICOLON_TOKEN); 71 const TokenType(';', 'SEMICOLON', NO_PRECEDENCE, SEMICOLON_TOKEN);
160 const PrecedenceInfo COMMA_INFO = 72 const TokenType COMMA_INFO =
161 const PrecedenceInfo(',', 'COMMA', NO_PRECEDENCE, COMMA_TOKEN); 73 const TokenType(',', 'COMMA', NO_PRECEDENCE, COMMA_TOKEN);
162 74
163 const PrecedenceInfo AT_INFO = 75 const TokenType AT_INFO = const TokenType('@', 'AT', NO_PRECEDENCE, AT_TOKEN);
164 const PrecedenceInfo('@', 'AT', NO_PRECEDENCE, AT_TOKEN);
165 76
166 // Assignment operators. 77 // Assignment operators.
167 const PrecedenceInfo AMPERSAND_EQ_INFO = const PrecedenceInfo( 78 const TokenType AMPERSAND_EQ_INFO = const TokenType(
168 '&=', 'AMPERSAND_EQ', ASSIGNMENT_PRECEDENCE, AMPERSAND_EQ_TOKEN, 79 '&=', 'AMPERSAND_EQ', ASSIGNMENT_PRECEDENCE, AMPERSAND_EQ_TOKEN,
169 isOperator: true); 80 isOperator: true);
170 const PrecedenceInfo BAR_EQ_INFO = const PrecedenceInfo( 81 const TokenType BAR_EQ_INFO = const TokenType(
171 '|=', 'BAR_EQ', ASSIGNMENT_PRECEDENCE, BAR_EQ_TOKEN, 82 '|=', 'BAR_EQ', ASSIGNMENT_PRECEDENCE, BAR_EQ_TOKEN,
172 isOperator: true); 83 isOperator: true);
173 const PrecedenceInfo CARET_EQ_INFO = const PrecedenceInfo( 84 const TokenType CARET_EQ_INFO = const TokenType(
174 '^=', 'CARET_EQ', ASSIGNMENT_PRECEDENCE, CARET_EQ_TOKEN, 85 '^=', 'CARET_EQ', ASSIGNMENT_PRECEDENCE, CARET_EQ_TOKEN,
175 isOperator: true); 86 isOperator: true);
176 const PrecedenceInfo EQ_INFO = const PrecedenceInfo( 87 const TokenType EQ_INFO = const TokenType(
177 '=', 'EQ', ASSIGNMENT_PRECEDENCE, EQ_TOKEN, 88 '=', 'EQ', ASSIGNMENT_PRECEDENCE, EQ_TOKEN,
178 isOperator: true); 89 isOperator: true);
179 const PrecedenceInfo GT_GT_EQ_INFO = const PrecedenceInfo( 90 const TokenType GT_GT_EQ_INFO = const TokenType(
180 '>>=', 'GT_GT_EQ', ASSIGNMENT_PRECEDENCE, GT_GT_EQ_TOKEN, 91 '>>=', 'GT_GT_EQ', ASSIGNMENT_PRECEDENCE, GT_GT_EQ_TOKEN,
181 isOperator: true); 92 isOperator: true);
182 const PrecedenceInfo LT_LT_EQ_INFO = const PrecedenceInfo( 93 const TokenType LT_LT_EQ_INFO = const TokenType(
183 '<<=', 'LT_LT_EQ', ASSIGNMENT_PRECEDENCE, LT_LT_EQ_TOKEN, 94 '<<=', 'LT_LT_EQ', ASSIGNMENT_PRECEDENCE, LT_LT_EQ_TOKEN,
184 isOperator: true); 95 isOperator: true);
185 const PrecedenceInfo MINUS_EQ_INFO = const PrecedenceInfo( 96 const TokenType MINUS_EQ_INFO = const TokenType(
186 '-=', 'MINUS_EQ', ASSIGNMENT_PRECEDENCE, MINUS_EQ_TOKEN, 97 '-=', 'MINUS_EQ', ASSIGNMENT_PRECEDENCE, MINUS_EQ_TOKEN,
187 isOperator: true); 98 isOperator: true);
188 const PrecedenceInfo PERCENT_EQ_INFO = const PrecedenceInfo( 99 const TokenType PERCENT_EQ_INFO = const TokenType(
189 '%=', 'PERCENT_EQ', ASSIGNMENT_PRECEDENCE, PERCENT_EQ_TOKEN, 100 '%=', 'PERCENT_EQ', ASSIGNMENT_PRECEDENCE, PERCENT_EQ_TOKEN,
190 isOperator: true); 101 isOperator: true);
191 const PrecedenceInfo PLUS_EQ_INFO = const PrecedenceInfo( 102 const TokenType PLUS_EQ_INFO = const TokenType(
192 '+=', 'PLUS_EQ', ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN, 103 '+=', 'PLUS_EQ', ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN,
193 isOperator: true); 104 isOperator: true);
194 const PrecedenceInfo SLASH_EQ_INFO = const PrecedenceInfo( 105 const TokenType SLASH_EQ_INFO = const TokenType(
195 '/=', 'SLASH_EQ', ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN, 106 '/=', 'SLASH_EQ', ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN,
196 isOperator: true); 107 isOperator: true);
197 const PrecedenceInfo STAR_EQ_INFO = const PrecedenceInfo( 108 const TokenType STAR_EQ_INFO = const TokenType(
198 '*=', 'STAR_EQ', ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN, 109 '*=', 'STAR_EQ', ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN,
199 isOperator: true); 110 isOperator: true);
200 const PrecedenceInfo TILDE_SLASH_EQ_INFO = const PrecedenceInfo( 111 const TokenType TILDE_SLASH_EQ_INFO = const TokenType(
201 '~/=', 'TILDE_SLASH_EQ', ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN, 112 '~/=', 'TILDE_SLASH_EQ', ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN,
202 isOperator: true); 113 isOperator: true);
203 const PrecedenceInfo QUESTION_QUESTION_EQ_INFO = const PrecedenceInfo('??=', 114 const TokenType QUESTION_QUESTION_EQ_INFO = const TokenType('??=',
204 'QUESTION_QUESTION_EQ', ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN, 115 'QUESTION_QUESTION_EQ', ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN,
205 isOperator: true); 116 isOperator: true);
206 117
207 const PrecedenceInfo QUESTION_INFO = const PrecedenceInfo( 118 const TokenType QUESTION_INFO = const TokenType(
208 '?', 'QUESTION', CONDITIONAL_PRECEDENCE, QUESTION_TOKEN, 119 '?', 'QUESTION', CONDITIONAL_PRECEDENCE, QUESTION_TOKEN,
209 isOperator: true); 120 isOperator: true);
210 121
211 const PrecedenceInfo QUESTION_QUESTION_INFO = const PrecedenceInfo( 122 const TokenType QUESTION_QUESTION_INFO = const TokenType(
212 '??', 'QUESTION_QUESTION', IF_NULL_PRECEDENCE, QUESTION_QUESTION_TOKEN, 123 '??', 'QUESTION_QUESTION', IF_NULL_PRECEDENCE, QUESTION_QUESTION_TOKEN,
213 isOperator: true); 124 isOperator: true);
214 125
215 const PrecedenceInfo BAR_BAR_INFO = const PrecedenceInfo( 126 const TokenType BAR_BAR_INFO = const TokenType(
216 '||', 'BAR_BAR', LOGICAL_OR_PRECEDENCE, BAR_BAR_TOKEN, 127 '||', 'BAR_BAR', LOGICAL_OR_PRECEDENCE, BAR_BAR_TOKEN,
217 isOperator: true); 128 isOperator: true);
218 129
219 const PrecedenceInfo AMPERSAND_AMPERSAND_INFO = const PrecedenceInfo('&&', 130 const TokenType AMPERSAND_AMPERSAND_INFO = const TokenType('&&',
220 'AMPERSAND_AMPERSAND', LOGICAL_AND_PRECEDENCE, AMPERSAND_AMPERSAND_TOKEN, 131 'AMPERSAND_AMPERSAND', LOGICAL_AND_PRECEDENCE, AMPERSAND_AMPERSAND_TOKEN,
221 isOperator: true); 132 isOperator: true);
222 133
223 const PrecedenceInfo BAR_INFO = const PrecedenceInfo( 134 const TokenType BAR_INFO = const TokenType(
224 '|', 'BAR', BITWISE_OR_PRECEDENCE, BAR_TOKEN, 135 '|', 'BAR', BITWISE_OR_PRECEDENCE, BAR_TOKEN,
225 isOperator: true, isUserDefinableOperator: true); 136 isOperator: true, isUserDefinableOperator: true);
226 137
227 const PrecedenceInfo CARET_INFO = const PrecedenceInfo( 138 const TokenType CARET_INFO = const TokenType(
228 '^', 'CARET', BITWISE_XOR_PRECEDENCE, CARET_TOKEN, 139 '^', 'CARET', BITWISE_XOR_PRECEDENCE, CARET_TOKEN,
229 isOperator: true, isUserDefinableOperator: true); 140 isOperator: true, isUserDefinableOperator: true);
230 141
231 const PrecedenceInfo AMPERSAND_INFO = const PrecedenceInfo( 142 const TokenType AMPERSAND_INFO = const TokenType(
232 '&', 'AMPERSAND', BITWISE_AND_PRECEDENCE, AMPERSAND_TOKEN, 143 '&', 'AMPERSAND', BITWISE_AND_PRECEDENCE, AMPERSAND_TOKEN,
233 isOperator: true, isUserDefinableOperator: true); 144 isOperator: true, isUserDefinableOperator: true);
234 145
235 // Equality operators. 146 // Equality operators.
236 const PrecedenceInfo BANG_EQ_EQ_INFO = const PrecedenceInfo( 147 const TokenType BANG_EQ_EQ_INFO =
237 '!==', 'BANG_EQ_EQ', EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN); 148 const TokenType('!==', 'BANG_EQ_EQ', EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN);
238 const PrecedenceInfo BANG_EQ_INFO = const PrecedenceInfo( 149 const TokenType BANG_EQ_INFO = const TokenType(
239 '!=', 'BANG_EQ', EQUALITY_PRECEDENCE, BANG_EQ_TOKEN, 150 '!=', 'BANG_EQ', EQUALITY_PRECEDENCE, BANG_EQ_TOKEN,
240 isOperator: true); 151 isOperator: true);
241 const PrecedenceInfo EQ_EQ_EQ_INFO = const PrecedenceInfo( 152 const TokenType EQ_EQ_EQ_INFO =
242 '===', 'EQ_EQ_EQ', EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN); 153 const TokenType('===', 'EQ_EQ_EQ', EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN);
243 const PrecedenceInfo EQ_EQ_INFO = const PrecedenceInfo( 154 const TokenType EQ_EQ_INFO = const TokenType(
244 '==', 'EQ_EQ', EQUALITY_PRECEDENCE, EQ_EQ_TOKEN, 155 '==', 'EQ_EQ', EQUALITY_PRECEDENCE, EQ_EQ_TOKEN,
245 isOperator: true, isUserDefinableOperator: true); 156 isOperator: true, isUserDefinableOperator: true);
246 157
247 // Relational operators. 158 // Relational operators.
248 const PrecedenceInfo GT_EQ_INFO = const PrecedenceInfo( 159 const TokenType GT_EQ_INFO = const TokenType(
249 '>=', 'GT_EQ', RELATIONAL_PRECEDENCE, GT_EQ_TOKEN, 160 '>=', 'GT_EQ', RELATIONAL_PRECEDENCE, GT_EQ_TOKEN,
250 isOperator: true, isUserDefinableOperator: true); 161 isOperator: true, isUserDefinableOperator: true);
251 const PrecedenceInfo GT_INFO = const PrecedenceInfo( 162 const TokenType GT_INFO = const TokenType(
252 '>', 'GT', RELATIONAL_PRECEDENCE, GT_TOKEN, 163 '>', 'GT', RELATIONAL_PRECEDENCE, GT_TOKEN,
253 isOperator: true, isUserDefinableOperator: true); 164 isOperator: true, isUserDefinableOperator: true);
254 const PrecedenceInfo IS_INFO = 165 const TokenType IS_INFO =
255 const PrecedenceInfo('is', 'IS', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); 166 const TokenType('is', 'IS', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN);
256 const PrecedenceInfo AS_INFO = 167 const TokenType AS_INFO =
257 const PrecedenceInfo('as', 'AS', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); 168 const TokenType('as', 'AS', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN);
258 const PrecedenceInfo LT_EQ_INFO = const PrecedenceInfo( 169 const TokenType LT_EQ_INFO = const TokenType(
259 '<=', 'LT_EQ', RELATIONAL_PRECEDENCE, LT_EQ_TOKEN, 170 '<=', 'LT_EQ', RELATIONAL_PRECEDENCE, LT_EQ_TOKEN,
260 isOperator: true, isUserDefinableOperator: true); 171 isOperator: true, isUserDefinableOperator: true);
261 const PrecedenceInfo LT_INFO = const PrecedenceInfo( 172 const TokenType LT_INFO = const TokenType(
262 '<', 'LT', RELATIONAL_PRECEDENCE, LT_TOKEN, 173 '<', 'LT', RELATIONAL_PRECEDENCE, LT_TOKEN,
263 isOperator: true, isUserDefinableOperator: true); 174 isOperator: true, isUserDefinableOperator: true);
264 175
265 // Shift operators. 176 // Shift operators.
266 const PrecedenceInfo GT_GT_INFO = const PrecedenceInfo( 177 const TokenType GT_GT_INFO = const TokenType(
267 '>>', 'GT_GT', SHIFT_PRECEDENCE, GT_GT_TOKEN, 178 '>>', 'GT_GT', SHIFT_PRECEDENCE, GT_GT_TOKEN,
268 isOperator: true, isUserDefinableOperator: true); 179 isOperator: true, isUserDefinableOperator: true);
269 const PrecedenceInfo LT_LT_INFO = const PrecedenceInfo( 180 const TokenType LT_LT_INFO = const TokenType(
270 '<<', 'LT_LT', SHIFT_PRECEDENCE, LT_LT_TOKEN, 181 '<<', 'LT_LT', SHIFT_PRECEDENCE, LT_LT_TOKEN,
271 isOperator: true, isUserDefinableOperator: true); 182 isOperator: true, isUserDefinableOperator: true);
272 183
273 // Additive operators. 184 // Additive operators.
274 const PrecedenceInfo MINUS_INFO = const PrecedenceInfo( 185 const TokenType MINUS_INFO = const TokenType(
275 '-', 'MINUS', ADDITIVE_PRECEDENCE, MINUS_TOKEN, 186 '-', 'MINUS', ADDITIVE_PRECEDENCE, MINUS_TOKEN,
276 isOperator: true, isUserDefinableOperator: true); 187 isOperator: true, isUserDefinableOperator: true);
277 const PrecedenceInfo PLUS_INFO = const PrecedenceInfo( 188 const TokenType PLUS_INFO = const TokenType(
278 '+', 'PLUS', ADDITIVE_PRECEDENCE, PLUS_TOKEN, 189 '+', 'PLUS', ADDITIVE_PRECEDENCE, PLUS_TOKEN,
279 isOperator: true, isUserDefinableOperator: true); 190 isOperator: true, isUserDefinableOperator: true);
280 191
281 // Multiplicative operators. 192 // Multiplicative operators.
282 const PrecedenceInfo PERCENT_INFO = const PrecedenceInfo( 193 const TokenType PERCENT_INFO = const TokenType(
283 '%', 'PERCENT', MULTIPLICATIVE_PRECEDENCE, PERCENT_TOKEN, 194 '%', 'PERCENT', MULTIPLICATIVE_PRECEDENCE, PERCENT_TOKEN,
284 isOperator: true, isUserDefinableOperator: true); 195 isOperator: true, isUserDefinableOperator: true);
285 const PrecedenceInfo SLASH_INFO = const PrecedenceInfo( 196 const TokenType SLASH_INFO = const TokenType(
286 '/', 'SLASH', MULTIPLICATIVE_PRECEDENCE, SLASH_TOKEN, 197 '/', 'SLASH', MULTIPLICATIVE_PRECEDENCE, SLASH_TOKEN,
287 isOperator: true, isUserDefinableOperator: true); 198 isOperator: true, isUserDefinableOperator: true);
288 const PrecedenceInfo STAR_INFO = const PrecedenceInfo( 199 const TokenType STAR_INFO = const TokenType(
289 '*', 'STAR', MULTIPLICATIVE_PRECEDENCE, STAR_TOKEN, 200 '*', 'STAR', MULTIPLICATIVE_PRECEDENCE, STAR_TOKEN,
290 isOperator: true, isUserDefinableOperator: true); 201 isOperator: true, isUserDefinableOperator: true);
291 const PrecedenceInfo TILDE_SLASH_INFO = const PrecedenceInfo( 202 const TokenType TILDE_SLASH_INFO = const TokenType(
292 '~/', 'TILDE_SLASH', MULTIPLICATIVE_PRECEDENCE, TILDE_SLASH_TOKEN, 203 '~/', 'TILDE_SLASH', MULTIPLICATIVE_PRECEDENCE, TILDE_SLASH_TOKEN,
293 isOperator: true, isUserDefinableOperator: true); 204 isOperator: true, isUserDefinableOperator: true);
294 205
295 const PrecedenceInfo PERIOD_INFO = 206 const TokenType PERIOD_INFO =
296 const PrecedenceInfo('.', 'PERIOD', POSTFIX_PRECEDENCE, PERIOD_TOKEN); 207 const TokenType('.', 'PERIOD', POSTFIX_PRECEDENCE, PERIOD_TOKEN);
297 const PrecedenceInfo QUESTION_PERIOD_INFO = const PrecedenceInfo( 208 const TokenType QUESTION_PERIOD_INFO = const TokenType(
298 '?.', 'QUESTION_PERIOD', POSTFIX_PRECEDENCE, QUESTION_PERIOD_TOKEN, 209 '?.', 'QUESTION_PERIOD', POSTFIX_PRECEDENCE, QUESTION_PERIOD_TOKEN,
299 isOperator: true); 210 isOperator: true);
300 211
301 const PrecedenceInfo KEYWORD_INFO = 212 const TokenType KEYWORD_INFO =
302 const PrecedenceInfo('keyword', 'KEYWORD', NO_PRECEDENCE, KEYWORD_TOKEN); 213 const TokenType('keyword', 'KEYWORD', NO_PRECEDENCE, KEYWORD_TOKEN);
303 214
304 const PrecedenceInfo EOF_INFO = 215 const TokenType EOF_INFO = const TokenType('', 'EOF', NO_PRECEDENCE, EOF_TOKEN);
305 const PrecedenceInfo('', 'EOF', NO_PRECEDENCE, EOF_TOKEN);
306 216
307 /// Precedence info used by synthetic tokens that are created during parser 217 /// Precedence info used by synthetic tokens that are created during parser
308 /// recovery (non-analyzer use case). 218 /// recovery (non-analyzer use case).
309 const PrecedenceInfo RECOVERY_INFO = 219 const TokenType RECOVERY_INFO =
310 const PrecedenceInfo('recovery', 'RECOVERY', NO_PRECEDENCE, RECOVERY_TOKEN); 220 const TokenType('recovery', 'RECOVERY', NO_PRECEDENCE, RECOVERY_TOKEN);
311 221
312 const PrecedenceInfo IDENTIFIER_INFO = const PrecedenceInfo( 222 const TokenType IDENTIFIER_INFO = const TokenType(
313 'identifier', 'STRING_INT', NO_PRECEDENCE, IDENTIFIER_TOKEN); 223 'identifier', 'STRING_INT', NO_PRECEDENCE, IDENTIFIER_TOKEN);
314 224
315 const PrecedenceInfo SCRIPT_INFO = 225 const TokenType SCRIPT_INFO =
316 const PrecedenceInfo('script', 'SCRIPT_TAG', NO_PRECEDENCE, SCRIPT_TOKEN); 226 const TokenType('script', 'SCRIPT_TAG', NO_PRECEDENCE, SCRIPT_TOKEN);
317 227
318 const PrecedenceInfo BAD_INPUT_INFO = const PrecedenceInfo( 228 const TokenType BAD_INPUT_INFO = const TokenType(
319 'malformed input', 'BAD_INPUT', NO_PRECEDENCE, BAD_INPUT_TOKEN); 229 'malformed input', 'BAD_INPUT', NO_PRECEDENCE, BAD_INPUT_TOKEN);
320 230
321 const PrecedenceInfo OPEN_PAREN_INFO = const PrecedenceInfo( 231 const TokenType OPEN_PAREN_INFO =
322 '(', 'OPEN_PAREN', POSTFIX_PRECEDENCE, OPEN_PAREN_TOKEN); 232 const TokenType('(', 'OPEN_PAREN', POSTFIX_PRECEDENCE, OPEN_PAREN_TOKEN);
323 233
324 const PrecedenceInfo CLOSE_PAREN_INFO = 234 const TokenType CLOSE_PAREN_INFO =
325 const PrecedenceInfo(')', 'CLOSE_PAREN', NO_PRECEDENCE, CLOSE_PAREN_TOKEN); 235 const TokenType(')', 'CLOSE_PAREN', NO_PRECEDENCE, CLOSE_PAREN_TOKEN);
326 236
327 const PrecedenceInfo OPEN_CURLY_BRACKET_INFO = const PrecedenceInfo( 237 const TokenType OPEN_CURLY_BRACKET_INFO = const TokenType(
328 '{', 'OPEN_CURLY_BRACKET', NO_PRECEDENCE, OPEN_CURLY_BRACKET_TOKEN); 238 '{', 'OPEN_CURLY_BRACKET', NO_PRECEDENCE, OPEN_CURLY_BRACKET_TOKEN);
329 239
330 const PrecedenceInfo CLOSE_CURLY_BRACKET_INFO = const PrecedenceInfo( 240 const TokenType CLOSE_CURLY_BRACKET_INFO = const TokenType(
331 '}', 'CLOSE_CURLY_BRACKET', NO_PRECEDENCE, CLOSE_CURLY_BRACKET_TOKEN); 241 '}', 'CLOSE_CURLY_BRACKET', NO_PRECEDENCE, CLOSE_CURLY_BRACKET_TOKEN);
332 242
333 const PrecedenceInfo INT_INFO = 243 const TokenType INT_INFO =
334 const PrecedenceInfo('int', 'INT', NO_PRECEDENCE, INT_TOKEN); 244 const TokenType('int', 'INT', NO_PRECEDENCE, INT_TOKEN);
335 245
336 const PrecedenceInfo STRING_INFO = 246 const TokenType STRING_INFO =
337 const PrecedenceInfo('string', 'STRING', NO_PRECEDENCE, STRING_TOKEN); 247 const TokenType('string', 'STRING', NO_PRECEDENCE, STRING_TOKEN);
338 248
339 const PrecedenceInfo OPEN_SQUARE_BRACKET_INFO = const PrecedenceInfo( 249 const TokenType OPEN_SQUARE_BRACKET_INFO = const TokenType(
340 '[', 'OPEN_SQUARE_BRACKET', POSTFIX_PRECEDENCE, OPEN_SQUARE_BRACKET_TOKEN); 250 '[', 'OPEN_SQUARE_BRACKET', POSTFIX_PRECEDENCE, OPEN_SQUARE_BRACKET_TOKEN);
341 251
342 const PrecedenceInfo CLOSE_SQUARE_BRACKET_INFO = const PrecedenceInfo( 252 const TokenType CLOSE_SQUARE_BRACKET_INFO = const TokenType(
343 ']', 'CLOSE_SQUARE_BRACKET', NO_PRECEDENCE, CLOSE_SQUARE_BRACKET_TOKEN); 253 ']', 'CLOSE_SQUARE_BRACKET', NO_PRECEDENCE, CLOSE_SQUARE_BRACKET_TOKEN);
344 254
345 const PrecedenceInfo DOUBLE_INFO = 255 const TokenType DOUBLE_INFO =
346 const PrecedenceInfo('double', 'DOUBLE', NO_PRECEDENCE, DOUBLE_TOKEN); 256 const TokenType('double', 'DOUBLE', NO_PRECEDENCE, DOUBLE_TOKEN);
347 257
348 const PrecedenceInfo STRING_INTERPOLATION_INFO = const PrecedenceInfo( 258 const TokenType STRING_INTERPOLATION_INFO = const TokenType(
349 '\${', 259 '\${',
350 'STRING_INTERPOLATION_EXPRESSION', 260 'STRING_INTERPOLATION_EXPRESSION',
351 NO_PRECEDENCE, 261 NO_PRECEDENCE,
352 STRING_INTERPOLATION_TOKEN); 262 STRING_INTERPOLATION_TOKEN);
353 263
354 const PrecedenceInfo STRING_INTERPOLATION_IDENTIFIER_INFO = 264 const TokenType STRING_INTERPOLATION_IDENTIFIER_INFO = const TokenType(
355 const PrecedenceInfo('\$', 'STRING_INTERPOLATION_IDENTIFIER', NO_PRECEDENCE, 265 '\$',
356 STRING_INTERPOLATION_IDENTIFIER_TOKEN); 266 'STRING_INTERPOLATION_IDENTIFIER',
357 267 NO_PRECEDENCE,
358 const PrecedenceInfo HEXADECIMAL_INFO = const PrecedenceInfo( 268 STRING_INTERPOLATION_IDENTIFIER_TOKEN);
269
270 const TokenType HEXADECIMAL_INFO = const TokenType(
359 'hexadecimal', 'HEXADECIMAL', NO_PRECEDENCE, HEXADECIMAL_TOKEN); 271 'hexadecimal', 'HEXADECIMAL', NO_PRECEDENCE, HEXADECIMAL_TOKEN);
360 272
361 const PrecedenceInfo SINGLE_LINE_COMMENT_INFO = const PrecedenceInfo( 273 const TokenType SINGLE_LINE_COMMENT_INFO = const TokenType(
362 'comment', 'SINGLE_LINE_COMMENT', NO_PRECEDENCE, COMMENT_TOKEN); 274 'comment', 'SINGLE_LINE_COMMENT', NO_PRECEDENCE, COMMENT_TOKEN);
363 275
364 const PrecedenceInfo MULTI_LINE_COMMENT_INFO = const PrecedenceInfo( 276 const TokenType MULTI_LINE_COMMENT_INFO = const TokenType(
365 'comment', 'MULTI_LINE_COMMENT', NO_PRECEDENCE, COMMENT_TOKEN); 277 'comment', 'MULTI_LINE_COMMENT', NO_PRECEDENCE, COMMENT_TOKEN);
366 278
367 const PrecedenceInfo GENERIC_METHOD_TYPE_ASSIGN = const PrecedenceInfo( 279 const TokenType GENERIC_METHOD_TYPE_ASSIGN = const TokenType(
368 'generic_comment_assign', 280 'generic_comment_assign',
369 'GENERIC_METHOD_TYPE_ASSIGN', 281 'GENERIC_METHOD_TYPE_ASSIGN',
370 NO_PRECEDENCE, 282 NO_PRECEDENCE,
371 GENERIC_METHOD_TYPE_ASSIGN_TOKEN); 283 GENERIC_METHOD_TYPE_ASSIGN_TOKEN);
372 284
373 const PrecedenceInfo GENERIC_METHOD_TYPE_LIST = const PrecedenceInfo( 285 const TokenType GENERIC_METHOD_TYPE_LIST = const TokenType(
374 'generic_comment_list', 286 'generic_comment_list',
375 'GENERIC_METHOD_TYPE_LIST', 287 'GENERIC_METHOD_TYPE_LIST',
376 NO_PRECEDENCE, 288 NO_PRECEDENCE,
377 GENERIC_METHOD_TYPE_LIST_TOKEN); 289 GENERIC_METHOD_TYPE_LIST_TOKEN);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698