Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 'token_constants.dart'; | 7 import 'token_constants.dart'; |
| 8 | 8 |
| 9 class PrecedenceInfo { | 9 class PrecedenceInfo { |
| 10 final String value; | 10 final String value; |
| 11 final int precedence; | 11 final int precedence; |
| 12 final int kind; | 12 final int kind; |
| 13 final bool isOperator; | |
| 13 | 14 |
| 14 const PrecedenceInfo(this.value, this.precedence, this.kind); | 15 const PrecedenceInfo(this.value, this.precedence, this.kind, |
| 16 {this.isOperator: false}); | |
| 15 | 17 |
| 16 toString() => 'PrecedenceInfo($value, $precedence, $kind)'; | 18 toString() => 'PrecedenceInfo($value, $precedence, $kind)'; |
| 17 | 19 |
| 18 static const List<PrecedenceInfo> all = const <PrecedenceInfo>[ | 20 static const List<PrecedenceInfo> all = const <PrecedenceInfo>[ |
| 19 BACKPING_INFO, | 21 BACKPING_INFO, |
| 20 BACKSLASH_INFO, | 22 BACKSLASH_INFO, |
| 21 PERIOD_PERIOD_PERIOD_INFO, | 23 PERIOD_PERIOD_PERIOD_INFO, |
| 22 PERIOD_PERIOD_INFO, | 24 PERIOD_PERIOD_INFO, |
| 23 BANG_INFO, | 25 BANG_INFO, |
| 24 COLON_INFO, | 26 COLON_INFO, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 const PrecedenceInfo BACKSLASH_INFO = | 100 const PrecedenceInfo BACKSLASH_INFO = |
| 99 const PrecedenceInfo('\\', 0, BACKSLASH_TOKEN); | 101 const PrecedenceInfo('\\', 0, BACKSLASH_TOKEN); |
| 100 const PrecedenceInfo PERIOD_PERIOD_PERIOD_INFO = | 102 const PrecedenceInfo PERIOD_PERIOD_PERIOD_INFO = |
| 101 const PrecedenceInfo('...', 0, PERIOD_PERIOD_PERIOD_TOKEN); | 103 const PrecedenceInfo('...', 0, PERIOD_PERIOD_PERIOD_TOKEN); |
| 102 | 104 |
| 103 /** | 105 /** |
| 104 * The cascade operator has the lowest precedence of any operator | 106 * The cascade operator has the lowest precedence of any operator |
| 105 * except assignment. | 107 * except assignment. |
| 106 */ | 108 */ |
| 107 const int CASCADE_PRECEDENCE = 2; | 109 const int CASCADE_PRECEDENCE = 2; |
| 108 const PrecedenceInfo PERIOD_PERIOD_INFO = | 110 const PrecedenceInfo PERIOD_PERIOD_INFO = const PrecedenceInfo( |
| 109 const PrecedenceInfo('..', CASCADE_PRECEDENCE, PERIOD_PERIOD_TOKEN); | 111 '..', CASCADE_PRECEDENCE, PERIOD_PERIOD_TOKEN, |
| 112 isOperator: true); | |
|
ahe
2017/03/15 14:54:25
Are you sure about that?
Isn't an operator someth
| |
| 110 | 113 |
| 111 const PrecedenceInfo BANG_INFO = const PrecedenceInfo('!', 0, BANG_TOKEN); | 114 const PrecedenceInfo BANG_INFO = |
| 115 const PrecedenceInfo('!', 0, BANG_TOKEN, isOperator: true); | |
| 112 const PrecedenceInfo COLON_INFO = const PrecedenceInfo(':', 0, COLON_TOKEN); | 116 const PrecedenceInfo COLON_INFO = const PrecedenceInfo(':', 0, COLON_TOKEN); |
| 113 const PrecedenceInfo INDEX_INFO = const PrecedenceInfo('[]', 0, INDEX_TOKEN); | 117 const PrecedenceInfo INDEX_INFO = |
| 114 const PrecedenceInfo MINUS_MINUS_INFO = | 118 const PrecedenceInfo('[]', 0, INDEX_TOKEN, isOperator: true); |
| 115 const PrecedenceInfo('--', POSTFIX_PRECEDENCE, MINUS_MINUS_TOKEN); | 119 const PrecedenceInfo MINUS_MINUS_INFO = const PrecedenceInfo( |
| 116 const PrecedenceInfo PLUS_PLUS_INFO = | 120 '--', POSTFIX_PRECEDENCE, MINUS_MINUS_TOKEN, |
| 117 const PrecedenceInfo('++', POSTFIX_PRECEDENCE, PLUS_PLUS_TOKEN); | 121 isOperator: true); |
| 118 const PrecedenceInfo TILDE_INFO = const PrecedenceInfo('~', 0, TILDE_TOKEN); | 122 const PrecedenceInfo PLUS_PLUS_INFO = const PrecedenceInfo( |
| 123 '++', POSTFIX_PRECEDENCE, PLUS_PLUS_TOKEN, | |
| 124 isOperator: true); | |
| 125 const PrecedenceInfo TILDE_INFO = | |
| 126 const PrecedenceInfo('~', 0, TILDE_TOKEN, isOperator: true); | |
| 119 | 127 |
| 120 const PrecedenceInfo FUNCTION_INFO = | 128 const PrecedenceInfo FUNCTION_INFO = |
| 121 const PrecedenceInfo('=>', 0, FUNCTION_TOKEN); | 129 const PrecedenceInfo('=>', 0, FUNCTION_TOKEN); |
| 122 const PrecedenceInfo HASH_INFO = const PrecedenceInfo('#', 0, HASH_TOKEN); | 130 const PrecedenceInfo HASH_INFO = const PrecedenceInfo('#', 0, HASH_TOKEN); |
| 123 const PrecedenceInfo INDEX_EQ_INFO = | 131 const PrecedenceInfo INDEX_EQ_INFO = |
| 124 const PrecedenceInfo('[]=', 0, INDEX_EQ_TOKEN); | 132 const PrecedenceInfo('[]=', 0, INDEX_EQ_TOKEN, isOperator: true); |
| 125 const PrecedenceInfo SEMICOLON_INFO = | 133 const PrecedenceInfo SEMICOLON_INFO = |
| 126 const PrecedenceInfo(';', 0, SEMICOLON_TOKEN); | 134 const PrecedenceInfo(';', 0, SEMICOLON_TOKEN); |
| 127 const PrecedenceInfo COMMA_INFO = const PrecedenceInfo(',', 0, COMMA_TOKEN); | 135 const PrecedenceInfo COMMA_INFO = const PrecedenceInfo(',', 0, COMMA_TOKEN); |
| 128 | 136 |
| 129 const PrecedenceInfo AT_INFO = const PrecedenceInfo('@', 0, AT_TOKEN); | 137 const PrecedenceInfo AT_INFO = const PrecedenceInfo('@', 0, AT_TOKEN); |
| 130 | 138 |
| 131 // Assignment operators. | 139 // Assignment operators. |
| 132 const int ASSIGNMENT_PRECEDENCE = 1; | 140 const int ASSIGNMENT_PRECEDENCE = 1; |
| 133 const PrecedenceInfo AMPERSAND_EQ_INFO = | 141 const PrecedenceInfo AMPERSAND_EQ_INFO = const PrecedenceInfo( |
| 134 const PrecedenceInfo('&=', ASSIGNMENT_PRECEDENCE, AMPERSAND_EQ_TOKEN); | 142 '&=', ASSIGNMENT_PRECEDENCE, AMPERSAND_EQ_TOKEN, |
| 135 const PrecedenceInfo BAR_EQ_INFO = | 143 isOperator: true); |
| 136 const PrecedenceInfo('|=', ASSIGNMENT_PRECEDENCE, BAR_EQ_TOKEN); | 144 const PrecedenceInfo BAR_EQ_INFO = const PrecedenceInfo( |
| 137 const PrecedenceInfo CARET_EQ_INFO = | 145 '|=', ASSIGNMENT_PRECEDENCE, BAR_EQ_TOKEN, |
| 138 const PrecedenceInfo('^=', ASSIGNMENT_PRECEDENCE, CARET_EQ_TOKEN); | 146 isOperator: true); |
| 139 const PrecedenceInfo EQ_INFO = | 147 const PrecedenceInfo CARET_EQ_INFO = const PrecedenceInfo( |
| 140 const PrecedenceInfo('=', ASSIGNMENT_PRECEDENCE, EQ_TOKEN); | 148 '^=', ASSIGNMENT_PRECEDENCE, CARET_EQ_TOKEN, |
| 141 const PrecedenceInfo GT_GT_EQ_INFO = | 149 isOperator: true); |
| 142 const PrecedenceInfo('>>=', ASSIGNMENT_PRECEDENCE, GT_GT_EQ_TOKEN); | 150 const PrecedenceInfo EQ_INFO = const PrecedenceInfo( |
| 143 const PrecedenceInfo LT_LT_EQ_INFO = | 151 '=', ASSIGNMENT_PRECEDENCE, EQ_TOKEN, |
| 144 const PrecedenceInfo('<<=', ASSIGNMENT_PRECEDENCE, LT_LT_EQ_TOKEN); | 152 isOperator: true); |
| 145 const PrecedenceInfo MINUS_EQ_INFO = | 153 const PrecedenceInfo GT_GT_EQ_INFO = const PrecedenceInfo( |
| 146 const PrecedenceInfo('-=', ASSIGNMENT_PRECEDENCE, MINUS_EQ_TOKEN); | 154 '>>=', ASSIGNMENT_PRECEDENCE, GT_GT_EQ_TOKEN, |
| 147 const PrecedenceInfo PERCENT_EQ_INFO = | 155 isOperator: true); |
| 148 const PrecedenceInfo('%=', ASSIGNMENT_PRECEDENCE, PERCENT_EQ_TOKEN); | 156 const PrecedenceInfo LT_LT_EQ_INFO = const PrecedenceInfo( |
| 149 const PrecedenceInfo PLUS_EQ_INFO = | 157 '<<=', ASSIGNMENT_PRECEDENCE, LT_LT_EQ_TOKEN, |
| 150 const PrecedenceInfo('+=', ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN); | 158 isOperator: true); |
| 151 const PrecedenceInfo SLASH_EQ_INFO = | 159 const PrecedenceInfo MINUS_EQ_INFO = const PrecedenceInfo( |
| 152 const PrecedenceInfo('/=', ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN); | 160 '-=', ASSIGNMENT_PRECEDENCE, MINUS_EQ_TOKEN, |
| 153 const PrecedenceInfo STAR_EQ_INFO = | 161 isOperator: true); |
| 154 const PrecedenceInfo('*=', ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN); | 162 const PrecedenceInfo PERCENT_EQ_INFO = const PrecedenceInfo( |
| 155 const PrecedenceInfo TILDE_SLASH_EQ_INFO = | 163 '%=', ASSIGNMENT_PRECEDENCE, PERCENT_EQ_TOKEN, |
| 156 const PrecedenceInfo('~/=', ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN); | 164 isOperator: true); |
| 165 const PrecedenceInfo PLUS_EQ_INFO = const PrecedenceInfo( | |
| 166 '+=', ASSIGNMENT_PRECEDENCE, PLUS_EQ_TOKEN, | |
| 167 isOperator: true); | |
| 168 const PrecedenceInfo SLASH_EQ_INFO = const PrecedenceInfo( | |
| 169 '/=', ASSIGNMENT_PRECEDENCE, SLASH_EQ_TOKEN, | |
| 170 isOperator: true); | |
| 171 const PrecedenceInfo STAR_EQ_INFO = const PrecedenceInfo( | |
| 172 '*=', ASSIGNMENT_PRECEDENCE, STAR_EQ_TOKEN, | |
| 173 isOperator: true); | |
| 174 const PrecedenceInfo TILDE_SLASH_EQ_INFO = const PrecedenceInfo( | |
| 175 '~/=', ASSIGNMENT_PRECEDENCE, TILDE_SLASH_EQ_TOKEN, | |
| 176 isOperator: true); | |
| 157 const PrecedenceInfo QUESTION_QUESTION_EQ_INFO = const PrecedenceInfo( | 177 const PrecedenceInfo QUESTION_QUESTION_EQ_INFO = const PrecedenceInfo( |
| 158 '??=', ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN); | 178 '??=', ASSIGNMENT_PRECEDENCE, QUESTION_QUESTION_EQ_TOKEN, |
| 179 isOperator: true); | |
| 159 | 180 |
| 160 const PrecedenceInfo QUESTION_INFO = | 181 const PrecedenceInfo QUESTION_INFO = |
| 161 const PrecedenceInfo('?', 3, QUESTION_TOKEN); | 182 const PrecedenceInfo('?', 3, QUESTION_TOKEN, isOperator: true); |
| 162 | 183 |
| 163 const PrecedenceInfo QUESTION_QUESTION_INFO = | 184 const PrecedenceInfo QUESTION_QUESTION_INFO = |
| 164 const PrecedenceInfo('??', 4, QUESTION_QUESTION_TOKEN); | 185 const PrecedenceInfo('??', 4, QUESTION_QUESTION_TOKEN, isOperator: true); |
| 165 | 186 |
| 166 const PrecedenceInfo BAR_BAR_INFO = | 187 const PrecedenceInfo BAR_BAR_INFO = |
| 167 const PrecedenceInfo('||', 5, BAR_BAR_TOKEN); | 188 const PrecedenceInfo('||', 5, BAR_BAR_TOKEN, isOperator: true); |
| 168 | 189 |
| 169 const PrecedenceInfo AMPERSAND_AMPERSAND_INFO = | 190 const PrecedenceInfo AMPERSAND_AMPERSAND_INFO = |
| 170 const PrecedenceInfo('&&', 6, AMPERSAND_AMPERSAND_TOKEN); | 191 const PrecedenceInfo('&&', 6, AMPERSAND_AMPERSAND_TOKEN, isOperator: true); |
| 171 | 192 |
| 172 const PrecedenceInfo BAR_INFO = const PrecedenceInfo('|', 9, BAR_TOKEN); | 193 const PrecedenceInfo BAR_INFO = |
| 194 const PrecedenceInfo('|', 9, BAR_TOKEN, isOperator: true); | |
| 173 | 195 |
| 174 const PrecedenceInfo CARET_INFO = const PrecedenceInfo('^', 10, CARET_TOKEN); | 196 const PrecedenceInfo CARET_INFO = |
| 197 const PrecedenceInfo('^', 10, CARET_TOKEN, isOperator: true); | |
| 175 | 198 |
| 176 const PrecedenceInfo AMPERSAND_INFO = | 199 const PrecedenceInfo AMPERSAND_INFO = |
| 177 const PrecedenceInfo('&', 11, AMPERSAND_TOKEN); | 200 const PrecedenceInfo('&', 11, AMPERSAND_TOKEN, isOperator: true); |
| 178 | 201 |
| 179 // Equality operators. | 202 // Equality operators. |
| 180 const int EQUALITY_PRECEDENCE = 7; | 203 const int EQUALITY_PRECEDENCE = 7; |
| 181 const PrecedenceInfo BANG_EQ_EQ_INFO = | 204 const PrecedenceInfo BANG_EQ_EQ_INFO = |
| 182 const PrecedenceInfo('!==', EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN); | 205 const PrecedenceInfo('!==', EQUALITY_PRECEDENCE, BANG_EQ_EQ_TOKEN); |
| 183 const PrecedenceInfo BANG_EQ_INFO = | 206 const PrecedenceInfo BANG_EQ_INFO = const PrecedenceInfo( |
| 184 const PrecedenceInfo('!=', EQUALITY_PRECEDENCE, BANG_EQ_TOKEN); | 207 '!=', EQUALITY_PRECEDENCE, BANG_EQ_TOKEN, |
| 208 isOperator: true); | |
| 185 const PrecedenceInfo EQ_EQ_EQ_INFO = | 209 const PrecedenceInfo EQ_EQ_EQ_INFO = |
| 186 const PrecedenceInfo('===', EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN); | 210 const PrecedenceInfo('===', EQUALITY_PRECEDENCE, EQ_EQ_EQ_TOKEN); |
| 187 const PrecedenceInfo EQ_EQ_INFO = | 211 const PrecedenceInfo EQ_EQ_INFO = const PrecedenceInfo( |
| 188 const PrecedenceInfo('==', EQUALITY_PRECEDENCE, EQ_EQ_TOKEN); | 212 '==', EQUALITY_PRECEDENCE, EQ_EQ_TOKEN, |
| 213 isOperator: true); | |
| 189 | 214 |
| 190 // Relational operators. | 215 // Relational operators. |
| 191 const int RELATIONAL_PRECEDENCE = 8; | 216 const int RELATIONAL_PRECEDENCE = 8; |
| 192 const PrecedenceInfo GT_EQ_INFO = | 217 const PrecedenceInfo GT_EQ_INFO = const PrecedenceInfo( |
| 193 const PrecedenceInfo('>=', RELATIONAL_PRECEDENCE, GT_EQ_TOKEN); | 218 '>=', RELATIONAL_PRECEDENCE, GT_EQ_TOKEN, |
| 194 const PrecedenceInfo GT_INFO = | 219 isOperator: true); |
| 195 const PrecedenceInfo('>', RELATIONAL_PRECEDENCE, GT_TOKEN); | 220 const PrecedenceInfo GT_INFO = const PrecedenceInfo( |
| 221 '>', RELATIONAL_PRECEDENCE, GT_TOKEN, | |
| 222 isOperator: true); | |
| 196 const PrecedenceInfo IS_INFO = | 223 const PrecedenceInfo IS_INFO = |
| 197 const PrecedenceInfo('is', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); | 224 const PrecedenceInfo('is', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); |
| 198 const PrecedenceInfo AS_INFO = | 225 const PrecedenceInfo AS_INFO = |
| 199 const PrecedenceInfo('as', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); | 226 const PrecedenceInfo('as', RELATIONAL_PRECEDENCE, KEYWORD_TOKEN); |
| 200 const PrecedenceInfo LT_EQ_INFO = | 227 const PrecedenceInfo LT_EQ_INFO = const PrecedenceInfo( |
| 201 const PrecedenceInfo('<=', RELATIONAL_PRECEDENCE, LT_EQ_TOKEN); | 228 '<=', RELATIONAL_PRECEDENCE, LT_EQ_TOKEN, |
| 202 const PrecedenceInfo LT_INFO = | 229 isOperator: true); |
| 203 const PrecedenceInfo('<', RELATIONAL_PRECEDENCE, LT_TOKEN); | 230 const PrecedenceInfo LT_INFO = const PrecedenceInfo( |
| 231 '<', RELATIONAL_PRECEDENCE, LT_TOKEN, | |
| 232 isOperator: true); | |
| 204 | 233 |
| 205 // Shift operators. | 234 // Shift operators. |
| 206 const PrecedenceInfo GT_GT_INFO = const PrecedenceInfo('>>', 12, GT_GT_TOKEN); | 235 const PrecedenceInfo GT_GT_INFO = |
| 207 const PrecedenceInfo LT_LT_INFO = const PrecedenceInfo('<<', 12, LT_LT_TOKEN); | 236 const PrecedenceInfo('>>', 12, GT_GT_TOKEN, isOperator: true); |
| 237 const PrecedenceInfo LT_LT_INFO = | |
| 238 const PrecedenceInfo('<<', 12, LT_LT_TOKEN, isOperator: true); | |
| 208 | 239 |
| 209 // Additive operators. | 240 // Additive operators. |
| 210 const PrecedenceInfo MINUS_INFO = const PrecedenceInfo('-', 13, MINUS_TOKEN); | 241 const PrecedenceInfo MINUS_INFO = |
| 211 const PrecedenceInfo PLUS_INFO = const PrecedenceInfo('+', 13, PLUS_TOKEN); | 242 const PrecedenceInfo('-', 13, MINUS_TOKEN, isOperator: true); |
| 243 const PrecedenceInfo PLUS_INFO = | |
| 244 const PrecedenceInfo('+', 13, PLUS_TOKEN, isOperator: true); | |
| 212 | 245 |
| 213 // Multiplicative operators. | 246 // Multiplicative operators. |
| 214 const PrecedenceInfo PERCENT_INFO = | 247 const PrecedenceInfo PERCENT_INFO = |
| 215 const PrecedenceInfo('%', 14, PERCENT_TOKEN); | 248 const PrecedenceInfo('%', 14, PERCENT_TOKEN, isOperator: true); |
| 216 const PrecedenceInfo SLASH_INFO = const PrecedenceInfo('/', 14, SLASH_TOKEN); | 249 const PrecedenceInfo SLASH_INFO = |
| 217 const PrecedenceInfo STAR_INFO = const PrecedenceInfo('*', 14, STAR_TOKEN); | 250 const PrecedenceInfo('/', 14, SLASH_TOKEN, isOperator: true); |
| 251 const PrecedenceInfo STAR_INFO = | |
| 252 const PrecedenceInfo('*', 14, STAR_TOKEN, isOperator: true); | |
| 218 const PrecedenceInfo TILDE_SLASH_INFO = | 253 const PrecedenceInfo TILDE_SLASH_INFO = |
| 219 const PrecedenceInfo('~/', 14, TILDE_SLASH_TOKEN); | 254 const PrecedenceInfo('~/', 14, TILDE_SLASH_TOKEN, isOperator: true); |
| 220 | 255 |
| 221 const int POSTFIX_PRECEDENCE = 15; | 256 const int POSTFIX_PRECEDENCE = 15; |
| 222 const PrecedenceInfo PERIOD_INFO = | 257 const PrecedenceInfo PERIOD_INFO = |
| 223 const PrecedenceInfo('.', POSTFIX_PRECEDENCE, PERIOD_TOKEN); | 258 const PrecedenceInfo('.', POSTFIX_PRECEDENCE, PERIOD_TOKEN); |
| 224 const PrecedenceInfo QUESTION_PERIOD_INFO = | 259 const PrecedenceInfo QUESTION_PERIOD_INFO = const PrecedenceInfo( |
| 225 const PrecedenceInfo('?.', POSTFIX_PRECEDENCE, QUESTION_PERIOD_TOKEN); | 260 '?.', POSTFIX_PRECEDENCE, QUESTION_PERIOD_TOKEN, |
| 261 isOperator: true); | |
| 226 | 262 |
| 227 const PrecedenceInfo KEYWORD_INFO = | 263 const PrecedenceInfo KEYWORD_INFO = |
| 228 const PrecedenceInfo('keyword', 0, KEYWORD_TOKEN); | 264 const PrecedenceInfo('keyword', 0, KEYWORD_TOKEN); |
| 229 | 265 |
| 230 const PrecedenceInfo EOF_INFO = const PrecedenceInfo('EOF', 0, EOF_TOKEN); | 266 const PrecedenceInfo EOF_INFO = const PrecedenceInfo('EOF', 0, EOF_TOKEN); |
| 231 | 267 |
| 232 /// Precedence info used by synthetic tokens that are created during parser | 268 /// Precedence info used by synthetic tokens that are created during parser |
| 233 /// recovery (non-analyzer use case). | 269 /// recovery (non-analyzer use case). |
| 234 const PrecedenceInfo RECOVERY_INFO = | 270 const PrecedenceInfo RECOVERY_INFO = |
| 235 const PrecedenceInfo('recovery', 0, RECOVERY_TOKEN); | 271 const PrecedenceInfo('recovery', 0, RECOVERY_TOKEN); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 273 const PrecedenceInfo('\${', 0, STRING_INTERPOLATION_TOKEN); | 309 const PrecedenceInfo('\${', 0, STRING_INTERPOLATION_TOKEN); |
| 274 | 310 |
| 275 const PrecedenceInfo STRING_INTERPOLATION_IDENTIFIER_INFO = | 311 const PrecedenceInfo STRING_INTERPOLATION_IDENTIFIER_INFO = |
| 276 const PrecedenceInfo('\$', 0, STRING_INTERPOLATION_IDENTIFIER_TOKEN); | 312 const PrecedenceInfo('\$', 0, STRING_INTERPOLATION_IDENTIFIER_TOKEN); |
| 277 | 313 |
| 278 const PrecedenceInfo HEXADECIMAL_INFO = | 314 const PrecedenceInfo HEXADECIMAL_INFO = |
| 279 const PrecedenceInfo('hexadecimal', 0, HEXADECIMAL_TOKEN); | 315 const PrecedenceInfo('hexadecimal', 0, HEXADECIMAL_TOKEN); |
| 280 | 316 |
| 281 const PrecedenceInfo COMMENT_INFO = | 317 const PrecedenceInfo COMMENT_INFO = |
| 282 const PrecedenceInfo('comment', 0, COMMENT_TOKEN); | 318 const PrecedenceInfo('comment', 0, COMMENT_TOKEN); |
| OLD | NEW |