cld3 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +18 -0
- data/LICENSE +204 -0
- data/LICENSE_CLD3 +203 -0
- data/README.md +22 -0
- data/cld3.gemspec +35 -0
- data/ext/cld3/base.cc +36 -0
- data/ext/cld3/base.h +106 -0
- data/ext/cld3/casts.h +98 -0
- data/ext/cld3/embedding_feature_extractor.cc +51 -0
- data/ext/cld3/embedding_feature_extractor.h +182 -0
- data/ext/cld3/embedding_network.cc +196 -0
- data/ext/cld3/embedding_network.h +186 -0
- data/ext/cld3/embedding_network_params.h +285 -0
- data/ext/cld3/extconf.rb +49 -0
- data/ext/cld3/feature_extractor.cc +137 -0
- data/ext/cld3/feature_extractor.h +633 -0
- data/ext/cld3/feature_extractor.proto +50 -0
- data/ext/cld3/feature_types.cc +72 -0
- data/ext/cld3/feature_types.h +158 -0
- data/ext/cld3/fixunicodevalue.cc +55 -0
- data/ext/cld3/fixunicodevalue.h +69 -0
- data/ext/cld3/float16.h +58 -0
- data/ext/cld3/fml_parser.cc +308 -0
- data/ext/cld3/fml_parser.h +123 -0
- data/ext/cld3/generated_entities.cc +296 -0
- data/ext/cld3/generated_ulscript.cc +678 -0
- data/ext/cld3/generated_ulscript.h +142 -0
- data/ext/cld3/getonescriptspan.cc +1109 -0
- data/ext/cld3/getonescriptspan.h +124 -0
- data/ext/cld3/integral_types.h +37 -0
- data/ext/cld3/lang_id_nn_params.cc +57449 -0
- data/ext/cld3/lang_id_nn_params.h +178 -0
- data/ext/cld3/language_identifier_features.cc +165 -0
- data/ext/cld3/language_identifier_features.h +116 -0
- data/ext/cld3/nnet_language_identifier.cc +380 -0
- data/ext/cld3/nnet_language_identifier.h +175 -0
- data/ext/cld3/nnet_language_identifier_c.cc +72 -0
- data/ext/cld3/offsetmap.cc +478 -0
- data/ext/cld3/offsetmap.h +168 -0
- data/ext/cld3/port.h +143 -0
- data/ext/cld3/registry.cc +28 -0
- data/ext/cld3/registry.h +242 -0
- data/ext/cld3/relevant_script_feature.cc +89 -0
- data/ext/cld3/relevant_script_feature.h +49 -0
- data/ext/cld3/script_detector.h +156 -0
- data/ext/cld3/sentence.proto +77 -0
- data/ext/cld3/sentence_features.cc +29 -0
- data/ext/cld3/sentence_features.h +35 -0
- data/ext/cld3/simple_adder.h +72 -0
- data/ext/cld3/stringpiece.h +81 -0
- data/ext/cld3/task_context.cc +161 -0
- data/ext/cld3/task_context.h +81 -0
- data/ext/cld3/task_context_params.cc +74 -0
- data/ext/cld3/task_context_params.h +54 -0
- data/ext/cld3/task_spec.proto +98 -0
- data/ext/cld3/text_processing.cc +245 -0
- data/ext/cld3/text_processing.h +30 -0
- data/ext/cld3/unicodetext.cc +96 -0
- data/ext/cld3/unicodetext.h +144 -0
- data/ext/cld3/utf8acceptinterchange.h +486 -0
- data/ext/cld3/utf8prop_lettermarkscriptnum.h +1631 -0
- data/ext/cld3/utf8repl_lettermarklower.h +758 -0
- data/ext/cld3/utf8scannot_lettermarkspecial.h +1455 -0
- data/ext/cld3/utf8statetable.cc +1344 -0
- data/ext/cld3/utf8statetable.h +285 -0
- data/ext/cld3/utils.cc +241 -0
- data/ext/cld3/utils.h +144 -0
- data/ext/cld3/workspace.cc +64 -0
- data/ext/cld3/workspace.h +177 -0
- data/lib/cld3.rb +99 -0
- metadata +158 -0
@@ -0,0 +1,308 @@
|
|
1
|
+
/* Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
14
|
+
==============================================================================*/
|
15
|
+
|
16
|
+
#include "fml_parser.h"
|
17
|
+
|
18
|
+
#include <ctype.h>
|
19
|
+
#include <string>
|
20
|
+
|
21
|
+
#include "base.h"
|
22
|
+
#include "utils.h"
|
23
|
+
|
24
|
+
namespace chrome_lang_id {
|
25
|
+
|
26
|
+
namespace {
|
27
|
+
|
28
|
+
inline bool IsValidCharAtStartOfIdentifier(char c) {
|
29
|
+
return isalpha(c) || (c == '_') || (c == '/');
|
30
|
+
}
|
31
|
+
|
32
|
+
// Returns true iff character c can appear inside an identifier.
|
33
|
+
inline bool IsValidCharInsideIdentifier(char c) {
|
34
|
+
return isalnum(c) || (c == '_') || (c == '-') || (c == '/');
|
35
|
+
}
|
36
|
+
|
37
|
+
// Returns true iff character c can appear at the beginning of a number.
|
38
|
+
inline bool IsValidCharAtStartOfNumber(char c) {
|
39
|
+
return isdigit(c) || (c == '+') || (c == '-');
|
40
|
+
}
|
41
|
+
|
42
|
+
// Returns true iff character c can appear inside a number.
|
43
|
+
inline bool IsValidCharInsideNumber(char c) { return isdigit(c) || (c == '.'); }
|
44
|
+
|
45
|
+
} // namespace
|
46
|
+
|
47
|
+
FMLParser::FMLParser() {}
|
48
|
+
FMLParser::~FMLParser() {}
|
49
|
+
|
50
|
+
void FMLParser::Initialize(const string &source) {
|
51
|
+
// Initialize parser state.
|
52
|
+
source_ = source;
|
53
|
+
current_ = source_.begin();
|
54
|
+
item_start_ = line_start_ = current_;
|
55
|
+
line_number_ = item_line_number_ = 1;
|
56
|
+
|
57
|
+
// Read first input item.
|
58
|
+
NextItem();
|
59
|
+
}
|
60
|
+
|
61
|
+
void FMLParser::Next() {
|
62
|
+
// Move to the next input character. If we are at a line break update line
|
63
|
+
// number and line start position.
|
64
|
+
if (CurrentChar() == '\n') {
|
65
|
+
++line_number_;
|
66
|
+
++current_;
|
67
|
+
line_start_ = current_;
|
68
|
+
} else {
|
69
|
+
++current_;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
void FMLParser::NextItem() {
|
74
|
+
// Skip white space and comments.
|
75
|
+
while (!eos()) {
|
76
|
+
if (CurrentChar() == '#') {
|
77
|
+
// Skip comment.
|
78
|
+
while (!eos() && CurrentChar() != '\n') Next();
|
79
|
+
} else if (isspace(CurrentChar())) {
|
80
|
+
// Skip whitespace.
|
81
|
+
while (!eos() && isspace(CurrentChar())) Next();
|
82
|
+
} else {
|
83
|
+
break;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
// Record start position for next item.
|
88
|
+
item_start_ = current_;
|
89
|
+
item_line_number_ = line_number_;
|
90
|
+
|
91
|
+
// Check for end of input.
|
92
|
+
if (eos()) {
|
93
|
+
item_type_ = END;
|
94
|
+
return;
|
95
|
+
}
|
96
|
+
|
97
|
+
// Parse number.
|
98
|
+
if (IsValidCharAtStartOfNumber(CurrentChar())) {
|
99
|
+
string::iterator start = current_;
|
100
|
+
Next();
|
101
|
+
while (!eos() && IsValidCharInsideNumber(CurrentChar())) Next();
|
102
|
+
item_text_.assign(start, current_);
|
103
|
+
item_type_ = NUMBER;
|
104
|
+
return;
|
105
|
+
}
|
106
|
+
|
107
|
+
// Parse string.
|
108
|
+
if (CurrentChar() == '"') {
|
109
|
+
Next();
|
110
|
+
string::iterator start = current_;
|
111
|
+
while (CurrentChar() != '"') {
|
112
|
+
CLD3_DCHECK(!eos());
|
113
|
+
Next();
|
114
|
+
}
|
115
|
+
item_text_.assign(start, current_);
|
116
|
+
item_type_ = STRING;
|
117
|
+
Next();
|
118
|
+
return;
|
119
|
+
}
|
120
|
+
|
121
|
+
// Parse identifier name.
|
122
|
+
if (IsValidCharAtStartOfIdentifier(CurrentChar())) {
|
123
|
+
string::iterator start = current_;
|
124
|
+
while (!eos() && IsValidCharInsideIdentifier(CurrentChar())) {
|
125
|
+
Next();
|
126
|
+
}
|
127
|
+
item_text_.assign(start, current_);
|
128
|
+
item_type_ = NAME;
|
129
|
+
return;
|
130
|
+
}
|
131
|
+
|
132
|
+
// Single character item.
|
133
|
+
item_type_ = CurrentChar();
|
134
|
+
Next();
|
135
|
+
}
|
136
|
+
|
137
|
+
void FMLParser::Parse(const string &source,
|
138
|
+
FeatureExtractorDescriptor *result) {
|
139
|
+
// Initialize parser.
|
140
|
+
Initialize(source);
|
141
|
+
|
142
|
+
while (item_type_ != END) {
|
143
|
+
// Parse either a parameter name or a feature.
|
144
|
+
CLD3_DCHECK(item_type_ == NAME);
|
145
|
+
string name = item_text_;
|
146
|
+
NextItem();
|
147
|
+
|
148
|
+
// Feature expected.
|
149
|
+
CLD3_DCHECK(static_cast<char>(item_type_) != '=');
|
150
|
+
|
151
|
+
// Parse feature.
|
152
|
+
FeatureFunctionDescriptor *descriptor = result->add_feature();
|
153
|
+
descriptor->set_type(name);
|
154
|
+
ParseFeature(descriptor);
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
void FMLParser::ParseFeature(FeatureFunctionDescriptor *result) {
|
159
|
+
// Parse argument and parameters.
|
160
|
+
if (item_type_ == '(') {
|
161
|
+
NextItem();
|
162
|
+
ParseParameter(result);
|
163
|
+
while (item_type_ == ',') {
|
164
|
+
NextItem();
|
165
|
+
ParseParameter(result);
|
166
|
+
}
|
167
|
+
|
168
|
+
CLD3_DCHECK(item_type_ == ')');
|
169
|
+
NextItem();
|
170
|
+
}
|
171
|
+
|
172
|
+
// Parse feature name.
|
173
|
+
if (item_type_ == ':') {
|
174
|
+
NextItem();
|
175
|
+
|
176
|
+
// Feature name expected.
|
177
|
+
CLD3_DCHECK((item_type_ == NAME) || (item_type_ == STRING));
|
178
|
+
string name = item_text_;
|
179
|
+
NextItem();
|
180
|
+
|
181
|
+
// Set feature name.
|
182
|
+
result->set_name(name);
|
183
|
+
}
|
184
|
+
|
185
|
+
// Parse sub-features.
|
186
|
+
if (item_type_ == '.') {
|
187
|
+
// Parse dotted sub-feature.
|
188
|
+
NextItem();
|
189
|
+
CLD3_DCHECK(item_type_ == NAME);
|
190
|
+
string type = item_text_;
|
191
|
+
NextItem();
|
192
|
+
|
193
|
+
// Parse sub-feature.
|
194
|
+
FeatureFunctionDescriptor *subfeature = result->add_feature();
|
195
|
+
subfeature->set_type(type);
|
196
|
+
ParseFeature(subfeature);
|
197
|
+
} else if (item_type_ == '{') {
|
198
|
+
// Parse sub-feature block.
|
199
|
+
NextItem();
|
200
|
+
while (item_type_ != '}') {
|
201
|
+
CLD3_DCHECK(item_type_ == NAME);
|
202
|
+
string type = item_text_;
|
203
|
+
NextItem();
|
204
|
+
|
205
|
+
// Parse sub-feature.
|
206
|
+
FeatureFunctionDescriptor *subfeature = result->add_feature();
|
207
|
+
subfeature->set_type(type);
|
208
|
+
ParseFeature(subfeature);
|
209
|
+
}
|
210
|
+
NextItem();
|
211
|
+
}
|
212
|
+
}
|
213
|
+
|
214
|
+
void FMLParser::ParseParameter(FeatureFunctionDescriptor *result) {
|
215
|
+
CLD3_DCHECK((item_type_ == NUMBER) || (item_type_ == NAME));
|
216
|
+
if (item_type_ == NUMBER) {
|
217
|
+
int argument = utils::ParseUsing<int>(item_text_, utils::ParseInt32);
|
218
|
+
NextItem();
|
219
|
+
|
220
|
+
// Set default argument for feature.
|
221
|
+
result->set_argument(argument);
|
222
|
+
} else { // item_type_ == NAME
|
223
|
+
string name = item_text_;
|
224
|
+
NextItem();
|
225
|
+
CLD3_DCHECK(item_type_ == '=');
|
226
|
+
NextItem();
|
227
|
+
|
228
|
+
// Parameter value expected.
|
229
|
+
CLD3_DCHECK(item_type_ < END);
|
230
|
+
string value = item_text_;
|
231
|
+
NextItem();
|
232
|
+
|
233
|
+
// Add parameter to feature.
|
234
|
+
Parameter *parameter;
|
235
|
+
parameter = result->add_parameter();
|
236
|
+
parameter->set_name(name);
|
237
|
+
parameter->set_value(value);
|
238
|
+
}
|
239
|
+
}
|
240
|
+
|
241
|
+
void ToFMLFunction(const FeatureFunctionDescriptor &function, string *output) {
|
242
|
+
output->append(function.type());
|
243
|
+
if (function.argument() != 0 || function.parameter_size() > 0) {
|
244
|
+
output->append("(");
|
245
|
+
bool first = true;
|
246
|
+
if (function.argument() != 0) {
|
247
|
+
output->append(Int64ToString(function.argument()));
|
248
|
+
first = false;
|
249
|
+
}
|
250
|
+
for (int i = 0; i < function.parameter_size(); ++i) {
|
251
|
+
if (!first) output->append(",");
|
252
|
+
output->append(function.parameter(i).name());
|
253
|
+
output->append("=");
|
254
|
+
output->append("\"");
|
255
|
+
output->append(function.parameter(i).value());
|
256
|
+
output->append("\"");
|
257
|
+
first = false;
|
258
|
+
}
|
259
|
+
output->append(")");
|
260
|
+
}
|
261
|
+
}
|
262
|
+
|
263
|
+
void ToFML(const FeatureFunctionDescriptor &function, string *output) {
|
264
|
+
ToFMLFunction(function, output);
|
265
|
+
if (function.feature_size() == 1) {
|
266
|
+
output->append(".");
|
267
|
+
ToFML(function.feature(0), output);
|
268
|
+
} else if (function.feature_size() > 1) {
|
269
|
+
output->append(" { ");
|
270
|
+
for (int i = 0; i < function.feature_size(); ++i) {
|
271
|
+
if (i > 0) output->append(" ");
|
272
|
+
ToFML(function.feature(i), output);
|
273
|
+
}
|
274
|
+
output->append(" } ");
|
275
|
+
}
|
276
|
+
}
|
277
|
+
|
278
|
+
void ToFML(const FeatureExtractorDescriptor &extractor, string *output) {
|
279
|
+
for (int i = 0; i < extractor.feature_size(); ++i) {
|
280
|
+
ToFML(extractor.feature(i), output);
|
281
|
+
output->append("\n");
|
282
|
+
}
|
283
|
+
}
|
284
|
+
|
285
|
+
string AsFML(const FeatureFunctionDescriptor &function) {
|
286
|
+
string str;
|
287
|
+
ToFML(function, &str);
|
288
|
+
return str;
|
289
|
+
}
|
290
|
+
|
291
|
+
string AsFML(const FeatureExtractorDescriptor &extractor) {
|
292
|
+
string str;
|
293
|
+
ToFML(extractor, &str);
|
294
|
+
return str;
|
295
|
+
}
|
296
|
+
|
297
|
+
void StripFML(string *fml_string) {
|
298
|
+
auto it = fml_string->begin();
|
299
|
+
while (it != fml_string->end()) {
|
300
|
+
if (*it == '"') {
|
301
|
+
it = fml_string->erase(it);
|
302
|
+
} else {
|
303
|
+
++it;
|
304
|
+
}
|
305
|
+
}
|
306
|
+
}
|
307
|
+
|
308
|
+
} // namespace chrome_lang_id
|
@@ -0,0 +1,123 @@
|
|
1
|
+
/* Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
14
|
+
==============================================================================*/
|
15
|
+
|
16
|
+
// Feature modeling language (fml) parser.
|
17
|
+
//
|
18
|
+
// BNF grammar for fml:
|
19
|
+
//
|
20
|
+
// <feature model> ::= { <feature extractor> }
|
21
|
+
//
|
22
|
+
// <feature extractor> ::= <extractor spec> |
|
23
|
+
// <extractor spec> '.' <feature extractor> |
|
24
|
+
// <extractor spec> '{' { <feature extractor> } '}'
|
25
|
+
//
|
26
|
+
// <extractor spec> ::= <extractor type>
|
27
|
+
// [ '(' <parameter list> ')' ]
|
28
|
+
// [ ':' <extractor name> ]
|
29
|
+
//
|
30
|
+
// <parameter list> = ( <parameter> | <argument> ) { ',' <parameter> }
|
31
|
+
//
|
32
|
+
// <parameter> ::= <parameter name> '=' <parameter value>
|
33
|
+
//
|
34
|
+
// <extractor type> ::= NAME
|
35
|
+
// <extractor name> ::= NAME | STRING
|
36
|
+
// <argument> ::= NUMBER
|
37
|
+
// <parameter name> ::= NAME
|
38
|
+
// <parameter value> ::= NUMBER | STRING | NAME
|
39
|
+
|
40
|
+
#ifndef FML_PARSER_H_
|
41
|
+
#define FML_PARSER_H_
|
42
|
+
|
43
|
+
#include <string>
|
44
|
+
|
45
|
+
#include "base.h"
|
46
|
+
#include "cld_3/protos/feature_extractor.pb.h"
|
47
|
+
|
48
|
+
namespace chrome_lang_id {
|
49
|
+
|
50
|
+
class FMLParser {
|
51
|
+
public:
|
52
|
+
// Parses fml specification into feature extractor descriptor.
|
53
|
+
void Parse(const string &source, FeatureExtractorDescriptor *result);
|
54
|
+
|
55
|
+
FMLParser();
|
56
|
+
~FMLParser();
|
57
|
+
|
58
|
+
private:
|
59
|
+
// Initializes the parser with the source text.
|
60
|
+
void Initialize(const string &source);
|
61
|
+
|
62
|
+
// Moves to the next input character.
|
63
|
+
void Next();
|
64
|
+
|
65
|
+
// Moves to the next input item.
|
66
|
+
void NextItem();
|
67
|
+
|
68
|
+
// Parses a feature descriptor.
|
69
|
+
void ParseFeature(FeatureFunctionDescriptor *result);
|
70
|
+
|
71
|
+
// Parses a parameter specification.
|
72
|
+
void ParseParameter(FeatureFunctionDescriptor *result);
|
73
|
+
|
74
|
+
// Returns true if end of source input has been reached.
|
75
|
+
bool eos() const { return current_ == source_.end(); }
|
76
|
+
|
77
|
+
// Returns current character. Other methods should access the current
|
78
|
+
// character through this method (instead of using *current_ directly): this
|
79
|
+
// method performs extra safety checks.
|
80
|
+
char CurrentChar() const {
|
81
|
+
// CLD3_DCHECK that we are reading from inside the string.
|
82
|
+
CLD3_DCHECK(current_ >= source_.begin());
|
83
|
+
CLD3_DCHECK(current_ < source_.end());
|
84
|
+
return *current_;
|
85
|
+
}
|
86
|
+
|
87
|
+
// Item types.
|
88
|
+
enum ItemTypes {
|
89
|
+
END = 0,
|
90
|
+
NAME = -1,
|
91
|
+
NUMBER = -2,
|
92
|
+
STRING = -3,
|
93
|
+
};
|
94
|
+
|
95
|
+
// Source text.
|
96
|
+
string source_;
|
97
|
+
|
98
|
+
// Current input position.
|
99
|
+
string::iterator current_;
|
100
|
+
|
101
|
+
// Line number for current input position.
|
102
|
+
int line_number_;
|
103
|
+
|
104
|
+
// Start position for current item.
|
105
|
+
string::iterator item_start_;
|
106
|
+
|
107
|
+
// Start position for current line.
|
108
|
+
string::iterator line_start_;
|
109
|
+
|
110
|
+
// Line number for current item.
|
111
|
+
int item_line_number_;
|
112
|
+
|
113
|
+
// Item type for current item. If this is positive it is interpreted as a
|
114
|
+
// character. If it is negative it is interpreted as an item type.
|
115
|
+
int item_type_;
|
116
|
+
|
117
|
+
// Text for current item.
|
118
|
+
string item_text_;
|
119
|
+
};
|
120
|
+
|
121
|
+
} // namespace chrome_lang_id
|
122
|
+
|
123
|
+
#endif // FML_PARSER_H_
|
@@ -0,0 +1,296 @@
|
|
1
|
+
// Copyright 2013 Google Inc. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
// generated_entities.cc
|
16
|
+
// Machine generated. Do Not Edit.
|
17
|
+
//
|
18
|
+
// Declarations for HTML entities recognized by CLD2
|
19
|
+
//
|
20
|
+
#include "generated_ulscript.h" // for CharIntPair
|
21
|
+
|
22
|
+
namespace chrome_lang_id {
|
23
|
+
namespace CLD2 {
|
24
|
+
|
25
|
+
// Alphabetical order for binary search
|
26
|
+
extern const int kNameToEntitySize = 265;
|
27
|
+
extern const CharIntPair kNameToEntity[kNameToEntitySize] = {
|
28
|
+
{"AElig", 198},
|
29
|
+
{"AMP", 38},
|
30
|
+
{"Aacute", 193},
|
31
|
+
{"Acirc", 194},
|
32
|
+
{"Agrave", 192},
|
33
|
+
{"Alpha", 913},
|
34
|
+
{"Aring", 197},
|
35
|
+
{"Atilde", 195},
|
36
|
+
{"Auml", 196},
|
37
|
+
{"Beta", 914},
|
38
|
+
{"Ccaron", 268},
|
39
|
+
{"Ccedil", 199},
|
40
|
+
{"Chi", 935},
|
41
|
+
{"Dagger", 8225},
|
42
|
+
{"Delta", 916},
|
43
|
+
{"ETH", 208},
|
44
|
+
{"Eacute", 201},
|
45
|
+
{"Ecaron", 282},
|
46
|
+
{"Ecirc", 202},
|
47
|
+
{"Egrave", 200},
|
48
|
+
{"Epsilon", 917},
|
49
|
+
{"Eta", 919},
|
50
|
+
{"Euml", 203},
|
51
|
+
{"GT", 62},
|
52
|
+
{"Gamma", 915},
|
53
|
+
{"Iacute", 205},
|
54
|
+
{"Icirc", 206},
|
55
|
+
{"Igrave", 204},
|
56
|
+
{"Iota", 921},
|
57
|
+
{"Iuml", 207},
|
58
|
+
{"Kappa", 922},
|
59
|
+
{"LT", 60},
|
60
|
+
{"Lambda", 923},
|
61
|
+
{"Mu", 924},
|
62
|
+
{"Ntilde", 209},
|
63
|
+
{"Nu", 925},
|
64
|
+
{"OElig", 338},
|
65
|
+
{"Oacute", 211},
|
66
|
+
{"Ocirc", 212},
|
67
|
+
{"Ograve", 210},
|
68
|
+
{"Omega", 937},
|
69
|
+
{"Omicron", 927},
|
70
|
+
{"Oslash", 216},
|
71
|
+
{"Otilde", 213},
|
72
|
+
{"Ouml", 214},
|
73
|
+
{"Phi", 934},
|
74
|
+
{"Pi", 928},
|
75
|
+
{"Prime", 8243},
|
76
|
+
{"Psi", 936},
|
77
|
+
{"QUOT", 34},
|
78
|
+
{"Rcaron", 344},
|
79
|
+
{"Rho", 929},
|
80
|
+
{"Scaron", 352},
|
81
|
+
{"Sigma", 931},
|
82
|
+
{"THORN", 222},
|
83
|
+
{"Tau", 932},
|
84
|
+
{"Theta", 920},
|
85
|
+
{"Uacute", 218},
|
86
|
+
{"Ucirc", 219},
|
87
|
+
{"Ugrave", 217},
|
88
|
+
{"Upsilon", 933},
|
89
|
+
{"Uuml", 220},
|
90
|
+
{"Xi", 926},
|
91
|
+
{"Yacute", 221},
|
92
|
+
{"Yuml", 376},
|
93
|
+
{"Zeta", 918},
|
94
|
+
{"aacute", 225},
|
95
|
+
{"acirc", 226},
|
96
|
+
{"acute", 180},
|
97
|
+
{"aelig", 230},
|
98
|
+
{"agrave", 224},
|
99
|
+
{"alefsym", 8501},
|
100
|
+
{"alpha", 945},
|
101
|
+
{"amp", 38},
|
102
|
+
{"and", 8743},
|
103
|
+
{"ang", 8736},
|
104
|
+
{"apos", 39},
|
105
|
+
{"aring", 229},
|
106
|
+
{"asymp", 8776},
|
107
|
+
{"atilde", 227},
|
108
|
+
{"auml", 228},
|
109
|
+
{"bdquo", 8222},
|
110
|
+
{"beta", 946},
|
111
|
+
{"brvbar", 166},
|
112
|
+
{"bull", 8226},
|
113
|
+
{"cap", 8745},
|
114
|
+
{"ccaron", 269},
|
115
|
+
{"ccedil", 231},
|
116
|
+
{"cedil", 184},
|
117
|
+
{"cent", 162},
|
118
|
+
{"chi", 967},
|
119
|
+
{"circ", 710},
|
120
|
+
{"clubs", 9827},
|
121
|
+
{"cong", 8773},
|
122
|
+
{"copy", 169},
|
123
|
+
{"crarr", 8629},
|
124
|
+
{"cup", 8746},
|
125
|
+
{"curren", 164},
|
126
|
+
{"dArr", 8659},
|
127
|
+
{"dagger", 8224},
|
128
|
+
{"darr", 8595},
|
129
|
+
{"deg", 176},
|
130
|
+
{"delta", 948},
|
131
|
+
{"diams", 9830},
|
132
|
+
{"divide", 247},
|
133
|
+
{"eacute", 233},
|
134
|
+
{"ecaron", 283},
|
135
|
+
{"ecirc", 234},
|
136
|
+
{"egrave", 232},
|
137
|
+
{"emdash", 8212},
|
138
|
+
{"empty", 8709},
|
139
|
+
{"emsp", 8195},
|
140
|
+
{"endash", 8211},
|
141
|
+
{"ensp", 8194},
|
142
|
+
{"epsilon", 949},
|
143
|
+
{"equiv", 8801},
|
144
|
+
{"eta", 951},
|
145
|
+
{"eth", 240},
|
146
|
+
{"euml", 235},
|
147
|
+
{"euro", 8364},
|
148
|
+
{"exist", 8707},
|
149
|
+
{"fnof", 402},
|
150
|
+
{"forall", 8704},
|
151
|
+
{"frac12", 189},
|
152
|
+
{"frac14", 188},
|
153
|
+
{"frac34", 190},
|
154
|
+
{"frasl", 8260},
|
155
|
+
{"gamma", 947},
|
156
|
+
{"ge", 8805},
|
157
|
+
{"gt", 62},
|
158
|
+
{"hArr", 8660},
|
159
|
+
{"harr", 8596},
|
160
|
+
{"hearts", 9829},
|
161
|
+
{"hellip", 8230},
|
162
|
+
{"iacute", 237},
|
163
|
+
{"icirc", 238},
|
164
|
+
{"iexcl", 161},
|
165
|
+
{"igrave", 236},
|
166
|
+
{"image", 8465},
|
167
|
+
{"infin", 8734},
|
168
|
+
{"int", 8747},
|
169
|
+
{"iota", 953},
|
170
|
+
{"iquest", 191},
|
171
|
+
{"isin", 8712},
|
172
|
+
{"iuml", 239},
|
173
|
+
{"kappa", 954},
|
174
|
+
{"lArr", 8656},
|
175
|
+
{"lambda", 955},
|
176
|
+
{"lang", 9001},
|
177
|
+
{"laquo", 171},
|
178
|
+
{"larr", 8592},
|
179
|
+
{"lceil", 8968},
|
180
|
+
{"ldquo", 8220},
|
181
|
+
{"le", 8804},
|
182
|
+
{"lfloor", 8970},
|
183
|
+
{"lowast", 8727},
|
184
|
+
{"loz", 9674},
|
185
|
+
{"lrm", 8206},
|
186
|
+
{"lsaquo", 8249},
|
187
|
+
{"lsquo", 8216},
|
188
|
+
{"lt", 60},
|
189
|
+
{"macr", 175},
|
190
|
+
{"mdash", 8212},
|
191
|
+
{"micro", 181},
|
192
|
+
{"middot", 183},
|
193
|
+
{"minus", 8722},
|
194
|
+
{"mu", 956},
|
195
|
+
{"nabla", 8711},
|
196
|
+
{"nbsp", 160},
|
197
|
+
{"ndash", 8211},
|
198
|
+
{"ne", 8800},
|
199
|
+
{"ni", 8715},
|
200
|
+
{"not", 172},
|
201
|
+
{"notin", 8713},
|
202
|
+
{"nsub", 8836},
|
203
|
+
{"ntilde", 241},
|
204
|
+
{"nu", 957},
|
205
|
+
{"oacute", 243},
|
206
|
+
{"ocirc", 244},
|
207
|
+
{"oelig", 339},
|
208
|
+
{"ograve", 242},
|
209
|
+
{"oline", 8254},
|
210
|
+
{"omega", 969},
|
211
|
+
{"omicron", 959},
|
212
|
+
{"oplus", 8853},
|
213
|
+
{"or", 8744},
|
214
|
+
{"ordf", 170},
|
215
|
+
{"ordm", 186},
|
216
|
+
{"oslash", 248},
|
217
|
+
{"otilde", 245},
|
218
|
+
{"otimes", 8855},
|
219
|
+
{"ouml", 246},
|
220
|
+
{"para", 182},
|
221
|
+
{"part", 8706},
|
222
|
+
{"permil", 8240},
|
223
|
+
{"perp", 8869},
|
224
|
+
{"phi", 966},
|
225
|
+
{"pi", 960},
|
226
|
+
{"piv", 982},
|
227
|
+
{"plusmn", 177},
|
228
|
+
{"pound", 163},
|
229
|
+
{"prime", 8242},
|
230
|
+
{"prod", 8719},
|
231
|
+
{"prop", 8733},
|
232
|
+
{"psi", 968},
|
233
|
+
{"quot", 34},
|
234
|
+
{"rArr", 8658},
|
235
|
+
{"radic", 8730},
|
236
|
+
{"rang", 9002},
|
237
|
+
{"raquo", 187},
|
238
|
+
{"rarr", 8594},
|
239
|
+
{"rcaron", 345},
|
240
|
+
{"rceil", 8969},
|
241
|
+
{"rdquo", 8221},
|
242
|
+
{"real", 8476},
|
243
|
+
{"reg", 174},
|
244
|
+
{"rfloor", 8971},
|
245
|
+
{"rho", 961},
|
246
|
+
{"rlm", 8207},
|
247
|
+
{"rsaquo", 8250},
|
248
|
+
{"rsquo", 8217},
|
249
|
+
{"sbquo", 8218},
|
250
|
+
{"scaron", 353},
|
251
|
+
{"sdot", 8901},
|
252
|
+
{"sect", 167},
|
253
|
+
{"shy", 173},
|
254
|
+
{"sigma", 963},
|
255
|
+
{"sigmaf", 962},
|
256
|
+
{"sim", 8764},
|
257
|
+
{"spades", 9824},
|
258
|
+
{"sub", 8834},
|
259
|
+
{"sube", 8838},
|
260
|
+
{"sum", 8721},
|
261
|
+
{"sup", 8835},
|
262
|
+
{"sup1", 185},
|
263
|
+
{"sup2", 178},
|
264
|
+
{"sup3", 179},
|
265
|
+
{"supe", 8839},
|
266
|
+
{"szlig", 223},
|
267
|
+
{"tau", 964},
|
268
|
+
{"there4", 8756},
|
269
|
+
{"theta", 952},
|
270
|
+
{"thetasym", 977},
|
271
|
+
{"thinsp", 8201},
|
272
|
+
{"thorn", 254},
|
273
|
+
{"tilde", 732},
|
274
|
+
{"times", 215},
|
275
|
+
{"trade", 8482},
|
276
|
+
{"uArr", 8657},
|
277
|
+
{"uacute", 250},
|
278
|
+
{"uarr", 8593},
|
279
|
+
{"ucirc", 251},
|
280
|
+
{"ugrave", 249},
|
281
|
+
{"uml", 168},
|
282
|
+
{"upsih", 978},
|
283
|
+
{"upsilon", 965},
|
284
|
+
{"uuml", 252},
|
285
|
+
{"weierp", 8472},
|
286
|
+
{"xi", 958},
|
287
|
+
{"yacute", 253},
|
288
|
+
{"yen", 165},
|
289
|
+
{"yuml", 255},
|
290
|
+
{"zeta", 950},
|
291
|
+
{"zwj", 8205},
|
292
|
+
{"zwnj", 8204},
|
293
|
+
};
|
294
|
+
|
295
|
+
} // namespace CLD2
|
296
|
+
} // namespace chrome_lang_id
|