cld3 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|