| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 part of scanner; | 5 part of scanner; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * A keyword in the Dart programming language. | 8 * A keyword in the Dart programming language. |
| 9 */ | 9 */ |
| 10 class Keyword extends Iterable<int> implements SourceString { | 10 class Keyword extends Iterable<int> implements SourceString { |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 KeywordState(this.keyword); | 129 KeywordState(this.keyword); |
| 130 | 130 |
| 131 bool isLeaf(); | 131 bool isLeaf(); |
| 132 KeywordState next(int c); | 132 KeywordState next(int c); |
| 133 final Keyword keyword; | 133 final Keyword keyword; |
| 134 | 134 |
| 135 static KeywordState _KEYWORD_STATE; | 135 static KeywordState _KEYWORD_STATE; |
| 136 static KeywordState get KEYWORD_STATE { | 136 static KeywordState get KEYWORD_STATE { |
| 137 if (_KEYWORD_STATE == null) { | 137 if (_KEYWORD_STATE == null) { |
| 138 List<String> strings = | 138 List<String> strings = |
| 139 new List<String>.fixedLength(Keyword.values.length); | 139 new List<String>(Keyword.values.length); |
| 140 for (int i = 0; i < Keyword.values.length; i++) { | 140 for (int i = 0; i < Keyword.values.length; i++) { |
| 141 strings[i] = Keyword.values[i].syntax; | 141 strings[i] = Keyword.values[i].syntax; |
| 142 } | 142 } |
| 143 strings.sort((a,b) => a.compareTo(b)); | 143 strings.sort((a,b) => a.compareTo(b)); |
| 144 _KEYWORD_STATE = computeKeywordStateTable(0, strings, 0, strings.length); | 144 _KEYWORD_STATE = computeKeywordStateTable(0, strings, 0, strings.length); |
| 145 } | 145 } |
| 146 return _KEYWORD_STATE; | 146 return _KEYWORD_STATE; |
| 147 } | 147 } |
| 148 | 148 |
| 149 static KeywordState computeKeywordStateTable(int start, List<String> strings, | 149 static KeywordState computeKeywordStateTable(int start, List<String> strings, |
| 150 int offset, int length) { | 150 int offset, int length) { |
| 151 List<KeywordState> result = new List<KeywordState>.fixedLength(26); | 151 List<KeywordState> result = new List<KeywordState>(26); |
| 152 assert(length != 0); | 152 assert(length != 0); |
| 153 int chunk = 0; | 153 int chunk = 0; |
| 154 int chunkStart = -1; | 154 int chunkStart = -1; |
| 155 bool isLeaf = false; | 155 bool isLeaf = false; |
| 156 for (int i = offset; i < offset + length; i++) { | 156 for (int i = offset; i < offset + length; i++) { |
| 157 if (strings[i].length == start) { | 157 if (strings[i].length == start) { |
| 158 isLeaf = true; | 158 isLeaf = true; |
| 159 } | 159 } |
| 160 if (strings[i].length > start) { | 160 if (strings[i].length > start) { |
| 161 int c = strings[i].codeUnitAt(start); | 161 int c = strings[i].codeUnitAt(start); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 */ | 225 */ |
| 226 class LeafKeywordState extends KeywordState { | 226 class LeafKeywordState extends KeywordState { |
| 227 LeafKeywordState(String syntax) : super(Keyword.keywords[syntax]); | 227 LeafKeywordState(String syntax) : super(Keyword.keywords[syntax]); |
| 228 | 228 |
| 229 bool isLeaf() => true; | 229 bool isLeaf() => true; |
| 230 | 230 |
| 231 KeywordState next(int c) => null; | 231 KeywordState next(int c) => null; |
| 232 | 232 |
| 233 String toString() => keyword.syntax; | 233 String toString() => keyword.syntax; |
| 234 } | 234 } |
| OLD | NEW |