forked from openkylin/ukui-search
整理项目结构
This commit is contained in:
parent
2fa56ef880
commit
aa425fe91b
|
@ -1,6 +1,3 @@
|
||||||
[submodule "debian"]
|
|
||||||
path = debian
|
|
||||||
url = http://gitlab2.kylin.com/kylin-desktop/ukui-search-debian.git
|
|
||||||
[submodule "libchinese-segmentation"]
|
[submodule "libchinese-segmentation"]
|
||||||
path = libchinese-segmentation
|
path = libchinese-segmentation
|
||||||
url = https://gitlab2.kylin.com/kylin-desktop/chinese-segmentation.git
|
url = https://gitee.com/openkylin/chinese-segmentation.git
|
||||||
|
|
1
debian
1
debian
|
@ -1 +0,0 @@
|
||||||
Subproject commit b24db6e6646067c89b06ae5591fdc3fb418b9c2e
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 02216728e0cf1f1304e97f7fc1f7b56f4ddc5872
|
Subproject commit 7ea0feae92f3dbab57bce3cc2a3e418ff84cafa9
|
|
@ -1,161 +0,0 @@
|
||||||
/*
|
|
||||||
* Friso test program.
|
|
||||||
* Of couse you can make it a perfect demo for friso.
|
|
||||||
* all threads or proccess share the same friso_t,
|
|
||||||
* defferent threads/proccess use defferent friso_task_t.
|
|
||||||
* and you could share the friso_config_t if you wish...
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso-interface.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#define __LENGTH__ 15
|
|
||||||
#define __INPUT_LENGTH__ 20480
|
|
||||||
#define ___EXIT_INFO___ \
|
|
||||||
println("Thanks for trying friso."); \
|
|
||||||
break;
|
|
||||||
|
|
||||||
#define ___ABOUT___ \
|
|
||||||
println("+---------------------------------------------------------------+"); \
|
|
||||||
println("| Friso - a Chinese word segmentation writen by c. |"); \
|
|
||||||
println("| bug report email - chenxin619315@gmail.com. |"); \
|
|
||||||
println("| or: visit https://github.com/lionsoul2014/friso. |"); \
|
|
||||||
println("| java version for https://github.com/lionsoul2014/jcseg |"); \
|
|
||||||
println("| type 'quit' to exit the program. |"); \
|
|
||||||
println("+---------------------------------------------------------------+");
|
|
||||||
|
|
||||||
//read a line from a command line.
|
|
||||||
static fstring getLine(FILE *fp, fstring __dst) {
|
|
||||||
register int c;
|
|
||||||
register fstring cs;
|
|
||||||
|
|
||||||
cs = __dst;
|
|
||||||
while((c = getc(fp)) != EOF) {
|
|
||||||
if(c == '\n') break;
|
|
||||||
*cs++ = c;
|
|
||||||
}
|
|
||||||
*cs = '\0';
|
|
||||||
|
|
||||||
return (c == EOF && cs == __dst) ? NULL : __dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*static void printcode( fstring str ) {
|
|
||||||
int i,length;
|
|
||||||
length = strlen( str );
|
|
||||||
printf("str:length=%d\n", length );
|
|
||||||
for ( i = 0; i < length; i++ ) {
|
|
||||||
printf("%d ", str[i] );
|
|
||||||
}
|
|
||||||
putchar('\n');
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//int friso_test(int argc, char **argv)
|
|
||||||
int friso_test() {
|
|
||||||
|
|
||||||
clock_t s_time, e_time;
|
|
||||||
char line[__INPUT_LENGTH__] = {0};
|
|
||||||
int i;
|
|
||||||
fstring __path__ = NULL, mode = NULL;
|
|
||||||
|
|
||||||
friso_t friso;
|
|
||||||
friso_config_t config;
|
|
||||||
friso_task_t task;
|
|
||||||
|
|
||||||
// get the lexicon directory from command line arguments
|
|
||||||
// for ( i = 0; i < argc; i++ ) {
|
|
||||||
// if ( strcasecmp( "-init", argv[i] ) == 0 ) {
|
|
||||||
// __path__ = argv[i+1];
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
__path__ = "/usr/share/ukui-search/res/friso.ini";
|
|
||||||
|
|
||||||
if(__path__ == NULL) {
|
|
||||||
println("Usage: friso -init lexicon path");
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
s_time = clock();
|
|
||||||
|
|
||||||
//initialize
|
|
||||||
friso = friso_new();
|
|
||||||
config = friso_new_config();
|
|
||||||
/*friso_dic_t dic = friso_dic_new();
|
|
||||||
friso_dic_load_from_ifile( dic, __path__, __LENGTH__ );
|
|
||||||
friso_set_dic( friso, dic );
|
|
||||||
friso_set_mode( friso, __FRISO_COMPLEX_MODE__ );*/
|
|
||||||
if(friso_init_from_ifile(friso, config, __path__) != 1) {
|
|
||||||
printf("fail to initialize friso and config.\n");
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(config->mode) {
|
|
||||||
case __FRISO_SIMPLE_MODE__:
|
|
||||||
mode = "Simple";
|
|
||||||
break;
|
|
||||||
case __FRISO_COMPLEX_MODE__:
|
|
||||||
mode = "Complex";
|
|
||||||
break;
|
|
||||||
case __FRISO_DETECT_MODE__:
|
|
||||||
mode = "Detect";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//friso_set_mode( config, __FRISO_DETECT_MODE__ );
|
|
||||||
//printf("clr_stw=%d\n", friso->clr_stw);
|
|
||||||
//printf("match c++?%d\n", friso_dic_match( friso->dic, __LEX_ENPUN_WORDS__, "c++" ));
|
|
||||||
//printf("match(研究)?%d\n", friso_dic_match( friso->dic, __LEX_CJK_WORDS__, "研究"));
|
|
||||||
|
|
||||||
e_time = clock();
|
|
||||||
|
|
||||||
printf("Initialized in %fsec\n", (double)(e_time - s_time) / CLOCKS_PER_SEC);
|
|
||||||
printf("Mode: %s\n", mode);
|
|
||||||
printf("+-Version: %s (%s)\n", friso_version(), friso->charset == FRISO_UTF8 ? "UTF-8" : "GBK");
|
|
||||||
___ABOUT___;
|
|
||||||
|
|
||||||
//set the task.
|
|
||||||
task = friso_new_task();
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
print("friso>> ");
|
|
||||||
getLine(stdin, line);
|
|
||||||
//exit the programe
|
|
||||||
if(strcasecmp(line, "quit") == 0) {
|
|
||||||
___EXIT_INFO___
|
|
||||||
}
|
|
||||||
|
|
||||||
//for ( i = 0; i < 1000000; i++ ) {
|
|
||||||
//set the task text.
|
|
||||||
friso_set_text(task, line);
|
|
||||||
println("分词结果:");
|
|
||||||
|
|
||||||
s_time = clock();
|
|
||||||
while((config->next_token(friso, config, task)) != NULL) {
|
|
||||||
printf(
|
|
||||||
"%s[%d, %d, %d] ",
|
|
||||||
task->token->word,
|
|
||||||
task->token->offset,
|
|
||||||
task->token->length,
|
|
||||||
task->token->rlen
|
|
||||||
);
|
|
||||||
// printf("%s ", task->token->word);
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
e_time = clock();
|
|
||||||
printf("\nDone, cost < %fsec\n", ((double)(e_time - s_time)) / CLOCKS_PER_SEC);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
friso_free_task(task);
|
|
||||||
|
|
||||||
//error block.
|
|
||||||
err:
|
|
||||||
friso_free_config(config);
|
|
||||||
friso_free(friso);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
/*
|
|
||||||
* temporary use friso.ini, it should be removed in the future.
|
|
||||||
* MouseZhangZh
|
|
||||||
*/
|
|
||||||
#include "friso/src/friso_API.h"
|
|
||||||
#include "friso/src/friso.h"
|
|
||||||
#include "friso/src/friso_ctype.h"
|
|
||||||
|
|
||||||
//int friso_test(int argc, char **argv);
|
|
||||||
int friso_test();
|
|
|
@ -1,15 +0,0 @@
|
||||||
*.o
|
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
*.so
|
|
||||||
*.out
|
|
||||||
src/friso
|
|
||||||
src/*-testing
|
|
||||||
# lib/ #
|
|
||||||
CHANGES.txt
|
|
||||||
# vim #
|
|
||||||
*.swp
|
|
||||||
*.vim
|
|
||||||
*.viminfo
|
|
||||||
.libs/
|
|
||||||
.idea/
|
|
|
@ -1,225 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
==========================================================================
|
|
||||||
The following license applies to the Friso ANSI C library
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
Copyright (c) 2010 lionsoul<chenxin619315@gmail.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -1,68 +0,0 @@
|
||||||
# friso configuration file.
|
|
||||||
# do not change the name of the left key.
|
|
||||||
# @email chenxin619315@gmail.com
|
|
||||||
# @date 2012-12-20
|
|
||||||
#
|
|
||||||
|
|
||||||
# charset, only UTF8 and GBK support.
|
|
||||||
# set it with UTF8(0) or GBK(1)
|
|
||||||
friso.charset = 0
|
|
||||||
|
|
||||||
# lexicon directory absolute path.
|
|
||||||
# the value must end with '/'
|
|
||||||
# this will tell friso how to find friso.lex.ini configuration file and all the lexicon files.
|
|
||||||
#
|
|
||||||
# if it is not start with '/' for linux, or matches no ':' for winnt in its value
|
|
||||||
# friso will search the friso.lex.ini relative to friso.ini
|
|
||||||
# absolute path search:
|
|
||||||
# linux: friso.lex_dir = /c/products/friso/dict/UTF-8/
|
|
||||||
# Winnt: friso.lex_dir = D:/products/friso/dict/UTF-8/
|
|
||||||
# relative path search (All system)
|
|
||||||
friso.lex_dir = ./dict/UTF-8/
|
|
||||||
|
|
||||||
# the maximum matching length.
|
|
||||||
friso.max_len = 5
|
|
||||||
|
|
||||||
# 1 for recognition chinese name.
|
|
||||||
# and 0 for closed it.
|
|
||||||
friso.r_name = 1
|
|
||||||
|
|
||||||
# the maximum length for the cjk words in a
|
|
||||||
# chinese and english mixed word.
|
|
||||||
friso.mix_len = 2
|
|
||||||
|
|
||||||
# the maxinum length for the chinese last name adron.
|
|
||||||
friso.lna_len = 1
|
|
||||||
|
|
||||||
# append the synonyms words
|
|
||||||
friso.add_syn = 1
|
|
||||||
|
|
||||||
# clear the stopwords or not (1 to open it and 0 to close it)
|
|
||||||
# @date 2013-06-13
|
|
||||||
friso.clr_stw = 0
|
|
||||||
|
|
||||||
# keep the unrecongized words or not (1 to open it and 0 to close it)
|
|
||||||
# @date 2013-06-13
|
|
||||||
friso.keep_urec = 0
|
|
||||||
|
|
||||||
# use sphinx output style like 'admire|love|enjoy einsten'
|
|
||||||
# @date 2013-10-25
|
|
||||||
friso.spx_out = 0
|
|
||||||
|
|
||||||
# start the secondary segmentation for complex english token.
|
|
||||||
friso.en_sseg = 1
|
|
||||||
|
|
||||||
# min length of the secondary segmentation token. (better larger than 1)
|
|
||||||
friso.st_minl = 2
|
|
||||||
|
|
||||||
# default keep punctuations for english token.
|
|
||||||
friso.kpuncs = @%.#&+
|
|
||||||
|
|
||||||
# the threshold value for a char not a part of a chinese name.
|
|
||||||
friso.nthreshold = 2000000
|
|
||||||
|
|
||||||
# default mode for friso.
|
|
||||||
# 1 : simple mode - simply maxmum matching algorithm.
|
|
||||||
# 2 : complex mode - four rules of mmseg alogrithm.
|
|
||||||
# 3 : detect mode - only return the words that the do exists in the lexicon
|
|
||||||
friso.mode = 2
|
|
|
@ -1,18 +0,0 @@
|
||||||
INCLUDEPATH += $$PWD
|
|
||||||
|
|
||||||
HEADERS += \
|
|
||||||
$$PWD/src/friso_API.h \
|
|
||||||
$$PWD/src/friso.h \
|
|
||||||
$$PWD/src/friso_ctype.h
|
|
||||||
|
|
||||||
SOURCES += \
|
|
||||||
$$PWD/src/friso.c \
|
|
||||||
$$PWD/src/friso_lexicon.c \
|
|
||||||
$$PWD/src/friso_string.c \
|
|
||||||
$$PWD/src/friso_array.c \
|
|
||||||
$$PWD/src/friso_ctype.c \
|
|
||||||
$$PWD/src/friso_GBK.c \
|
|
||||||
$$PWD/src/friso_hash.c \
|
|
||||||
$$PWD/src/friso_link.c \
|
|
||||||
$$PWD/src/friso_UTF8.c
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,370 +0,0 @@
|
||||||
/*
|
|
||||||
* main interface file for friso tokenizer.
|
|
||||||
* you could modify it and re-release and free for commercial use.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _friso_h
|
|
||||||
#define _friso_h
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* {{{ friso main interface define :: start*/
|
|
||||||
#define FRISO_VERSION "1.6.4"
|
|
||||||
#define friso_version() FRISO_VERSION
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_SEGMENT_LENGTH 5
|
|
||||||
#define DEFAULT_MIX_LENGTH 2
|
|
||||||
#define DEFAULT_LNA_LENGTH 1
|
|
||||||
#define DEFAULT_NTHRESHOLD 1000000
|
|
||||||
#define DEFAULT_SEGMENT_MODE 2
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Type: friso_lex_t
|
|
||||||
* -----------
|
|
||||||
* This type used to represent the type of the lexicon.
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
__LEX_CJK_WORDS__ = 0,
|
|
||||||
__LEX_CJK_UNITS__ = 1,
|
|
||||||
__LEX_ECM_WORDS__ = 2, //english and chinese mixed words.
|
|
||||||
__LEX_CEM_WORDS__ = 3, //chinese and english mixed words.
|
|
||||||
__LEX_CN_LNAME__ = 4,
|
|
||||||
__LEX_CN_SNAME__ = 5,
|
|
||||||
__LEX_CN_DNAME1__ = 6,
|
|
||||||
__LEX_CN_DNAME2__ = 7,
|
|
||||||
__LEX_CN_LNA__ = 8,
|
|
||||||
__LEX_STOPWORDS__ = 9,
|
|
||||||
__LEX_ENPUN_WORDS__ = 10,
|
|
||||||
__LEX_EN_WORDS__ = 11,
|
|
||||||
__LEX_OTHER_WORDS__ = 15,
|
|
||||||
__LEX_NCSYN_WORDS__ = 16,
|
|
||||||
__LEX_PUNC_WORDS__ = 17, //punctuations
|
|
||||||
__LEX_UNKNOW_WORDS__ = 18 //unrecognized words.
|
|
||||||
} friso_lex_t;
|
|
||||||
|
|
||||||
typedef friso_hash_t * friso_dic_t;
|
|
||||||
#define __FRISO_LEXICON_LENGTH__ 12
|
|
||||||
|
|
||||||
|
|
||||||
//charset that Friso now support.
|
|
||||||
typedef enum {
|
|
||||||
FRISO_UTF8 = 0, //UTF-8
|
|
||||||
FRISO_GBK = 1 //GBK
|
|
||||||
} friso_charset_t;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Type: friso_mode_t
|
|
||||||
* ------------------
|
|
||||||
* use to identidy the mode that the friso use.
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
__FRISO_SIMPLE_MODE__ = 1,
|
|
||||||
__FRISO_COMPLEX_MODE__ = 2,
|
|
||||||
__FRISO_DETECT_MODE__ = 3
|
|
||||||
} friso_mode_t;
|
|
||||||
|
|
||||||
/* friso entry.*/
|
|
||||||
typedef struct {
|
|
||||||
friso_dic_t dic; //friso dictionary
|
|
||||||
friso_charset_t charset; //project charset.
|
|
||||||
} friso_entry;
|
|
||||||
typedef friso_entry * friso_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Type: lex_entry_cdt
|
|
||||||
* -------------------
|
|
||||||
* This type used to represent the lexicon entry struct.
|
|
||||||
*/
|
|
||||||
#define _LEX_APPENSYN_MASK (1 << 0) //append synoyums words.
|
|
||||||
#define lex_appensyn_open(e) e->ctrlMask |= _LEX_APPENSYN_MASK
|
|
||||||
#define lex_appensyn_close(e) e->ctrlMask &= ~_LEX_APPENSYN_MASK
|
|
||||||
#define lex_appensyn_check(e) ((e->ctrlMask & _LEX_APPENSYN_MASK) != 0)
|
|
||||||
typedef struct {
|
|
||||||
/*
|
|
||||||
* the type of the lexicon item.
|
|
||||||
* available value is all the elements in friso_lex_t enum.
|
|
||||||
* and if it is __LEX_OTHER_WORDS__, we need to free it after use it.
|
|
||||||
*/
|
|
||||||
uchar_t length; //the length of the token.(after the convertor of Friso.)
|
|
||||||
uchar_t rlen; //the real length of the token.(before any convert)
|
|
||||||
uchar_t type;
|
|
||||||
uchar_t ctrlMask; //function control mask, like append the synoyums words.
|
|
||||||
uint_t offset; //offset index.
|
|
||||||
fstring word;
|
|
||||||
//fstring py; //pinyin of the word.(invalid)
|
|
||||||
friso_array_t syn; //synoyums words.
|
|
||||||
friso_array_t pos; //part of speech.
|
|
||||||
uint_t fre; //single word frequency.
|
|
||||||
} lex_entry_cdt;
|
|
||||||
typedef lex_entry_cdt * lex_entry_t;
|
|
||||||
|
|
||||||
|
|
||||||
/*the segmentation token entry.*/
|
|
||||||
#define __HITS_WORD_LENGTH__ 64
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uchar_t type; //type of the word. (item of friso_lex_t)
|
|
||||||
uchar_t length; //length of the token.
|
|
||||||
uchar_t rlen; //the real length of the token.(in orgin string)
|
|
||||||
char pos; //part of speech.
|
|
||||||
int offset; //start offset of the word.
|
|
||||||
char word[__HITS_WORD_LENGTH__];
|
|
||||||
//char py[0];
|
|
||||||
} friso_token_entry;
|
|
||||||
typedef friso_token_entry * friso_token_t;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Type: friso_task_entry
|
|
||||||
* This type used to represent the current segmentation content.
|
|
||||||
* like the text to split, and the current index, token buffer eg....
|
|
||||||
*/
|
|
||||||
//action control mask for #FRISO_TASK_T#.
|
|
||||||
#define _TASK_CHECK_CF_MASK (1 << 0) //Wether to check the chinese fraction.
|
|
||||||
#define _TASK_START_SS_MASK (1 << 1) //Wether to start the secondary segmentation.
|
|
||||||
#define task_ssseg_open(task) task->ctrlMask |= _TASK_START_SS_MASK
|
|
||||||
#define task_ssseg_close(task) task->ctrlMask &= ~_TASK_START_SS_MASK
|
|
||||||
#define task_ssseg_check(task) ((task->ctrlMask & _TASK_START_SS_MASK) != 0)
|
|
||||||
typedef struct {
|
|
||||||
fstring text; //text to tokenize
|
|
||||||
uint_t idx; //start offset index.
|
|
||||||
uint_t length; //length of the text.
|
|
||||||
uint_t bytes; //latest word bytes in C.
|
|
||||||
uint_t unicode; //latest word unicode number.
|
|
||||||
uint_t ctrlMask; //action control mask.
|
|
||||||
friso_link_t pool; //task pool.
|
|
||||||
string_buffer_t sbuf; //string buffer.
|
|
||||||
friso_token_t token; //token result token;
|
|
||||||
char buffer[7]; //word buffer. (1-6 bytes for an utf-8 word in C).
|
|
||||||
} friso_task_entry;
|
|
||||||
typedef friso_task_entry * friso_task_t;
|
|
||||||
|
|
||||||
|
|
||||||
/* task configuration entry.*/
|
|
||||||
#define _FRISO_KEEP_PUNC_LEN 13
|
|
||||||
#define friso_en_kpunc(config, ch) (strchr(config->kpuncs, ch) != 0)
|
|
||||||
//typedef friso_token_t ( * friso_next_hit_fn ) ( friso_t, void *, friso_task_t );
|
|
||||||
//typedef lex_entry_t ( * friso_next_lex_fn ) ( friso_t, void *, friso_task_t );
|
|
||||||
struct friso_config_struct {
|
|
||||||
ushort_t max_len; //the max match length (4 - 7).
|
|
||||||
ushort_t r_name; //1 for open chinese name recognition 0 for close it.
|
|
||||||
ushort_t mix_len; //the max length for the CJK words in a mix string.
|
|
||||||
ushort_t lna_len; //the max length for the chinese last name adron.
|
|
||||||
ushort_t add_syn; //append synonyms tokenizer words.
|
|
||||||
ushort_t clr_stw; //clear the stopwords.
|
|
||||||
ushort_t keep_urec; //keep the unrecongnized words.
|
|
||||||
ushort_t spx_out; //use sphinx output customize.
|
|
||||||
ushort_t en_sseg; //start the secondary segmentation.
|
|
||||||
ushort_t st_minl; //min length of the secondary segmentation token.
|
|
||||||
uint_t nthreshold; //the threshold value for a char to make up a chinese name.
|
|
||||||
friso_mode_t mode; //Complex mode or simple mode
|
|
||||||
|
|
||||||
//pointer to the function to get the next token
|
|
||||||
friso_token_t (*next_token)(friso_t, struct friso_config_struct *, friso_task_t);
|
|
||||||
//pointer to the function to get the next cjk lex_entry_t
|
|
||||||
lex_entry_t (*next_cjk)(friso_t, struct friso_config_struct *, friso_task_t);
|
|
||||||
|
|
||||||
char kpuncs[_FRISO_KEEP_PUNC_LEN]; //keep punctuations buffer.
|
|
||||||
};
|
|
||||||
typedef struct friso_config_struct friso_config_entry;
|
|
||||||
typedef friso_config_entry * friso_config_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_new;
|
|
||||||
* Usage: vars = friso_new( void );
|
|
||||||
* --------------------------------
|
|
||||||
* This function used to create a new empty friso friso_t;
|
|
||||||
* with default value.
|
|
||||||
*/
|
|
||||||
FRISO_API friso_t friso_new(void);
|
|
||||||
|
|
||||||
//creat a friso entry with a default value from a configuratile file.
|
|
||||||
//@return 1 for successfully and 0 for failed.
|
|
||||||
FRISO_API int friso_init_from_ifile(friso_t, friso_config_t, fstring);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_free_vars;
|
|
||||||
* Usage: friso_free( vars );
|
|
||||||
* --------------------------
|
|
||||||
* This function is used to free the allocation of the given vars.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_free(friso_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_set_dic
|
|
||||||
* Usage: dic = friso_set_dic( vars, dic );
|
|
||||||
* ----------------------------------------
|
|
||||||
* This function is used to set the dictionary for friso.
|
|
||||||
* and firso_dic_t is the pointer of a hash table array.
|
|
||||||
*/
|
|
||||||
//FRISO_API void friso_set_dic( friso_t, friso_dic_t );
|
|
||||||
#define friso_set_dic(friso, dic)\
|
|
||||||
do {\
|
|
||||||
friso->dic = dic;\
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_set_mode
|
|
||||||
* Usage: friso_set_mode( vars, mode );
|
|
||||||
* ------------------------------------
|
|
||||||
* This function is used to set the mode(complex or simple) that you want to friso to use.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_set_mode(friso_config_t, friso_mode_t);
|
|
||||||
|
|
||||||
/*create a new friso configuration entry and initialize
|
|
||||||
it with the default value.*/
|
|
||||||
FRISO_API friso_config_t friso_new_config(void);
|
|
||||||
|
|
||||||
//initialize the specified friso config entry with default value.
|
|
||||||
FRISO_API void friso_init_config(friso_config_t);
|
|
||||||
|
|
||||||
//free the specified friso configuration entry.
|
|
||||||
//FRISO_API void friso_free_config( friso_config_t );
|
|
||||||
#define friso_free_config(cfg) FRISO_FREE(cfg)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_new_task;
|
|
||||||
* Usage: segment = friso_new_task( void );
|
|
||||||
* ----------------------------------------
|
|
||||||
* This function is used to create a new friso segment type;
|
|
||||||
*/
|
|
||||||
FRISO_API friso_task_t friso_new_task(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_free_task;
|
|
||||||
* Usage: friso_free_task( task );
|
|
||||||
* -------------------------------
|
|
||||||
* This function is used to free the allocation of function friso_new_segment();
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_free_task(friso_task_t);
|
|
||||||
|
|
||||||
//create a new friso token
|
|
||||||
FRISO_API friso_token_t friso_new_token(void);
|
|
||||||
|
|
||||||
//free the given friso token
|
|
||||||
//FRISO_API void friso_free_token( friso_token_t );
|
|
||||||
#define friso_free_token(token) FRISO_FREE(token)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_set_text
|
|
||||||
* Usage: friso_set_text( task, text );
|
|
||||||
* ------------------------------------
|
|
||||||
* This function is used to set the text that is going to segment.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_set_text(friso_task_t, fstring);
|
|
||||||
|
|
||||||
|
|
||||||
//get the next cjk word with mmseg simple mode
|
|
||||||
FRISO_API lex_entry_t next_simple_cjk(friso_t, friso_config_t, friso_task_t);
|
|
||||||
|
|
||||||
//get the next cjk word with mmseg complex mode(mmseg core algorithm)
|
|
||||||
FRISO_API lex_entry_t next_complex_cjk(friso_t, friso_config_t, friso_task_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: next_mmseg_token
|
|
||||||
* Usage: word = next_mmseg_token( vars, seg );
|
|
||||||
* --------------------------------------
|
|
||||||
* This function is used to get next word that friso segmented
|
|
||||||
* with a split mode of __FRISO_SIMPLE_MODE__ or __FRISO_COMPLEX_MODE__
|
|
||||||
*/
|
|
||||||
FRISO_API friso_token_t next_mmseg_token(friso_t, friso_config_t, friso_task_t);
|
|
||||||
|
|
||||||
//__FRISO_DETECT_MODE__
|
|
||||||
FRISO_API friso_token_t next_detect_token(friso_t, friso_config_t, friso_task_t);
|
|
||||||
/* }}} friso main interface define :: end*/
|
|
||||||
|
|
||||||
/* {{{ lexicon interface define :: start*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_new
|
|
||||||
* Usage: dic = friso_new_dic();
|
|
||||||
* -----------------------------
|
|
||||||
* This function used to create a new dictionary.(memory allocation).
|
|
||||||
*/
|
|
||||||
FRISO_API friso_dic_t friso_dic_new(void);
|
|
||||||
|
|
||||||
FRISO_API fstring file_get_line(fstring, FILE *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_free
|
|
||||||
* Usage: friso_dic_free( void );
|
|
||||||
* ------------------------------
|
|
||||||
* This function is used to free all the allocation of friso_dic_new.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_free(friso_dic_t);
|
|
||||||
|
|
||||||
//create a new lexicon entry.
|
|
||||||
FRISO_API lex_entry_t new_lex_entry(fstring, friso_array_t, uint_t, uint_t, uint_t);
|
|
||||||
|
|
||||||
//free the given lexicon entry.
|
|
||||||
//free all the allocations that its synonyms word's items pointed to
|
|
||||||
//when the second arguments is 1
|
|
||||||
FRISO_API void free_lex_entry_full(lex_entry_t);
|
|
||||||
FRISO_API void free_lex_entry(lex_entry_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_load
|
|
||||||
* Usage: friso_dic_load( friso, friso_lex_t, path, length );
|
|
||||||
* --------------------------------------------------
|
|
||||||
* This function is used to load dictionary from a given path.
|
|
||||||
* no length limit when length less than 0.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_load(friso_t, friso_config_t,
|
|
||||||
friso_lex_t, fstring, uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* load the lexicon configuration file.
|
|
||||||
* and load all the valid lexicon from the conf file.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_load_from_ifile(friso_t, friso_config_t, fstring, uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_match
|
|
||||||
* Usage: friso_dic_add( dic, friso_lex_t, word, syn );
|
|
||||||
* ----------------------------------------------
|
|
||||||
* This function used to put new word into the dictionary.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_add(friso_dic_t, friso_lex_t, fstring, friso_array_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_add_with_fre
|
|
||||||
* Usage: friso_dic_add_with_fre( dic, friso_lex_t, word, value, syn, fre );
|
|
||||||
* -------------------------------------------------------------------
|
|
||||||
* This function used to put new word width frequency into the dictionary.
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_add_with_fre(friso_dic_t, friso_lex_t, fstring, friso_array_t, uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_match
|
|
||||||
* Usage: result = friso_dic_match( dic, friso_lex_t, word );
|
|
||||||
* ----------------------------------------------------
|
|
||||||
* This function is used to check the given word is in the dictionary or not.
|
|
||||||
*/
|
|
||||||
FRISO_API int friso_dic_match(friso_dic_t, friso_lex_t, fstring);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_dic_get
|
|
||||||
* Usage: friso_dic_get( dic, friso_lex_t, word );
|
|
||||||
* -----------------------------------------
|
|
||||||
* This function is used to search the specified lex_entry_t.
|
|
||||||
*/
|
|
||||||
FRISO_API lex_entry_t friso_dic_get(friso_dic_t, friso_lex_t, fstring);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: friso_spec_dic_size
|
|
||||||
* Usage: friso_spec_dic_size( dic, friso_lex_t )
|
|
||||||
* This function is used to get the size of the dictionary with a specified type.
|
|
||||||
*/
|
|
||||||
FRISO_API uint_t friso_spec_dic_size(friso_dic_t, friso_lex_t);
|
|
||||||
FRISO_API uint_t friso_all_dic_size(friso_dic_t);
|
|
||||||
/* }}} lexicon interface define :: end*/
|
|
||||||
|
|
||||||
#endif /*end ifndef*/
|
|
|
@ -1,412 +0,0 @@
|
||||||
/*
|
|
||||||
* friso ADT application interface header source file.
|
|
||||||
* 1. string bufffer interface.
|
|
||||||
* 2. hashmap interface.
|
|
||||||
* 3. dynamaic array interface.
|
|
||||||
* 4. double link list interface.
|
|
||||||
*
|
|
||||||
* @author chenxin <chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _friso_api_h
|
|
||||||
#define _friso_api_h
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
//yat, just take it as this way, 99 percent you will find no problem
|
|
||||||
#if ( defined(_WIN32) || defined(_WINDOWS_) || defined(__WINDOWS_) )
|
|
||||||
# define FRISO_WINNT
|
|
||||||
#else
|
|
||||||
# define FRISO_LINUX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FRISO_WINNT
|
|
||||||
# define FRISO_API extern __declspec(dllexport)
|
|
||||||
# define __STATIC_API__ static
|
|
||||||
#else
|
|
||||||
/*platform shared library statement :: unix*/
|
|
||||||
# define FRISO_API extern
|
|
||||||
# define __STATIC_API__ static inline
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ___ALLOCATION_ERROR___ \
|
|
||||||
printf("Unable to do the memory allocation, program will now exit\n" ); \
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
#define print(str) printf("%s", str )
|
|
||||||
#define println(str) printf("%s\n", str )
|
|
||||||
|
|
||||||
/*
|
|
||||||
* memory allocation macro definition which make it more more convenient
|
|
||||||
* to change to use your favorite or a better memory manage library.
|
|
||||||
*/
|
|
||||||
#define FRISO_CALLOC(_bytes, _blocks) calloc(_bytes, _blocks)
|
|
||||||
#define FRISO_MALLOC(_bytes) malloc(_bytes)
|
|
||||||
#define FRISO_FREE(_ptr) free( _ptr )
|
|
||||||
|
|
||||||
typedef unsigned short ushort_t;
|
|
||||||
typedef unsigned char uchar_t;
|
|
||||||
typedef unsigned int uint_t;
|
|
||||||
typedef char * fstring;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* {{{ fstring handle interface define::start. */
|
|
||||||
#define __CHAR_BYTES__ 8
|
|
||||||
#define __BUFFER_DEFAULT_LENGTH__ 16
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
fstring buffer;
|
|
||||||
uint_t length;
|
|
||||||
uint_t allocs;
|
|
||||||
} string_buffer_entry;
|
|
||||||
|
|
||||||
typedef string_buffer_entry * string_buffer_t;
|
|
||||||
|
|
||||||
//FRISO_API string_buffer_t new_string_buffer( void );
|
|
||||||
#define new_string_buffer() \
|
|
||||||
new_string_buffer_with_opacity( __DEFAULT_ARRAY_LIST_OPACITY__ );
|
|
||||||
FRISO_API string_buffer_t new_string_buffer_with_opacity(uint_t);
|
|
||||||
FRISO_API string_buffer_t new_string_buffer_with_string(fstring str);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* this function will copy the chars that the fstring pointed.
|
|
||||||
* to the buffer.
|
|
||||||
* this may cause the resize action of the buffer.
|
|
||||||
*/
|
|
||||||
FRISO_API void string_buffer_append(string_buffer_t, fstring);
|
|
||||||
FRISO_API void string_buffer_append_char(string_buffer_t, char);
|
|
||||||
|
|
||||||
//insert the given fstring from the specified position.
|
|
||||||
FRISO_API void string_buffer_insert(string_buffer_t, uint_t idx, fstring);
|
|
||||||
|
|
||||||
//remove the char in the specified position.
|
|
||||||
FRISO_API fstring string_buffer_remove(string_buffer_t, uint_t idx, uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* turn the string_buffer to a string.
|
|
||||||
* or return the buffer of the string_buffer.
|
|
||||||
*/
|
|
||||||
FRISO_API string_buffer_t string_buffer_trim(string_buffer_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* free the given fstring buffer.
|
|
||||||
* and this function will not free the allocations of the
|
|
||||||
* the string_buffer_t->buffer, we return it to you, if there is
|
|
||||||
* a necessary you could free it youself by calling free();
|
|
||||||
*/
|
|
||||||
FRISO_API fstring string_buffer_devote(string_buffer_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* clear the given fstring buffer.
|
|
||||||
* reset its buffer with 0 and reset its length to 0.
|
|
||||||
*/
|
|
||||||
FRISO_API void string_buffer_clear(string_buffer_t);
|
|
||||||
|
|
||||||
//free the fstring buffer include the buffer.
|
|
||||||
FRISO_API void free_string_buffer(string_buffer_t);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* fstring specified chars tokenizer functions
|
|
||||||
*
|
|
||||||
* @date 2013-06-08
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
fstring source;
|
|
||||||
uint_t srcLen;
|
|
||||||
fstring delimiter;
|
|
||||||
uint_t delLen;
|
|
||||||
uint_t idx;
|
|
||||||
} string_split_entry;
|
|
||||||
typedef string_split_entry * string_split_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* create a new string_split_entry.
|
|
||||||
*
|
|
||||||
* @param source
|
|
||||||
* @return string_split_t;
|
|
||||||
*/
|
|
||||||
FRISO_API string_split_t new_string_split(fstring, fstring);
|
|
||||||
|
|
||||||
FRISO_API void string_split_reset(string_split_t, fstring, fstring);
|
|
||||||
|
|
||||||
FRISO_API void string_split_set_source(string_split_t, fstring);
|
|
||||||
|
|
||||||
FRISO_API void string_split_set_delimiter(string_split_t, fstring);
|
|
||||||
|
|
||||||
FRISO_API void free_string_split(string_split_t);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the next split fstring, and copy the
|
|
||||||
* splited fstring into the __dst buffer .
|
|
||||||
*
|
|
||||||
* @param string_split_t
|
|
||||||
* @param __dst
|
|
||||||
* @return fstring (NULL if reach the end of the source
|
|
||||||
* or there is no more segmentation)
|
|
||||||
*/
|
|
||||||
FRISO_API fstring string_split_next(string_split_t, fstring);
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* {{{ dynamaic array interface define::start*/
|
|
||||||
#define __DEFAULT_ARRAY_LIST_OPACITY__ 8
|
|
||||||
|
|
||||||
/*friso array list entry struct*/
|
|
||||||
typedef struct {
|
|
||||||
void **items;
|
|
||||||
uint_t allocs;
|
|
||||||
uint_t length;
|
|
||||||
} friso_array_entry;
|
|
||||||
|
|
||||||
typedef friso_array_entry * friso_array_t;
|
|
||||||
|
|
||||||
//create a new friso dynamic array.
|
|
||||||
//FRISO_API friso_array_t new_array_list( void );
|
|
||||||
#define new_array_list() new_array_list_with_opacity(__DEFAULT_ARRAY_LIST_OPACITY__)
|
|
||||||
|
|
||||||
//create a new friso dynamic array with the given opacity
|
|
||||||
FRISO_API friso_array_t new_array_list_with_opacity(uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* free the given friso array.
|
|
||||||
* and its items, but never where the items's item to pointed to .
|
|
||||||
*/
|
|
||||||
FRISO_API void free_array_list(friso_array_t);
|
|
||||||
|
|
||||||
//add a new item to the array.
|
|
||||||
FRISO_API void array_list_add(friso_array_t, void *);
|
|
||||||
|
|
||||||
//insert a new item at a specifed position.
|
|
||||||
FRISO_API void array_list_insert(friso_array_t, uint_t, void *);
|
|
||||||
|
|
||||||
//get a item at a specified position.
|
|
||||||
FRISO_API void *array_list_get(friso_array_t, uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* set the item at a specified position.
|
|
||||||
* this will return the old value.
|
|
||||||
*/
|
|
||||||
FRISO_API void *array_list_set(friso_array_t, uint_t, void *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* remove the given item at a specified position.
|
|
||||||
* this will return the value of the removed item.
|
|
||||||
*/
|
|
||||||
FRISO_API void *array_list_remove(friso_array_t, uint_t);
|
|
||||||
|
|
||||||
/*trim the array list for final use.*/
|
|
||||||
FRISO_API friso_array_t array_list_trim(friso_array_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* clear the array list.
|
|
||||||
* this function will free all the allocations that the pointer pointed.
|
|
||||||
* but will not free the point array allocations,
|
|
||||||
* and will reset the length of it.
|
|
||||||
*/
|
|
||||||
FRISO_API friso_array_t array_list_clear(friso_array_t);
|
|
||||||
|
|
||||||
//return the size of the array.
|
|
||||||
//FRISO_API uint_t array_list_size( friso_array_t );
|
|
||||||
#define array_list_size( array ) array->length
|
|
||||||
|
|
||||||
//return the allocations of the array.
|
|
||||||
//FRISO_API uint_t array_list_allocs( friso_array_t );
|
|
||||||
#define array_list_allocs( array ) array->allocs
|
|
||||||
|
|
||||||
//check if the array is empty.
|
|
||||||
//FRISO_API int array_list_empty( friso_array_t );
|
|
||||||
#define array_list_empty( array ) ( array->length == 0 )
|
|
||||||
/* }}} dynamaic array interface define::end*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* {{{ link list interface define::start*/
|
|
||||||
struct friso_link_node {
|
|
||||||
void *value;
|
|
||||||
struct friso_link_node *prev;
|
|
||||||
struct friso_link_node *next;
|
|
||||||
};
|
|
||||||
typedef struct friso_link_node link_node_entry;
|
|
||||||
typedef link_node_entry * link_node_t;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* link list adt
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
link_node_t head;
|
|
||||||
link_node_t tail;
|
|
||||||
uint_t size;
|
|
||||||
} friso_link_entry;
|
|
||||||
|
|
||||||
typedef friso_link_entry * friso_link_t;
|
|
||||||
|
|
||||||
//create a new link list
|
|
||||||
FRISO_API friso_link_t new_link_list(void);
|
|
||||||
|
|
||||||
//free the specified link list
|
|
||||||
FRISO_API void free_link_list(friso_link_t);
|
|
||||||
|
|
||||||
//return the size of the current link list.
|
|
||||||
//FRISO_API uint_t link_list_size( friso_link_t );
|
|
||||||
#define link_list_size( link ) link->size
|
|
||||||
|
|
||||||
//check the given link is empty or not.
|
|
||||||
//FRISO_API int link_list_empty( friso_link_t );
|
|
||||||
#define link_list_empty( link ) (link->size == 0)
|
|
||||||
|
|
||||||
//clear all the nodes in the link list( except the head and the tail ).
|
|
||||||
FRISO_API friso_link_t link_list_clear(friso_link_t link);
|
|
||||||
|
|
||||||
//add a new node to the link list.(append from the tail)
|
|
||||||
FRISO_API void link_list_add(friso_link_t, void *);
|
|
||||||
|
|
||||||
//add a new node before the specified node
|
|
||||||
FRISO_API void link_list_insert_before(friso_link_t, uint_t, void *);
|
|
||||||
|
|
||||||
//get the node in the current index.
|
|
||||||
FRISO_API void *link_list_get(friso_link_t, uint_t);
|
|
||||||
|
|
||||||
//modify the node in the current index.
|
|
||||||
FRISO_API void *link_list_set(friso_link_t, uint_t, void *);
|
|
||||||
|
|
||||||
//remove the specified link node
|
|
||||||
FRISO_API void *link_list_remove(friso_link_t, uint_t);
|
|
||||||
|
|
||||||
//remove the given node
|
|
||||||
FRISO_API void *link_list_remove_node(friso_link_t, link_node_t);
|
|
||||||
|
|
||||||
//remove the node from the frist.
|
|
||||||
FRISO_API void *link_list_remove_first(friso_link_t);
|
|
||||||
|
|
||||||
//remove the last node from the link list
|
|
||||||
FRISO_API void *link_list_remove_last(friso_link_t);
|
|
||||||
|
|
||||||
//append a node from the end.
|
|
||||||
FRISO_API void link_list_add_last(friso_link_t, void *);
|
|
||||||
|
|
||||||
//add a node at the begining of the link list.
|
|
||||||
FRISO_API void link_list_add_first(friso_link_t, void *);
|
|
||||||
/* }}} link list interface define::end*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* {{{ hashtable interface define :: start*/
|
|
||||||
struct hash_entry {
|
|
||||||
fstring _key; //the node key
|
|
||||||
void * _val; //the node value
|
|
||||||
struct hash_entry * _next;
|
|
||||||
};
|
|
||||||
typedef struct hash_entry friso_hash_entry;
|
|
||||||
typedef friso_hash_entry * hash_entry_t;
|
|
||||||
typedef void (*fhash_callback_fn_t)(hash_entry_t);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint_t length;
|
|
||||||
uint_t size;
|
|
||||||
float factor;
|
|
||||||
uint_t threshold;
|
|
||||||
hash_entry_t *table;
|
|
||||||
} friso_hash_cdt;
|
|
||||||
|
|
||||||
typedef friso_hash_cdt * friso_hash_t;
|
|
||||||
|
|
||||||
//default value for friso_hash_cdt
|
|
||||||
#define DEFAULT_LENGTH 31
|
|
||||||
#define DEFAULT_FACTOR 0.85f
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: new_hash_table
|
|
||||||
* Usage: table = new_hash_table();
|
|
||||||
* --------------------------------
|
|
||||||
* this function allocates a new symbol table with no entries.
|
|
||||||
*/
|
|
||||||
FRISO_API friso_hash_t new_hash_table(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: free_hash_table
|
|
||||||
* Usage: free_hash_table( table );
|
|
||||||
* --------------------------------------
|
|
||||||
* this function will free all the allocation for memory.
|
|
||||||
*/
|
|
||||||
FRISO_API void free_hash_table(friso_hash_t, fhash_callback_fn_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: put_new_mapping
|
|
||||||
* Usage: put_mapping( table, key, value );
|
|
||||||
* ----------------------------------------
|
|
||||||
* the function associates the specified key with the given value.
|
|
||||||
*/
|
|
||||||
FRISO_API void *hash_put_mapping(friso_hash_t, fstring, void *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: is_mapping_exists
|
|
||||||
* Usage: bool = is_mapping_exists( table, key );
|
|
||||||
* ----------------------------------------------
|
|
||||||
* this function check the given key mapping is exists or not.
|
|
||||||
*/
|
|
||||||
FRISO_API int hash_exist_mapping(friso_hash_t, fstring);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: get_mapping_value
|
|
||||||
* Usage: value = get_mapping_value( table, key );
|
|
||||||
* -----------------------------------------------
|
|
||||||
* this function return the value associated with the given key.
|
|
||||||
* UNDEFINED will be return if the mapping is not exists.
|
|
||||||
*/
|
|
||||||
FRISO_API void * hash_get_value(friso_hash_t, fstring);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: remove_mapping
|
|
||||||
* Usage: remove_mapping( table, key );
|
|
||||||
* ------------------------------------
|
|
||||||
* This function is used to remove the mapping associated with the given key.
|
|
||||||
*/
|
|
||||||
FRISO_API hash_entry_t hash_remove_mapping(friso_hash_t, fstring);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: get_table_size
|
|
||||||
* Usage: size = get_table_size( table );
|
|
||||||
* --------------------------------------
|
|
||||||
* This function is used to count the size of the specified table.
|
|
||||||
*/
|
|
||||||
//FRISO_API uint_t hash_get_size( friso_hash_t );
|
|
||||||
#define hash_get_size( hash ) hash->size
|
|
||||||
/* }}} hashtable interface define :: end*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* {{{ utf8 string interface define :: start*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: get_utf8_bytes
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
FRISO_API int get_utf8_bytes(char);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: get_utf8_unicode
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
FRISO_API int get_utf8_unicode(const fstring);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: unicode_to_utf8
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
FRISO_API int unicode_to_utf8(uint_t, fstring);
|
|
||||||
|
|
||||||
|
|
||||||
/* }}} utf8 string interface define :: start*/
|
|
||||||
|
|
||||||
|
|
||||||
#endif /*end ifndef*/
|
|
|
@ -1,283 +0,0 @@
|
||||||
/**
|
|
||||||
* Friso GBK serial functions implementation source file.
|
|
||||||
* @package src/friso_GBK.c .
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include "friso_ctype.h"
|
|
||||||
|
|
||||||
/* read the next GBK word from the specified position.
|
|
||||||
*
|
|
||||||
* @return int the bytes of the current readed word.
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_next_word(
|
|
||||||
friso_task_t task,
|
|
||||||
uint_t *idx,
|
|
||||||
fstring __word) {
|
|
||||||
int c;
|
|
||||||
if(*idx >= task->length) return 0;
|
|
||||||
|
|
||||||
c = (uchar_t)task->text[*idx];
|
|
||||||
if(c <= 0x80) {
|
|
||||||
task->bytes = 1;
|
|
||||||
} else {
|
|
||||||
task->bytes = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
//copy the word to the buffer.
|
|
||||||
memcpy(__word, task->text + (*idx), task->bytes);
|
|
||||||
(*idx) += task->bytes;
|
|
||||||
__word[task->bytes] = '\0';
|
|
||||||
|
|
||||||
return task->bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the bytes of a gbk char.
|
|
||||||
//FRISO_API int get_gbk_bytes( char c )
|
|
||||||
//{
|
|
||||||
// return 1;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//check if the given buffer is a gbk word (ANSII string).
|
|
||||||
// included the simplified and traditional words.
|
|
||||||
FRISO_API int gbk_cn_string(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
//GBK/2: gb2312 chinese word.
|
|
||||||
return (((c1 >= 0xb0 && c1 <= 0xf7)
|
|
||||||
&& (c2 >= 0xa1 && c2 <= 0xfe))
|
|
||||||
//GBK/3: extend chinese words.
|
|
||||||
|| ((c1 >= 0x81 && c1 <= 0xa0)
|
|
||||||
&& ((c2 >= 0x40 && c2 <= 0x7e)
|
|
||||||
|| (c2 >= 0x80 && c2 <= 0xfe)))
|
|
||||||
//GBK/4: extend chinese words.
|
|
||||||
|| ((c1 >= 0xaa && c1 <= 0xfe)
|
|
||||||
&& ((c2 >= 0x40 && c2 <= 0xfe)
|
|
||||||
|| (c2 >= 0x80 && c2 <= 0xa0))));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*check if the given char is a ASCII letter
|
|
||||||
* include all the arabic number, letters and english puntuations.*/
|
|
||||||
FRISO_API int gbk_halfwidth_en_char(char c) {
|
|
||||||
int u = (uchar_t) c;
|
|
||||||
return (u >= 32 && u <= 126);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a full-width latain.
|
|
||||||
* include the full-width arabic numeber, letters.
|
|
||||||
* but not the full-width puntuations.
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_fullwidth_en_char(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
return ((c1 == 0xA3)
|
|
||||||
&& ((c2 >= 0xB0 && c2 <= 0xB9) //arabic numbers.
|
|
||||||
|| (c2 >= 0xC1 && c2 <= 0xDA) //uppercase letters.
|
|
||||||
|| (c2 >= 0xE1 && c2 <= 0xFA))); //lowercase letters.
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the given char is a upper case english letter.
|
|
||||||
// included the full-width and half-width letters.
|
|
||||||
FRISO_API int gbk_uppercase_letter(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
if(c1 <= 0x80) { //half-width
|
|
||||||
return (c1 >= 65 && c1 <= 90);
|
|
||||||
} else { //full-width
|
|
||||||
return (c1 == 0xa3 && (c2 >= 0xc1 && c2 <= 0xda));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the given char is a lower case char.
|
|
||||||
// included the full-width and half-width letters.
|
|
||||||
FRISO_API int gbk_lowercase_letter(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
if(c1 <= 0x80) { //half-width
|
|
||||||
return (c1 >= 97 && c1 <= 122);
|
|
||||||
} else { //full-width
|
|
||||||
return (c1 == 0xa3 && (c2 >= 0xe1 && c2 <= 0xfa));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the given char is a arabic numeric.
|
|
||||||
// included the full-width and half-width arabic numeric.
|
|
||||||
FRISO_API int gbk_numeric_letter(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
if(c1 <= 0x80) { //half-width
|
|
||||||
return (c1 >= 48 && c1 <= 57);
|
|
||||||
} else { //full-width
|
|
||||||
return ((c1 == 0xa3) && (c2 >= 0xb0 && c2 <= 0xb9));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given fstring is make up with numeric chars.
|
|
||||||
* both full-width,half-width numeric is ok.
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_numeric_string(char *str) {
|
|
||||||
char *s = str;
|
|
||||||
int c1 = 0;
|
|
||||||
int c2 = 0;
|
|
||||||
|
|
||||||
while(*s != '\0') {
|
|
||||||
c1 = (uchar_t)(*s++);
|
|
||||||
if(c1 <= 0x80) { //half-width
|
|
||||||
if(c1 < 48 || c2 > 57) return 0;
|
|
||||||
} else { //full-width
|
|
||||||
if(c1 != 0xa3) return 0;
|
|
||||||
c2 = (uchar_t)(*s++);
|
|
||||||
if(c2 < 0xb0 || c2 > 0xb9) return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API int gbk_decimal_string(char *str) {
|
|
||||||
int c1 = 0;
|
|
||||||
int c2 = 0;
|
|
||||||
int len = strlen(str), i, p = 0;
|
|
||||||
|
|
||||||
//point header check.
|
|
||||||
if(str[0] == '.' || str[len - 1] == '.') return 0;
|
|
||||||
|
|
||||||
for(i = 0; i < len;) {
|
|
||||||
c1 = (uchar_t) str[i++];
|
|
||||||
//count the number of the points.
|
|
||||||
if(c1 == 46) {
|
|
||||||
p++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(c1 <= 0x80) { //half-width
|
|
||||||
if(c1 < 48 || c1 > 57) return 0;
|
|
||||||
} else { //full-width
|
|
||||||
if(c1 != 0xa3) return 0;
|
|
||||||
c2 = (uchar_t) str[i++];
|
|
||||||
if(c2 < 0xb0 || c2 > 0xb9) return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (p == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the given char is a english(ASCII) letter.
|
|
||||||
// (full-width and half-width), not the punctuation/arabic of course.
|
|
||||||
FRISO_API int gbk_en_letter(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
if(c1 <= 0x80) {
|
|
||||||
return ((c1 >= 65 && c1 <= 90) //lowercase
|
|
||||||
|| (c1 >= 97 && c1 <= 122)); //uppercase
|
|
||||||
} else {
|
|
||||||
return ((c1 == 0xa3)
|
|
||||||
&& ((c2 >= 0xc1 && c2 <= 0xda) //lowercase
|
|
||||||
|| (c2 >= 0xe1 && c2 <= 0xfa))); //uppercase
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the given char is a whitespace or not.
|
|
||||||
// included full-width and half-width whitespace.
|
|
||||||
FRISO_API int gbk_whitespace(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
if(c1 <= 0x80) {
|
|
||||||
return (c1 == 32);
|
|
||||||
} else {
|
|
||||||
return (c1 == 0xa3 && c2 == 0xa0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* check if the given char is a letter number like 'ⅠⅡ'
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_letter_number(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
return ((c1 == 0xa2)
|
|
||||||
&& ((c2 >= 0xa1 && c2 <= 0xb0) //lowercase
|
|
||||||
|| (c2 >= 0xf0 && c2 <= 0xfe))); //uppercase
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a other number like '①⑩⑽㈩'
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_other_number(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
return ((c1 == 0xa2) && (c2 >= 0xc5 && c2 <= 0xee));
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the given char is a english punctuation.
|
|
||||||
FRISO_API int gbk_en_punctuation(char c) {
|
|
||||||
int u = (uchar_t) c;
|
|
||||||
return ((u > 32 && u < 48)
|
|
||||||
|| (u > 57 && u < 65)
|
|
||||||
|| (u > 90 && u < 97)
|
|
||||||
|| (u > 122 && u < 127));
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the given char is a chinese punctuation.
|
|
||||||
FRISO_API int gbk_cn_punctuation(char *str) {
|
|
||||||
int c1 = (uchar_t) str[0];
|
|
||||||
int c2 = (uchar_t) str[1];
|
|
||||||
//full-width en punctuation.
|
|
||||||
return ((c1 == 0xa3 && ((c2 >= 0xa1 && c2 <= 0xaf)
|
|
||||||
|| (c2 >= 0xba && c2 <= 0xc0)
|
|
||||||
|| (c2 >= 0xdb && c2 <= 0xe0)
|
|
||||||
|| (c2 >= 0xfb && c2 <= 0xfe)))
|
|
||||||
//chinese punctuation.
|
|
||||||
|| (c1 == 0xa1 && ((c2 >= 0xa1 && c2 <= 0xae)
|
|
||||||
|| (c2 >= 0xb0 && c2 <= 0xbf)))
|
|
||||||
//A6 area special punctuations:" "
|
|
||||||
|| (c1 == 0xa6 && (c2 >= 0xf9 && c2 <= 0xfe))
|
|
||||||
//A8 area special punctuations: " ˊˋ˙–―‥‵℅ "
|
|
||||||
|| (c1 == 0xa8 && (c2 >= 0x40 && c2 <= 0x47)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* {{{
|
|
||||||
'@', '$','%', '^', '&', '-', ':', '.', '/', '\'', '#', '+'
|
|
||||||
*/
|
|
||||||
//cause it it the same as utf-8, we use utf8's interface instead.
|
|
||||||
//@see the friso_ctype.h#gbk_keep_punctuation macro defined.
|
|
||||||
|
|
||||||
//static friso_hash_t __keep_punctuations_hash__ = NULL;
|
|
||||||
|
|
||||||
/* @Deprecated
|
|
||||||
* check the given char is an english keep punctuation.*/
|
|
||||||
//FRISO_API int gbk_keep_punctuation( char *str )
|
|
||||||
//{
|
|
||||||
// if ( __keep_punctuations_hash__ == NULL ) {
|
|
||||||
// __keep_punctuations_hash__ = new_hash_table();
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "@", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "$", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "%", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "^", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "&", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "-", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, ":", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, ".", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "/", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "'", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "#", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "+", NULL );
|
|
||||||
// }
|
|
||||||
// //check the hash.
|
|
||||||
// return hash_exist_mapping( __keep_punctuations_hash__, str );
|
|
||||||
//}
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
//check if the given english char is a full-width char or not.
|
|
||||||
//FRISO_API int gbk_fullwidth_char( char *str )
|
|
||||||
//{
|
|
||||||
// return 1;
|
|
||||||
//}
|
|
|
@ -1,467 +0,0 @@
|
||||||
/**
|
|
||||||
* Friso utf8 serial function implementation source file.
|
|
||||||
* @package src/friso_UTF8.c .
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include "friso_ctype.h"
|
|
||||||
|
|
||||||
/* read the next utf-8 word from the specified position.
|
|
||||||
*
|
|
||||||
* @return int the bytes of the current readed word.
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_next_word(
|
|
||||||
friso_task_t task,
|
|
||||||
uint_t *idx,
|
|
||||||
fstring __word) {
|
|
||||||
if(*idx >= task->length) return 0;
|
|
||||||
|
|
||||||
//register uint_t t;
|
|
||||||
task->bytes = get_utf8_bytes(task->text[ *idx ]);
|
|
||||||
|
|
||||||
//for ( t = 0; t < task->bytes; t++ ) {
|
|
||||||
// __word[t] = task->text[ (*idx)++ ];
|
|
||||||
//}
|
|
||||||
|
|
||||||
//change the loop to memcpy.
|
|
||||||
//it is more efficient.
|
|
||||||
//@date 2013-09-04
|
|
||||||
memcpy(__word, task->text + (*idx), task->bytes);
|
|
||||||
(*idx) += task->bytes;
|
|
||||||
__word[task->bytes] = '\0';
|
|
||||||
|
|
||||||
//the unicode counter was moved here from version 1.6.0
|
|
||||||
task->unicode = get_utf8_unicode(__word);
|
|
||||||
|
|
||||||
return task->bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* print a character in a binary style.
|
|
||||||
*
|
|
||||||
* @param int
|
|
||||||
*/
|
|
||||||
FRISO_API void print_char_binary(char value) {
|
|
||||||
register uint_t t;
|
|
||||||
|
|
||||||
for(t = 0; t < __CHAR_BYTES__; t++) {
|
|
||||||
if((value & 0x80) == 0x80) {
|
|
||||||
printf("1");
|
|
||||||
} else {
|
|
||||||
printf("0");
|
|
||||||
}
|
|
||||||
value <<= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* get the bytes of a utf-8 char.
|
|
||||||
* between 1 - 6.
|
|
||||||
*
|
|
||||||
* @param __char
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
FRISO_API int get_utf8_bytes(char value) {
|
|
||||||
register uint_t t = 0;
|
|
||||||
|
|
||||||
//one byte ascii char.
|
|
||||||
if((value & 0x80) == 0) return 1;
|
|
||||||
for(; (value & 0x80) != 0; value <<= 1) {
|
|
||||||
t++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* get the unicode serial of a utf-8 char.
|
|
||||||
*
|
|
||||||
* @param ch
|
|
||||||
* @return int.
|
|
||||||
*/
|
|
||||||
FRISO_API int get_utf8_unicode(const fstring ch) {
|
|
||||||
int code = 0, bytes = get_utf8_bytes(*ch);
|
|
||||||
register uchar_t *bit = (uchar_t *) &code;
|
|
||||||
register char b1, b2, b3;
|
|
||||||
|
|
||||||
switch(bytes) {
|
|
||||||
case 1:
|
|
||||||
*bit = *ch;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
b1 = *ch;
|
|
||||||
b2 = *(ch + 1);
|
|
||||||
|
|
||||||
*bit = (b1 << 6) + (b2 & 0x3F);
|
|
||||||
*(bit + 1) = (b1 >> 2) & 0x07;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
b1 = *ch;
|
|
||||||
b2 = *(ch + 1);
|
|
||||||
b3 = *(ch + 2);
|
|
||||||
|
|
||||||
*bit = (b2 << 6) + (b3 & 0x3F);
|
|
||||||
*(bit + 1) = (b1 << 4) + ((b2 >> 2) & 0x0F);
|
|
||||||
break;
|
|
||||||
//ignore the ones that are larger than 3 bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
//turn the unicode serial to a utf-8 string.
|
|
||||||
FRISO_API int unicode_to_utf8(uint_t u, fstring __word) {
|
|
||||||
if(u <= 0x0000007F) {
|
|
||||||
//U-00000000 - U-0000007F
|
|
||||||
//0xxxxxxx
|
|
||||||
*__word = (u & 0x7F);
|
|
||||||
return 1;
|
|
||||||
} else if(u >= 0x00000080 && u <= 0x000007FF) {
|
|
||||||
//U-00000080 - U-000007FF
|
|
||||||
//110xxxxx 10xxxxxx
|
|
||||||
*(__word + 1) = (u & 0x3F) | 0x80;
|
|
||||||
*__word = ((u >> 6) & 0x1F) | 0xC0;
|
|
||||||
return 2;
|
|
||||||
} else if(u >= 0x00000800 && u <= 0x0000FFFF) {
|
|
||||||
//U-00000800 - U-0000FFFF
|
|
||||||
//1110xxxx 10xxxxxx 10xxxxxx
|
|
||||||
*(__word + 2) = (u & 0x3F) | 0x80;
|
|
||||||
*(__word + 1) = ((u >> 6) & 0x3F) | 0x80;
|
|
||||||
*__word = ((u >> 12) & 0x0F) | 0xE0;
|
|
||||||
return 3;
|
|
||||||
} else if(u >= 0x00010000 && u <= 0x001FFFFF) {
|
|
||||||
//U-00010000 - U-001FFFFF
|
|
||||||
//11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
||||||
*(__word + 3) = (u & 0x3F) | 0x80;
|
|
||||||
*(__word + 2) = ((u >> 6) & 0x3F) | 0x80;
|
|
||||||
*(__word + 1) = ((u >> 12) & 0x3F) | 0x80;
|
|
||||||
*__word = ((u >> 18) & 0x07) | 0xF0;
|
|
||||||
return 4;
|
|
||||||
} else if(u >= 0x00200000 && u <= 0x03FFFFFF) {
|
|
||||||
//U-00200000 - U-03FFFFFF
|
|
||||||
//111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
||||||
*(__word + 4) = (u & 0x3F) | 0x80;
|
|
||||||
*(__word + 3) = ((u >> 6) & 0x3F) | 0x80;
|
|
||||||
*(__word + 2) = ((u >> 12) & 0x3F) | 0x80;
|
|
||||||
*(__word + 1) = ((u >> 18) & 0x3F) | 0x80;
|
|
||||||
*__word = ((u >> 24) & 0x03) | 0xF8;
|
|
||||||
return 5;
|
|
||||||
} else if(u >= 0x04000000 && u <= 0x7FFFFFFF) {
|
|
||||||
//U-04000000 - U-7FFFFFFF
|
|
||||||
//1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
||||||
*(__word + 5) = (u & 0x3F) | 0x80;
|
|
||||||
*(__word + 4) = ((u >> 6) & 0x3F) | 0x80;
|
|
||||||
*(__word + 3) = ((u >> 12) & 0x3F) | 0x80;
|
|
||||||
*(__word + 2) = ((u >> 18) & 0x3F) | 0x80;
|
|
||||||
*(__word + 1) = ((u >> 24) & 0x3F) | 0x80;
|
|
||||||
*__word = ((u >> 30) & 0x01) | 0xFC;
|
|
||||||
return 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a CJK char or not.
|
|
||||||
* 2E80-2EFF CJK 部首补充
|
|
||||||
* 2F00-2FDF 康熙字典部首
|
|
||||||
* 3000-303F CJK 符号和标点 --ignore
|
|
||||||
* 31C0-31EF CJK 笔画
|
|
||||||
* 3200-32FF 封闭式 CJK 文字和月份 --ignore.
|
|
||||||
* 3300-33FF CJK 兼容
|
|
||||||
* 3400-4DBF CJK 统一表意符号扩展 A
|
|
||||||
* 4DC0-4DFF 易经六十四卦符号
|
|
||||||
* 4E00-9FBF CJK 统一表意符号
|
|
||||||
* F900-FAFF CJK 兼容象形文字
|
|
||||||
* FE30-FE4F CJK 兼容形式
|
|
||||||
* FF00-FFEF 全角ASCII、全角标点 --ignore (as basic latin)
|
|
||||||
*
|
|
||||||
* Japanese:
|
|
||||||
* 3040-309F 日本平假名
|
|
||||||
* 30A0-30FF 日本片假名
|
|
||||||
* 31F0-31FF 日本片假名拼音扩展
|
|
||||||
*
|
|
||||||
* Korean:
|
|
||||||
* AC00-D7AF 韩文拼音
|
|
||||||
* 1100-11FF 韩文字母
|
|
||||||
* 3130-318F 韩文兼容字母
|
|
||||||
*
|
|
||||||
* @param ch :pointer to the char
|
|
||||||
* @return int : 1 for yes and 0 for not.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//Comment one of the following macro define
|
|
||||||
//to clear the check of the specified language.
|
|
||||||
#define FRISO_CJK_CHK_C
|
|
||||||
//#define FRISO_CJK_CHK_J
|
|
||||||
//#define FRISO_CJK_CHK_K
|
|
||||||
FRISO_API int utf8_cjk_string(uint_t u) {
|
|
||||||
int c = 0, j = 0, k = 0;
|
|
||||||
//Chinese.
|
|
||||||
#ifdef FRISO_CJK_CHK_C
|
|
||||||
c = ((u >= 0x4E00 && u <= 0x9FBF)
|
|
||||||
|| (u >= 0x2E80 && u <= 0x2EFF) || (u >= 0x2F00 && u <= 0x2FDF)
|
|
||||||
|| (u >= 0x31C0 && u <= 0x31EF) //|| ( u >= 0x3200 && u <= 0x32FF )
|
|
||||||
|| (u >= 0x3300 && u <= 0x33FF) //|| ( u >= 0x3400 && u <= 0x4DBF )
|
|
||||||
|| (u >= 0x4DC0 && u <= 0x4DFF) || (u >= 0xF900 && u <= 0xFAFF)
|
|
||||||
|| (u >= 0xFE30 && u <= 0xFE4F));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Japanese.
|
|
||||||
#ifdef FRISO_CJK_CHK_J
|
|
||||||
j = ((u >= 0x3040 && u <= 0x309F)
|
|
||||||
|| (u >= 0x30A0 && u <= 0x30FF) || (u >= 0x31F0 && u <= 0x31FF));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Korean
|
|
||||||
#ifdef FRISO_CJK_CHK_K
|
|
||||||
k = ((u >= 0xAC00 && u <= 0xD7AF)
|
|
||||||
|| (u >= 0x1100 && u <= 0x11FF) || (u >= 0x3130 && u <= 0x318F));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return (c || j || k);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a Basic Latin letter or not.
|
|
||||||
* include all the letters and english punctuations.
|
|
||||||
*
|
|
||||||
* @param c
|
|
||||||
* @return int 1 for yes and 0 for not.
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_halfwidth_en_char(uint_t u) {
|
|
||||||
return (u >= 32 && u <= 126);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a full-width latain or not.
|
|
||||||
* include the full-width arabic numeber, letters.
|
|
||||||
* but not the full-width punctuations.
|
|
||||||
*
|
|
||||||
* @param c
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_fullwidth_en_char(uint_t u) {
|
|
||||||
return ((u >= 65296 && u <= 65305) //arabic number
|
|
||||||
|| (u >= 65313 && u <= 65338) //upper case letters
|
|
||||||
|| (u >= 65345 && u <= 65370)); //lower case letters
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the given char is a upper case letters or not.
|
|
||||||
// included the full-width and half-width letters.
|
|
||||||
FRISO_API int utf8_uppercase_letter(uint_t u) {
|
|
||||||
if(u > 65280) u -= 65248;
|
|
||||||
return (u >= 65 && u <= 90);
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the given char is a upper case letters or not.
|
|
||||||
// included the full-width and half-width letters.
|
|
||||||
FRISO_API int utf8_lowercase_letter(uint_t u) {
|
|
||||||
if(u > 65280) u -= 65248;
|
|
||||||
return (u >= 97 && u <= 122);
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the given char is a numeric
|
|
||||||
// included the full-width and half-width arabic numeric.
|
|
||||||
FRISO_API int utf8_numeric_letter(uint_t u) {
|
|
||||||
if(u > 65280) u -= 65248; //make full-width half-width.
|
|
||||||
return ((u >= 48 && u <= 57));
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the given char is a english letter.(included the full-width)
|
|
||||||
// not the punctuation of course.
|
|
||||||
FRISO_API int utf8_en_letter(uint_t u) {
|
|
||||||
if(u > 65280) u -= 65248;
|
|
||||||
return ((u >= 65 && u <= 90)
|
|
||||||
|| (u >= 97 && u <= 122));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given fstring is make up with numeric.
|
|
||||||
* both full-width,half-width numeric is ok.
|
|
||||||
*
|
|
||||||
* @param str
|
|
||||||
* @return int
|
|
||||||
* 65296, 0
|
|
||||||
* 65297, 1
|
|
||||||
* 65298, 2
|
|
||||||
* 65299, 3
|
|
||||||
* 65300, 4
|
|
||||||
* 65301, 5
|
|
||||||
* 65302, 6
|
|
||||||
* 65303, 7
|
|
||||||
* 65304, 8
|
|
||||||
* 65305, 9
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_numeric_string(const fstring str) {
|
|
||||||
fstring s = str;
|
|
||||||
int bytes, u;
|
|
||||||
|
|
||||||
while(*s != '\0') {
|
|
||||||
//if ( ! utf8_numeric_letter( get_utf8_unicode( s++ ) ) ) {
|
|
||||||
// return 0;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//new implemention.
|
|
||||||
//@date 2013-10-14
|
|
||||||
bytes = 1;
|
|
||||||
if(*s < 0) { //full-width chars.
|
|
||||||
u = get_utf8_unicode(s);
|
|
||||||
bytes = get_utf8_bytes(*s);
|
|
||||||
if(u < 65296 || u > 65305) return 0;
|
|
||||||
} else if(*s < 48 || *s > 57) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
s += bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API int utf8_decimal_string(const fstring str) {
|
|
||||||
int len = strlen(str), i, p = 0;
|
|
||||||
int bytes = 0, u;
|
|
||||||
|
|
||||||
if(str[0] == '.' || str[len - 1] == '.') return 0;
|
|
||||||
|
|
||||||
for(i = 1; i < len; bytes = 1) {
|
|
||||||
//count the number of char '.'
|
|
||||||
if(str[i] == '.') {
|
|
||||||
i++;
|
|
||||||
p++;
|
|
||||||
continue;
|
|
||||||
} else if(str[i] < 0) {
|
|
||||||
//full-width numeric.
|
|
||||||
u = get_utf8_unicode(str + i);
|
|
||||||
bytes = get_utf8_bytes(str[i]);
|
|
||||||
if(u < 65296 || u > 65305) return 0;
|
|
||||||
} else if(str[i] < 48 || str[i] > 57) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
i += bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (p == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a whitespace or not.
|
|
||||||
*
|
|
||||||
* @param ch
|
|
||||||
* @return int 1 for yes and 0 for not.
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_whitespace(uint_t u) {
|
|
||||||
if(u == 32 || u == 12288) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a english punctuation.
|
|
||||||
*
|
|
||||||
* @param ch
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_en_punctuation(uint_t u) {
|
|
||||||
//if ( u > 65280 ) u = u - 65248; //make full-width half-width
|
|
||||||
return ((u > 32 && u < 48)
|
|
||||||
|| (u > 57 && u < 65)
|
|
||||||
|| (u > 90 && u < 97) //added @2013-08-31
|
|
||||||
|| (u > 122 && u < 127));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a chinese punctuation.
|
|
||||||
* @date 2013-08-31 added.
|
|
||||||
*
|
|
||||||
* @param ch
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_cn_punctuation(uint_t u) {
|
|
||||||
return ((u > 65280 && u < 65296)
|
|
||||||
|| (u > 65305 && u < 65312)
|
|
||||||
|| (u > 65338 && u < 65345)
|
|
||||||
|| (u > 65370 && u < 65382)
|
|
||||||
//cjk symbol and punctuation.(added 2013-09-06)
|
|
||||||
//from http://www.unicode.org/charts/PDF/U3000.pdf
|
|
||||||
|| (u >= 12289 && u <= 12319));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a letter number in unicode.
|
|
||||||
* like 'ⅠⅡ'.
|
|
||||||
* @param ch
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_letter_number(uint_t u) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a other number in unicode.
|
|
||||||
* like '①⑩⑽㈩'.
|
|
||||||
* @param ch
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_other_number(uint_t u) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//A macro define has replace this.
|
|
||||||
//FRISO_API int is_en_punctuation( char c )
|
|
||||||
//{
|
|
||||||
// return utf8_en_punctuation( (uint_t) c );
|
|
||||||
//}
|
|
||||||
|
|
||||||
/* {{{
|
|
||||||
'@', '$','%', '^', '&', '-', ':', '.', '/', '\'', '#', '+'
|
|
||||||
*/
|
|
||||||
//static friso_hash_t __keep_punctuations_hash__ = NULL;
|
|
||||||
|
|
||||||
/* @Deprecated
|
|
||||||
* check the given char is an english keep punctuation.*/
|
|
||||||
//FRISO_API int utf8_keep_punctuation( fstring str )
|
|
||||||
//{
|
|
||||||
// if ( __keep_punctuations_hash__ == NULL )
|
|
||||||
// {
|
|
||||||
// __keep_punctuations_hash__ = new_hash_table();
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "@", NULL );
|
|
||||||
// //hash_put_mapping( __keep_punctuations_hash__, "$", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "%", NULL );
|
|
||||||
// //hash_put_mapping( __keep_punctuations_hash__, "^", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "&", NULL );
|
|
||||||
// //hash_put_mapping( __keep_punctuations_hash__, "-", NULL );
|
|
||||||
// //hash_put_mapping( __keep_punctuations_hash__, ":", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, ".", NULL );
|
|
||||||
// //hash_put_mapping( __keep_punctuations_hash__, "/", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "'", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "#", NULL );
|
|
||||||
// hash_put_mapping( __keep_punctuations_hash__, "+", NULL );
|
|
||||||
// }
|
|
||||||
// //check the hash.
|
|
||||||
// return hash_exist_mapping( __keep_punctuations_hash__, str );
|
|
||||||
//}
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given english char is a full-width char or not.
|
|
||||||
*
|
|
||||||
* @param ch
|
|
||||||
* @return 1 for yes and 0 for not.
|
|
||||||
*/
|
|
||||||
//FRISO_API int utf8_fullwidth_char( uint_t u )
|
|
||||||
//{
|
|
||||||
// if ( u == 12288 )
|
|
||||||
// return 1; //full-width space
|
|
||||||
// //(32 - 126) ascii code
|
|
||||||
// return (u > 65280 && u <= 65406);
|
|
||||||
//}
|
|
|
@ -1,209 +0,0 @@
|
||||||
/*
|
|
||||||
* friso dynamaic Array interface implementation defined in header file "friso_API.h".
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* ********************************************
|
|
||||||
* friso array list static functions block *
|
|
||||||
**********************************************/
|
|
||||||
__STATIC_API__ void **create_array_entries(uint_t __blocks) {
|
|
||||||
register uint_t t;
|
|
||||||
void **block = (void **) FRISO_CALLOC(sizeof(void *), __blocks);
|
|
||||||
if(block == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//initialize
|
|
||||||
for(t = 0; t < __blocks; t++) {
|
|
||||||
block[t] = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return block;
|
|
||||||
}
|
|
||||||
|
|
||||||
//resize the array. (the opacity should not be smaller than array->length)
|
|
||||||
__STATIC_API__ friso_array_t resize_array_list(
|
|
||||||
friso_array_t array,
|
|
||||||
uint_t opacity) {
|
|
||||||
register uint_t t;
|
|
||||||
void **block = create_array_entries(opacity);
|
|
||||||
|
|
||||||
for(t = 0; t < array->length ; t++) {
|
|
||||||
block[t] = array->items[t];
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_FREE(array->items);
|
|
||||||
array->items = block;
|
|
||||||
array->allocs = opacity;
|
|
||||||
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ********************************************
|
|
||||||
* friso array list FRISO_API functions block *
|
|
||||||
**********************************************/
|
|
||||||
//create a new array list. (A macro define has replace this.)
|
|
||||||
//FRISO_API friso_array_t new_array_list( void ) {
|
|
||||||
// return new_array_list_with_opacity( __DEFAULT_ARRAY_LIST_OPACITY__ );
|
|
||||||
//}
|
|
||||||
|
|
||||||
//create a new array list with a given opacity.
|
|
||||||
FRISO_API friso_array_t new_array_list_with_opacity(uint_t opacity) {
|
|
||||||
friso_array_t array = (friso_array_t)
|
|
||||||
FRISO_MALLOC(sizeof(friso_array_entry));
|
|
||||||
if(array == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//initialize
|
|
||||||
array->items = create_array_entries(opacity);
|
|
||||||
array->allocs = opacity;
|
|
||||||
array->length = 0;
|
|
||||||
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* free the given friso array.
|
|
||||||
* and its items, but never where its items item pointed to .
|
|
||||||
*/
|
|
||||||
FRISO_API void free_array_list(friso_array_t array) {
|
|
||||||
//free the allocation that all the items pointed to
|
|
||||||
//register int t;
|
|
||||||
//if ( flag == 1 ) {
|
|
||||||
// for ( t = 0; t < array->length; t++ ) {
|
|
||||||
// if ( array->items[t] == NULL ) continue;
|
|
||||||
// FRISO_FREE( array->items[t] );
|
|
||||||
// array->items[t] = NULL;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
FRISO_FREE(array->items);
|
|
||||||
FRISO_FREE(array);
|
|
||||||
}
|
|
||||||
|
|
||||||
//add a new item to the array.
|
|
||||||
FRISO_API void array_list_add(friso_array_t array, void *value) {
|
|
||||||
//check the condition to resize.
|
|
||||||
if(array->length == array->allocs) {
|
|
||||||
resize_array_list(array, array->length * 2 + 1);
|
|
||||||
}
|
|
||||||
array->items[array->length++] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//insert a new item at a specified position.
|
|
||||||
FRISO_API void array_list_insert(
|
|
||||||
friso_array_t array,
|
|
||||||
uint_t idx,
|
|
||||||
void *value) {
|
|
||||||
register uint_t t;
|
|
||||||
|
|
||||||
if(idx <= array->length) {
|
|
||||||
//check the condition to resize the array.
|
|
||||||
if(array->length == array->allocs) {
|
|
||||||
resize_array_list(array, array->length * 2 + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//move the elements after idx.
|
|
||||||
//for ( t = idx; t < array->length; t++ ) {
|
|
||||||
// array->items[t+1] = array->items[t];
|
|
||||||
//}
|
|
||||||
for(t = array->length - 1; t >= idx; t--) {
|
|
||||||
array->items[t + 1] = array->items[t];
|
|
||||||
}
|
|
||||||
|
|
||||||
array->items[idx] = value;
|
|
||||||
array->length++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the item at a specified position.
|
|
||||||
FRISO_API void *array_list_get(friso_array_t array, uint_t idx) {
|
|
||||||
if(idx < array->length) {
|
|
||||||
return array->items[idx];
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//set the value of the item at a specified position.
|
|
||||||
//this will return the old value.
|
|
||||||
FRISO_API void * array_list_set(
|
|
||||||
friso_array_t array,
|
|
||||||
uint_t idx,
|
|
||||||
void * value) {
|
|
||||||
void * oval = NULL;
|
|
||||||
if(idx < array->length) {
|
|
||||||
oval = array->items[idx];
|
|
||||||
array->items[idx] = value;
|
|
||||||
}
|
|
||||||
return oval;
|
|
||||||
}
|
|
||||||
|
|
||||||
//remove the item at a specified position.
|
|
||||||
//this will return the value of the removed item.
|
|
||||||
FRISO_API void * array_list_remove(
|
|
||||||
friso_array_t array, uint_t idx) {
|
|
||||||
register uint_t t;
|
|
||||||
void *oval = NULL;
|
|
||||||
|
|
||||||
if(idx < array->length) {
|
|
||||||
oval = array->items[idx];
|
|
||||||
//move the elements after idx.
|
|
||||||
for(t = idx; t < array->length - 1; t++) {
|
|
||||||
array->items[t] = array->items[ t + 1 ];
|
|
||||||
}
|
|
||||||
array->items[array->length - 1] = NULL;
|
|
||||||
array->length--;
|
|
||||||
}
|
|
||||||
|
|
||||||
return oval;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*trim the array list*/
|
|
||||||
FRISO_API friso_array_t array_list_trim(friso_array_t array) {
|
|
||||||
if(array->length < array->allocs) {
|
|
||||||
return resize_array_list(array, array->length);
|
|
||||||
}
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* clear the array list.
|
|
||||||
* this function will free all the allocations that the pointer pointed.
|
|
||||||
* but will not free the point array allocations,
|
|
||||||
* and will reset the length of it.
|
|
||||||
*/
|
|
||||||
FRISO_API friso_array_t array_list_clear(friso_array_t array) {
|
|
||||||
register uint_t t;
|
|
||||||
//free all the allocations that the array->length's pointer pointed.
|
|
||||||
for(t = 0; t < array->length; t++) {
|
|
||||||
/*if ( array->items[t] == NULL ) continue;
|
|
||||||
FRISO_FREE( array->items[t] ); */
|
|
||||||
array->items[t] = NULL;
|
|
||||||
}
|
|
||||||
//attribute reset.
|
|
||||||
array->length = 0;
|
|
||||||
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the size of the array list. (A macro define has replace this.)
|
|
||||||
//FRISO_API uint_t array_list_size( friso_array_t array ) {
|
|
||||||
// return array->length;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//return the allocations of the array list.(A macro define has replace this)
|
|
||||||
//FRISO_API uint_t array_list_allocs( friso_array_t array ) {
|
|
||||||
// return array->allocs;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//check if the array is empty.(A macro define has replace this.)
|
|
||||||
//FRISO_API int array_list_empty( friso_array_t array )
|
|
||||||
//{
|
|
||||||
// return ( array->length == 0 );
|
|
||||||
//}
|
|
|
@ -1,244 +0,0 @@
|
||||||
/**
|
|
||||||
* friso string type check functions,
|
|
||||||
* like english/CJK, full-wdith/half-width, punctuation or not.
|
|
||||||
* @see friso_UTF8.c and friso_GBK.c for detail.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "friso_ctype.h"
|
|
||||||
#include "friso_API.h"
|
|
||||||
|
|
||||||
/* check if the specified string is a cn string.
|
|
||||||
*
|
|
||||||
* @return int (true for cn string or false)
|
|
||||||
* */
|
|
||||||
FRISO_API int friso_cn_string(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_cjk_string(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_cn_string(task->buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified word is a whitespace.
|
|
||||||
FRISO_API int friso_whitespace(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_whitespace(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_whitespace(task->buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specifiled word is a numeric letter.
|
|
||||||
FRISO_API int friso_numeric_letter(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_numeric_letter((uint_t) task->text[task->idx]);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_numeric_letter(task->text + task->idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified word is aa english letter.
|
|
||||||
FRISO_API int friso_en_letter(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_en_letter((uint_t) task->text[task->idx]);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_en_letter(task->text + task->idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified word is a half-width letter.
|
|
||||||
// punctuations are inclued.
|
|
||||||
FRISO_API int friso_halfwidth_en_char(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_halfwidth_en_char(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_halfwidth_en_char(task->buffer[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified word is a full-width letter.
|
|
||||||
// full-width punctuations are not included.
|
|
||||||
FRISO_API int friso_fullwidth_en_char(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_fullwidth_en_char(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_fullwidth_en_char(task->buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified word is an english punctuations.
|
|
||||||
FRISO_API int friso_en_punctuation(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_en_punctuation(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_en_punctuation(task->buffer[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified word ia sn chinese punctuation.
|
|
||||||
FRISO_API int friso_cn_punctuation(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_cn_punctuation(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_cn_punctuation(task->buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API int friso_letter_number(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API int friso_other_number(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the word is a keep punctuation.
|
|
||||||
//@Deprecated
|
|
||||||
//FRISO_API int friso_keep_punctuation(
|
|
||||||
// friso_charset_t charset,
|
|
||||||
// friso_task_t task )
|
|
||||||
//{
|
|
||||||
// if ( charset == FRISO_UTF8 )
|
|
||||||
// return utf8_keep_punctuation( task->buffer );
|
|
||||||
// else if ( charset == FRISO_GBK )
|
|
||||||
// return gbk_keep_punctuation( task->buffer );
|
|
||||||
// return 0;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//check if the specified char is en english punctuation.
|
|
||||||
// this function is the same as friso_en_punctuation.
|
|
||||||
FRISO_API int is_en_punctuation(
|
|
||||||
friso_charset_t charset, char c) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_en_punctuation((uint_t) c);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_en_punctuation(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the specified string is make up with numeric.
|
|
||||||
FRISO_API int friso_numeric_string(
|
|
||||||
friso_charset_t charset,
|
|
||||||
char *buffer) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_numeric_string(buffer);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_numeric_string(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the specified string is a decimal string.
|
|
||||||
FRISO_API int friso_decimal_string(
|
|
||||||
friso_charset_t charset, char *buffer) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_decimal_string(buffer);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_decimal_string(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if the specified char is english uppercase letter.
|
|
||||||
// included full-width and half-width letters.
|
|
||||||
FRISO_API int friso_uppercase_letter(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
return utf8_uppercase_letter(task->unicode);
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
return gbk_uppercase_letter(task->buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get the type of the specified char.
|
|
||||||
* the type will be the constants defined above.
|
|
||||||
* (include the fullwidth english char.)
|
|
||||||
*/
|
|
||||||
FRISO_API friso_enchar_t friso_enchar_type(
|
|
||||||
friso_charset_t charset,
|
|
||||||
friso_task_t task) {
|
|
||||||
//Unicode or ASCII.(Both UTF-8 and GBK are valid)
|
|
||||||
uint_t u = 0;
|
|
||||||
|
|
||||||
if(charset == FRISO_UTF8) {
|
|
||||||
u = task->unicode;
|
|
||||||
//if ( u >= 65280 ) u = 65280 - 65248;
|
|
||||||
} else if(charset == FRISO_GBK) {
|
|
||||||
u = (uchar_t)task->buffer[0];
|
|
||||||
//if ( u == 0xa3 ) ; //full-width.
|
|
||||||
}
|
|
||||||
|
|
||||||
//range check.
|
|
||||||
if(u > 126 || u < 32) return FRISO_EN_UNKNOW;
|
|
||||||
if(u == 32) return FRISO_EN_WHITESPACE;
|
|
||||||
if(u >= 48 && u <= 57) return FRISO_EN_NUMERIC;
|
|
||||||
if(u >= 65 && u <= 90) return FRISO_EN_LETTER;
|
|
||||||
if(u >= 97 && u <= 122) return FRISO_EN_LETTER;
|
|
||||||
|
|
||||||
return FRISO_EN_PUNCTUATION;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get the type of the specified en char.
|
|
||||||
* the type will be the constants defined above.
|
|
||||||
* (the char should be half-width english char only)
|
|
||||||
*/
|
|
||||||
FRISO_API friso_enchar_t get_enchar_type(char ch) {
|
|
||||||
uint_t u = (uchar_t) ch;
|
|
||||||
|
|
||||||
//range check.
|
|
||||||
if(u > 126 || u < 32) return FRISO_EN_UNKNOW;
|
|
||||||
if(u == 32) return FRISO_EN_WHITESPACE;
|
|
||||||
if(u >= 48 && u <= 57) return FRISO_EN_NUMERIC;
|
|
||||||
if(u >= 65 && u <= 90) return FRISO_EN_LETTER;
|
|
||||||
if(u >= 97 && u <= 122) return FRISO_EN_LETTER;
|
|
||||||
|
|
||||||
return FRISO_EN_PUNCTUATION;
|
|
||||||
}
|
|
|
@ -1,261 +0,0 @@
|
||||||
/**
|
|
||||||
* Friso charset about function interface header file.
|
|
||||||
* @package src/friso_charset.h .
|
|
||||||
* Available charset for now:
|
|
||||||
* 1. UTF8 - function start with utf8
|
|
||||||
* 2. GBK - function start with gbk
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _friso_charset_h
|
|
||||||
#define _friso_charset_h
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "friso.h"
|
|
||||||
#include "friso_API.h"
|
|
||||||
|
|
||||||
/** {{{ wrap interface */
|
|
||||||
/* check if the specified string is a cn string.
|
|
||||||
*
|
|
||||||
* @return int (true for cn string or false)
|
|
||||||
* */
|
|
||||||
FRISO_API int friso_cn_string(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specified word is a whitespace.
|
|
||||||
FRISO_API int friso_whitespace(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specifiled word is a numeric letter.
|
|
||||||
FRISO_API int friso_numeric_letter(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specified word is a english letter.
|
|
||||||
FRISO_API int friso_en_letter(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specified word is a half-width letter.
|
|
||||||
// punctuations are inclued.
|
|
||||||
FRISO_API int friso_halfwidth_en_char(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specified word is a full-width letter.
|
|
||||||
// full-width punctuations are not included.
|
|
||||||
FRISO_API int friso_fullwidth_en_char(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specified word is an english punctuations.
|
|
||||||
FRISO_API int friso_en_punctuation(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the specified word ia sn chinese punctuation.
|
|
||||||
FRISO_API int friso_cn_punctuation(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
FRISO_API int friso_letter_number(friso_charset_t, friso_task_t);
|
|
||||||
FRISO_API int friso_other_number(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
//check if the word is a keep punctuation.
|
|
||||||
//@Deprecated
|
|
||||||
//FRISO_API int friso_keep_punctuation( friso_charset_t, friso_task_t );
|
|
||||||
|
|
||||||
//check the specified string is numeric string.
|
|
||||||
FRISO_API int friso_numeric_string(friso_charset_t, char *);
|
|
||||||
|
|
||||||
//check the specified string is a decimal string.
|
|
||||||
FRISO_API int friso_decimal_string(friso_charset_t, char *);
|
|
||||||
|
|
||||||
//check if the specified char is english uppercase letter.
|
|
||||||
// included full-width and half-width letters.
|
|
||||||
FRISO_API int friso_uppercase_letter(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
|
|
||||||
//en char type.
|
|
||||||
//#define FRISO_EN_LETTER 0 //a-z && A-Z
|
|
||||||
//#define FRISO_EN_NUMERIC 1 //0-9
|
|
||||||
//#define FRISO_EN_PUNCTUATION 2 //english punctuations
|
|
||||||
//#define FRISO_EN_WHITESPACE 3 //whitespace
|
|
||||||
//#define FRISO_EN_UNKNOW -1 //beyond 32-122
|
|
||||||
typedef enum {
|
|
||||||
FRISO_EN_LETTER = 0, //A-Z, a-z
|
|
||||||
FRISO_EN_NUMERIC = 1, //0-9
|
|
||||||
FRISO_EN_PUNCTUATION = 2, //english punctuations
|
|
||||||
FRISO_EN_WHITESPACE = 3, //whitespace
|
|
||||||
FRISO_EN_UNKNOW = -1 //unkow(beyond 32-126)
|
|
||||||
} friso_enchar_t;
|
|
||||||
|
|
||||||
/* get the type of the specified char.
|
|
||||||
* the type will be the constants defined above.
|
|
||||||
* (include the fullwidth english char.)
|
|
||||||
*/
|
|
||||||
FRISO_API friso_enchar_t friso_enchar_type(friso_charset_t, friso_task_t);
|
|
||||||
|
|
||||||
/* get the type of the specified en char.
|
|
||||||
* the type will be the constants defined above.
|
|
||||||
* (the char should be half-width english char only)
|
|
||||||
*/
|
|
||||||
FRISO_API friso_enchar_t get_enchar_type(char);
|
|
||||||
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** {{{ UTF8 interface*/
|
|
||||||
|
|
||||||
/* read the next utf-8 word from the specified position.
|
|
||||||
*
|
|
||||||
* @return int the bytes of the current readed word.
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_next_word(friso_task_t, uint_t *, fstring);
|
|
||||||
|
|
||||||
//get the bytes of a utf-8 char.
|
|
||||||
FRISO_API int get_utf8_bytes(char);
|
|
||||||
|
|
||||||
//return the unicode serial number of a given string.
|
|
||||||
FRISO_API int get_utf8_unicode(const fstring);
|
|
||||||
|
|
||||||
//convert the unicode serial to a utf-8 string.
|
|
||||||
FRISO_API int unicode_to_utf8(uint_t, fstring);
|
|
||||||
|
|
||||||
//check if the given char is a CJK.
|
|
||||||
FRISO_API int utf8_cjk_string(uint_t) ;
|
|
||||||
|
|
||||||
/*check the given char is a Basic Latin letter or not.
|
|
||||||
* include all the letters and english puntuations.*/
|
|
||||||
FRISO_API int utf8_halfwidth_en_char(uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check the given char is a full-width latain or not.
|
|
||||||
* include the full-width arabic numeber, letters.
|
|
||||||
* but not the full-width puntuations.
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_fullwidth_en_char(uint_t);
|
|
||||||
|
|
||||||
//check the given char is a upper case letter or not.
|
|
||||||
// included all the full-width and half-width letters.
|
|
||||||
FRISO_API int utf8_uppercase_letter(uint_t);
|
|
||||||
|
|
||||||
//check the given char is a lower case letter or not.
|
|
||||||
// included all the full-width and half-width letters.
|
|
||||||
FRISO_API int utf8_lowercase_letter(uint_t);
|
|
||||||
|
|
||||||
//check the given char is a numeric.
|
|
||||||
// included the full-width and half-width arabic numeric.
|
|
||||||
FRISO_API int utf8_numeric_letter(uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given fstring is make up with numeric chars.
|
|
||||||
* both full-width,half-width numeric is ok.
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_numeric_string(char *);
|
|
||||||
|
|
||||||
FRISO_API int utf8_decimal_string(char *);
|
|
||||||
|
|
||||||
//check the given char is a english char.
|
|
||||||
//(full-width and half-width)
|
|
||||||
//not the punctuation of course.
|
|
||||||
FRISO_API int utf8_en_letter(uint_t);
|
|
||||||
|
|
||||||
//check the given char is a whitespace or not.
|
|
||||||
FRISO_API int utf8_whitespace(uint_t);
|
|
||||||
|
|
||||||
/* check if the given char is a letter number like 'ⅠⅡ'
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_letter_number(uint_t);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a other number like '①⑩⑽㈩'
|
|
||||||
*/
|
|
||||||
FRISO_API int utf8_other_number(uint_t);
|
|
||||||
|
|
||||||
//check if the given char is a english punctuation.
|
|
||||||
FRISO_API int utf8_en_punctuation(uint_t) ;
|
|
||||||
|
|
||||||
//check if the given char is a chinese punctuation.
|
|
||||||
FRISO_API int utf8_cn_punctuation(uint_t u);
|
|
||||||
|
|
||||||
FRISO_API int is_en_punctuation(friso_charset_t, char);
|
|
||||||
//#define is_en_punctuation( c ) utf8_en_punctuation((uint_t) c)
|
|
||||||
|
|
||||||
//@Deprecated
|
|
||||||
//FRISO_API int utf8_keep_punctuation( fstring );
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** {{{ GBK interface */
|
|
||||||
|
|
||||||
/* read the next GBK word from the specified position.
|
|
||||||
*
|
|
||||||
* @return int the bytes of the current readed word.
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_next_word(friso_task_t, uint_t *, fstring);
|
|
||||||
|
|
||||||
//get the bytes of a utf-8 char.
|
|
||||||
FRISO_API int get_gbk_bytes(char);
|
|
||||||
|
|
||||||
//check if the given char is a gbk char (ANSII string).
|
|
||||||
FRISO_API int gbk_cn_string(char *) ;
|
|
||||||
|
|
||||||
/*check if the given char is a ASCII letter
|
|
||||||
* include all the letters and english puntuations.*/
|
|
||||||
FRISO_API int gbk_halfwidth_en_char(char);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a full-width latain.
|
|
||||||
* include the full-width arabic numeber, letters.
|
|
||||||
* but not the full-width puntuations.
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_fullwidth_en_char(char *);
|
|
||||||
|
|
||||||
//check if the given char is a upper case char.
|
|
||||||
// included all the full-width and half-width letters.
|
|
||||||
FRISO_API int gbk_uppercase_letter(char *);
|
|
||||||
|
|
||||||
//check if the given char is a lower case char.
|
|
||||||
// included all the full-width and half-width letters.
|
|
||||||
FRISO_API int gbk_lowercase_letter(char *);
|
|
||||||
|
|
||||||
//check if the given char is a numeric.
|
|
||||||
// included the full-width and half-width arabic numeric.
|
|
||||||
FRISO_API int gbk_numeric_letter(char *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given fstring is make up with numeric chars.
|
|
||||||
* both full-width,half-width numeric is ok.
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_numeric_string(char *);
|
|
||||||
|
|
||||||
FRISO_API int gbk_decimal_string(char *);
|
|
||||||
|
|
||||||
//check if the given char is a english(ASCII) char.
|
|
||||||
//(full-width and half-width)
|
|
||||||
//not the punctuation of course.
|
|
||||||
FRISO_API int gbk_en_letter(char *);
|
|
||||||
|
|
||||||
//check the specified char is a whitespace or not.
|
|
||||||
FRISO_API int gbk_whitespace(char *);
|
|
||||||
|
|
||||||
/* check if the given char is a letter number like 'ⅠⅡ'
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_letter_number(char *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* check if the given char is a other number like '①⑩⑽㈩'
|
|
||||||
*/
|
|
||||||
FRISO_API int gbk_other_number(char *);
|
|
||||||
|
|
||||||
//check if the given char is a english punctuation.
|
|
||||||
FRISO_API int gbk_en_punctuation(char) ;
|
|
||||||
|
|
||||||
//check the given char is a chinese punctuation.
|
|
||||||
FRISO_API int gbk_cn_punctuation(char *);
|
|
||||||
|
|
||||||
//cause the logic handle is the same as the utf8.
|
|
||||||
// here invoke the utf8 interface directly.
|
|
||||||
//FRISO_API int gbk_keep_punctuation( char * );
|
|
||||||
//@Deprecated
|
|
||||||
//#define gbk_keep_punctuation( str ) utf8_keep_punctuation(str)
|
|
||||||
|
|
||||||
//check if the given english char is a full-width char or not.
|
|
||||||
//FRISO_API int gbk_fullwidth_char( char * ) ;
|
|
||||||
/* }}}*/
|
|
||||||
|
|
||||||
#endif /*end _friso_charset_h*/
|
|
|
@ -1,285 +0,0 @@
|
||||||
/*
|
|
||||||
* friso hash table functions implementation defined in header file "friso_API.h".
|
|
||||||
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
//-166411799L
|
|
||||||
//31 131 1331 13331 133331 ..
|
|
||||||
//31 131 1313 13131 131313 .. the best
|
|
||||||
#define HASH_FACTOR 1313131
|
|
||||||
|
|
||||||
/* ************************
|
|
||||||
* mapping function area *
|
|
||||||
**************************/
|
|
||||||
__STATIC_API__ uint_t hash(fstring str, uint_t length) {
|
|
||||||
//hash code
|
|
||||||
uint_t h = 0;
|
|
||||||
|
|
||||||
while(*str != '\0') {
|
|
||||||
h = h * HASH_FACTOR + (*str++);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (h % length);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*test if a integer is a prime.*/
|
|
||||||
__STATIC_API__ int is_prime(int n) {
|
|
||||||
int j;
|
|
||||||
if(n == 2 || n == 3) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(n == 1 || n % 2 == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(j = 3; j * j < n; j++) {
|
|
||||||
if(n % j == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*get the next prime just after the speicified integer.*/
|
|
||||||
__STATIC_API__ int next_prime(int n) {
|
|
||||||
if(n % 2 == 0) n++;
|
|
||||||
for(; ! is_prime(n); n = n + 2) ;
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
//fstring copy, return the pointer of the new string.
|
|
||||||
//static fstring string_copy( fstring _src ) {
|
|
||||||
//int bytes = strlen( _src );
|
|
||||||
//fstring _dst = ( fstring ) FRISO_MALLOC( bytes + 1 );
|
|
||||||
//register int t = 0;
|
|
||||||
|
|
||||||
//do {
|
|
||||||
//_dst[t] = _src[t];
|
|
||||||
//t++;
|
|
||||||
//} while ( _src[t] != '\0' );
|
|
||||||
//_dst[t] = '\0';
|
|
||||||
|
|
||||||
//return _dst;
|
|
||||||
//}
|
|
||||||
|
|
||||||
/* *********************************
|
|
||||||
* static hashtable function area. *
|
|
||||||
***********************************/
|
|
||||||
__STATIC_API__ hash_entry_t new_hash_entry(
|
|
||||||
fstring key,
|
|
||||||
void * value,
|
|
||||||
hash_entry_t next) {
|
|
||||||
hash_entry_t e = (hash_entry_t)
|
|
||||||
FRISO_MALLOC(sizeof(friso_hash_entry));
|
|
||||||
if(e == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//e->_key = string_copy( key );
|
|
||||||
e->_key = key;
|
|
||||||
e->_val = value;
|
|
||||||
e->_next = next;
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
//create blocks copy of entries.
|
|
||||||
__STATIC_API__ hash_entry_t * create_hash_entries(uint_t blocks) {
|
|
||||||
register uint_t t;
|
|
||||||
hash_entry_t *e = (hash_entry_t *)
|
|
||||||
FRISO_CALLOC(sizeof(hash_entry_t), blocks);
|
|
||||||
if(e == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
for(t = 0; t < blocks; t++) {
|
|
||||||
e[t] = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
//a static function to do the re-hash work.
|
|
||||||
__STATIC_API__ void rebuild_hash(friso_hash_t _hash) {
|
|
||||||
//printf("rehashed.\n");
|
|
||||||
//find the next prime as the length of the hashtable.
|
|
||||||
uint_t t, length = next_prime(_hash->length * 2 + 1);
|
|
||||||
hash_entry_t e, next, *_src = _hash->table, \
|
|
||||||
*table = create_hash_entries(length);
|
|
||||||
uint_t bucket;
|
|
||||||
|
|
||||||
//copy the nodes
|
|
||||||
for(t = 0; t < _hash->length; t++) {
|
|
||||||
e = *(_src + t);
|
|
||||||
if(e != NULL) {
|
|
||||||
do {
|
|
||||||
next = e->_next;
|
|
||||||
bucket = hash(e->_key, length);
|
|
||||||
e->_next = table[bucket];
|
|
||||||
table[bucket] = e;
|
|
||||||
e = next;
|
|
||||||
} while(e != NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_hash->table = table;
|
|
||||||
_hash->length = length;
|
|
||||||
_hash->threshold = (uint_t)(_hash->length * _hash->factor);
|
|
||||||
|
|
||||||
//free the old hash_entry_t blocks allocations.
|
|
||||||
FRISO_FREE(_src);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ********************************
|
|
||||||
* hashtable interface functions. *
|
|
||||||
* ********************************/
|
|
||||||
|
|
||||||
//create a new hash table.
|
|
||||||
FRISO_API friso_hash_t new_hash_table(void) {
|
|
||||||
friso_hash_t _hash = (friso_hash_t) FRISO_MALLOC(sizeof(friso_hash_cdt));
|
|
||||||
if(_hash == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//initialize the the hashtable
|
|
||||||
_hash->length = DEFAULT_LENGTH;
|
|
||||||
_hash->size = 0;
|
|
||||||
_hash->factor = DEFAULT_FACTOR;
|
|
||||||
_hash->threshold = (uint_t)(_hash->length * _hash->factor);
|
|
||||||
_hash->table = create_hash_entries(_hash->length);
|
|
||||||
|
|
||||||
return _hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void free_hash_table(
|
|
||||||
friso_hash_t _hash,
|
|
||||||
fhash_callback_fn_t fentry_func) {
|
|
||||||
register uint_t j;
|
|
||||||
hash_entry_t e, n;
|
|
||||||
|
|
||||||
for(j = 0; j < _hash->length; j++) {
|
|
||||||
e = *(_hash->table + j);
|
|
||||||
for(; e != NULL ;) {
|
|
||||||
n = e->_next;
|
|
||||||
if(fentry_func != NULL) fentry_func(e);
|
|
||||||
FRISO_FREE(e);
|
|
||||||
e = n;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//free the pointer array block ( 4 * htable->length continuous bytes ).
|
|
||||||
FRISO_FREE(_hash->table);
|
|
||||||
FRISO_FREE(_hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//put a new mapping insite.
|
|
||||||
//the value cannot be NULL.
|
|
||||||
FRISO_API void *hash_put_mapping(
|
|
||||||
friso_hash_t _hash,
|
|
||||||
fstring key,
|
|
||||||
void * value) {
|
|
||||||
uint_t bucket = (key == NULL) ? 0 : hash(key, _hash->length);
|
|
||||||
hash_entry_t e = *(_hash->table + bucket);
|
|
||||||
void *oval = NULL;
|
|
||||||
|
|
||||||
//check the given key is already exists or not.
|
|
||||||
for(; e != NULL; e = e->_next) {
|
|
||||||
if(key == e->_key
|
|
||||||
|| (key != NULL && e->_key != NULL
|
|
||||||
&& strcmp(key, e->_key) == 0)) {
|
|
||||||
oval = e->_val; //bak the old value
|
|
||||||
e->_key = key;
|
|
||||||
e->_val = value;
|
|
||||||
return oval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//put a new mapping into the hashtable.
|
|
||||||
_hash->table[bucket] = new_hash_entry(key, value, _hash->table[bucket]);
|
|
||||||
_hash->size++;
|
|
||||||
|
|
||||||
//check the condition to rebuild the hashtable.
|
|
||||||
if(_hash->size >= _hash->threshold) {
|
|
||||||
rebuild_hash(_hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
return oval;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check the existence of the mapping associated with the given key.
|
|
||||||
FRISO_API int hash_exist_mapping(
|
|
||||||
friso_hash_t _hash, fstring key) {
|
|
||||||
uint_t bucket = (key == NULL) ? 0 : hash(key, _hash->length);
|
|
||||||
hash_entry_t e;
|
|
||||||
|
|
||||||
for(e = *(_hash->table + bucket);
|
|
||||||
e != NULL; e = e->_next) {
|
|
||||||
if(key == e->_key
|
|
||||||
|| (key != NULL && e->_key != NULL
|
|
||||||
&& strcmp(key, e->_key) == 0)) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the value associated with the given key.
|
|
||||||
FRISO_API void *hash_get_value(friso_hash_t _hash, fstring key) {
|
|
||||||
uint_t bucket = (key == NULL) ? 0 : hash(key, _hash->length);
|
|
||||||
hash_entry_t e;
|
|
||||||
|
|
||||||
for(e = *(_hash->table + bucket);
|
|
||||||
e != NULL; e = e->_next) {
|
|
||||||
if(key == e->_key
|
|
||||||
|| (key != NULL && e->_key != NULL
|
|
||||||
&& strcmp(key, e->_key) == 0)) {
|
|
||||||
return e->_val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//remove the mapping associated with the given key.
|
|
||||||
FRISO_API hash_entry_t hash_remove_mapping(
|
|
||||||
friso_hash_t _hash, fstring key) {
|
|
||||||
uint_t bucket = (key == NULL) ? 0 : hash(key, _hash->length);
|
|
||||||
hash_entry_t e, prev = NULL;
|
|
||||||
hash_entry_t b;
|
|
||||||
|
|
||||||
for(e = *(_hash->table + bucket);
|
|
||||||
e != NULL; prev = e, e = e->_next) {
|
|
||||||
if(key == e->_key
|
|
||||||
|| (key != NULL && e->_key != NULL
|
|
||||||
&& strcmp(key, e->_key) == 0)) {
|
|
||||||
b = e;
|
|
||||||
//the node located at *( htable->table + bucket )
|
|
||||||
if(prev == NULL) {
|
|
||||||
_hash->table[bucket] = e->_next;
|
|
||||||
} else {
|
|
||||||
prev->_next = e->_next;
|
|
||||||
}
|
|
||||||
//printf("%s was removed\n", b->_key);
|
|
||||||
_hash->size--;
|
|
||||||
//FRISO_FREE( b );
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//count the size.(A macro define has replace this.)
|
|
||||||
//FRISO_API uint_t hash_get_size( friso_hash_t _hash ) {
|
|
||||||
// return _hash->size;
|
|
||||||
//}
|
|
|
@ -1,540 +0,0 @@
|
||||||
/*
|
|
||||||
* friso lexicon functions implementation.
|
|
||||||
* used to deal with the friso lexicon, like: load,remove,match...
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include "friso.h"
|
|
||||||
|
|
||||||
#define __SPLIT_MAX_TOKENS__ 5
|
|
||||||
#define __LEX_FILE_DELIME__ '#'
|
|
||||||
#define __FRISO_LEX_IFILE__ "friso.lex.ini"
|
|
||||||
|
|
||||||
//create a new lexicon
|
|
||||||
FRISO_API friso_dic_t friso_dic_new() {
|
|
||||||
register uint_t t;
|
|
||||||
friso_dic_t dic = (friso_dic_t) FRISO_CALLOC(
|
|
||||||
sizeof(friso_hash_t), __FRISO_LEXICON_LENGTH__);
|
|
||||||
if(dic == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
for(t = 0; t < __FRISO_LEXICON_LENGTH__; t++) {
|
|
||||||
dic[t] = new_hash_table();
|
|
||||||
}
|
|
||||||
|
|
||||||
return dic;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* default callback function to invoke
|
|
||||||
* when free the friso dictionary .
|
|
||||||
*
|
|
||||||
* @date 2013-06-12
|
|
||||||
*/
|
|
||||||
__STATIC_API__ void default_fdic_callback(hash_entry_t e) {
|
|
||||||
register uint_t i;
|
|
||||||
friso_array_t syn;
|
|
||||||
lex_entry_t lex = (lex_entry_t) e->_val;
|
|
||||||
//free the lex->word
|
|
||||||
FRISO_FREE(lex->word);
|
|
||||||
//free the lex->syn if it is not NULL
|
|
||||||
if(lex->syn != NULL) {
|
|
||||||
syn = lex->syn;
|
|
||||||
for(i = 0; i < syn->length; i++) {
|
|
||||||
FRISO_FREE(syn->items[i]);
|
|
||||||
}
|
|
||||||
free_array_list(syn);
|
|
||||||
}
|
|
||||||
|
|
||||||
//free the e->_val
|
|
||||||
//@date 2014-01-28 posted by mlemay@gmail.com
|
|
||||||
FRISO_FREE(lex);
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void friso_dic_free(friso_dic_t dic) {
|
|
||||||
register uint_t t;
|
|
||||||
for(t = 0; t < __FRISO_LEXICON_LENGTH__; t++) {
|
|
||||||
//free the hash table
|
|
||||||
free_hash_table(dic[t], default_fdic_callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_FREE(dic);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//create a new lexicon entry
|
|
||||||
FRISO_API lex_entry_t new_lex_entry(
|
|
||||||
fstring word,
|
|
||||||
friso_array_t syn,
|
|
||||||
uint_t fre,
|
|
||||||
uint_t length,
|
|
||||||
uint_t type) {
|
|
||||||
lex_entry_t e = (lex_entry_t)
|
|
||||||
FRISO_MALLOC(sizeof(lex_entry_cdt));
|
|
||||||
if(e == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//initialize.
|
|
||||||
e->word = word;
|
|
||||||
e->syn = syn; //synoyum words array list.
|
|
||||||
e->pos = NULL; //part of speech array list.
|
|
||||||
//e->py = NULL; //set to NULL first.
|
|
||||||
e->fre = fre;
|
|
||||||
e->length = (uchar_t) length; //length
|
|
||||||
e->rlen = (uchar_t) length; //set to length by default.
|
|
||||||
e->type = (uchar_t) type; //type
|
|
||||||
e->ctrlMask = 0; //control mask.
|
|
||||||
e->offset = -1;
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* free the given lexicon entry.
|
|
||||||
* you have to do three thing maybe:
|
|
||||||
* 1. free where its syn items points to. (not implemented)
|
|
||||||
* 2. free its syn. (friso_array_t)
|
|
||||||
* 3. free its pos. (friso_array_t)
|
|
||||||
* 4. free the lex_entry_t.
|
|
||||||
*/
|
|
||||||
FRISO_API void free_lex_entry_full(lex_entry_t e) {
|
|
||||||
register uint_t i;
|
|
||||||
friso_array_t syn;
|
|
||||||
|
|
||||||
//free the lex->word
|
|
||||||
FRISO_FREE(e->word);
|
|
||||||
//free the lex->syn if it is not NULL
|
|
||||||
if(e->syn != NULL) {
|
|
||||||
syn = e->syn;
|
|
||||||
for(i = 0; i < syn->length; i++) {
|
|
||||||
FRISO_FREE(syn->items[i]);
|
|
||||||
}
|
|
||||||
free_array_list(syn);
|
|
||||||
}
|
|
||||||
|
|
||||||
//free the e->_val
|
|
||||||
//@date 2014-01-28 posted by mlemay@gmail.com
|
|
||||||
FRISO_FREE(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void free_lex_entry(lex_entry_t e) {
|
|
||||||
//if ( e->syn != NULL ) {
|
|
||||||
// if ( flag == 1 ) free_array_list( e->syn);
|
|
||||||
// else free_array_list( e->syn );
|
|
||||||
//}
|
|
||||||
|
|
||||||
FRISO_FREE(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//add a new entry to the dictionary.
|
|
||||||
FRISO_API void friso_dic_add(
|
|
||||||
friso_dic_t dic,
|
|
||||||
friso_lex_t lex,
|
|
||||||
fstring word,
|
|
||||||
friso_array_t syn) {
|
|
||||||
void *olex = NULL;
|
|
||||||
if(lex >= 0 && lex < __FRISO_LEXICON_LENGTH__) {
|
|
||||||
//printf("lex=%d, word=%s, syn=%s\n", lex, word, syn);
|
|
||||||
olex = hash_put_mapping(dic[lex], word,
|
|
||||||
new_lex_entry(word, syn, 0,
|
|
||||||
(uint_t) strlen(word), (uint_t) lex));
|
|
||||||
if(olex != NULL) {
|
|
||||||
free_lex_entry_full((lex_entry_t)olex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void friso_dic_add_with_fre(
|
|
||||||
friso_dic_t dic,
|
|
||||||
friso_lex_t lex,
|
|
||||||
fstring word,
|
|
||||||
friso_array_t syn,
|
|
||||||
uint_t frequency) {
|
|
||||||
void *olex = NULL;
|
|
||||||
if(lex >= 0 && lex < __FRISO_LEXICON_LENGTH__) {
|
|
||||||
olex = hash_put_mapping(dic[lex], word,
|
|
||||||
new_lex_entry(word, syn, frequency,
|
|
||||||
(uint_t) strlen(word), (uint_t) lex));
|
|
||||||
if(olex != NULL) {
|
|
||||||
free_lex_entry_full((lex_entry_t)olex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* read a line from a specified stream.
|
|
||||||
* the newline will be cleared.
|
|
||||||
*
|
|
||||||
* @date 2012-11-24
|
|
||||||
*/
|
|
||||||
FRISO_API fstring file_get_line(fstring __dst, FILE * _stream) {
|
|
||||||
register int c;
|
|
||||||
fstring cs;
|
|
||||||
|
|
||||||
cs = __dst;
|
|
||||||
while((c = fgetc(_stream)) != EOF) {
|
|
||||||
if(c == '\n') break;
|
|
||||||
*cs++ = c;
|
|
||||||
}
|
|
||||||
*cs = '\0';
|
|
||||||
|
|
||||||
return (c == EOF && cs == __dst) ? NULL : __dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* static function to copy a string.
|
|
||||||
*/
|
|
||||||
///instead of memcpy
|
|
||||||
__STATIC_API__ fstring string_copy(
|
|
||||||
fstring _src,
|
|
||||||
fstring __dst,
|
|
||||||
uint_t blocks) {
|
|
||||||
|
|
||||||
register fstring __src = _src;
|
|
||||||
register uint_t t;
|
|
||||||
|
|
||||||
for(t = 0; t < blocks; t++) {
|
|
||||||
if(*__src == '\0') break;
|
|
||||||
__dst[t] = *__src++;
|
|
||||||
}
|
|
||||||
__dst[t] = '\0';
|
|
||||||
|
|
||||||
return __dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make a heap allocation, and copy the
|
|
||||||
* source fstring to the new allocation, and
|
|
||||||
* you should free it after use it .
|
|
||||||
*
|
|
||||||
* @param _src source fstring
|
|
||||||
* @param blocks number of bytes to copy
|
|
||||||
*/
|
|
||||||
__STATIC_API__ fstring string_copy_heap(
|
|
||||||
fstring _src, uint_t blocks) {
|
|
||||||
register uint_t t;
|
|
||||||
|
|
||||||
fstring str = (fstring) FRISO_MALLOC(blocks + 1);
|
|
||||||
if(str == NULL) {
|
|
||||||
___ALLOCATION_ERROR___;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(t = 0; t < blocks; t++) {
|
|
||||||
//if ( *_src == '\0' ) break;
|
|
||||||
str[t] = *_src++;
|
|
||||||
}
|
|
||||||
|
|
||||||
str[t] = '\0';
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* find the postion of the first appear of the given char.
|
|
||||||
* address of the char in the fstring will be return .
|
|
||||||
* if not found NULL will be return .
|
|
||||||
*/
|
|
||||||
__STATIC_API__ fstring indexOf(fstring __str, char delimiter) {
|
|
||||||
uint_t i, __length__;
|
|
||||||
|
|
||||||
__length__ = strlen(__str);
|
|
||||||
for(i = 0; i < __length__; i++) {
|
|
||||||
if(__str[i] == delimiter) {
|
|
||||||
return __str + i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* load all the valid wors from a specified lexicon file .
|
|
||||||
*
|
|
||||||
* @param dic friso dictionary instance (A hash array)
|
|
||||||
* @param lex the lexicon type
|
|
||||||
* @param lex_file the path of the lexicon file
|
|
||||||
* @param length the maximum length of the word item
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_load(
|
|
||||||
friso_t friso,
|
|
||||||
friso_config_t config,
|
|
||||||
friso_lex_t lex,
|
|
||||||
fstring lex_file,
|
|
||||||
uint_t length) {
|
|
||||||
|
|
||||||
FILE * _stream;
|
|
||||||
char __char[1024], _buffer[512];
|
|
||||||
fstring _line;
|
|
||||||
string_split_entry sse;
|
|
||||||
|
|
||||||
fstring _word;
|
|
||||||
char _sbuffer[512];
|
|
||||||
fstring _syn;
|
|
||||||
friso_array_t sywords;
|
|
||||||
uint_t _fre;
|
|
||||||
|
|
||||||
if((_stream = fopen(lex_file, "rb")) != NULL) {
|
|
||||||
while((_line = file_get_line(__char, _stream)) != NULL) {
|
|
||||||
//clear up the notes
|
|
||||||
//make sure the length of the line is greater than 1.
|
|
||||||
//like the single '#' mark in stopwords dictionary.
|
|
||||||
if(_line[0] == '#' && strlen(_line) > 1) continue;
|
|
||||||
|
|
||||||
//handle the stopwords.
|
|
||||||
if(lex == __LEX_STOPWORDS__) {
|
|
||||||
//clean the chinese words that its length is greater than max length.
|
|
||||||
if(((int)_line[0]) < 0 && strlen(_line) > length) continue;
|
|
||||||
friso_dic_add(friso->dic, __LEX_STOPWORDS__,
|
|
||||||
string_copy_heap(_line, strlen(_line)), NULL);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//split the fstring with '/'.
|
|
||||||
string_split_reset(&sse, "/", _line);
|
|
||||||
if(string_split_next(&sse, _buffer) == NULL) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//1. get the word.
|
|
||||||
_word = string_copy_heap(_buffer, strlen(_buffer));
|
|
||||||
|
|
||||||
if(string_split_next(&sse, _buffer) == NULL) {
|
|
||||||
//normal lexicon type,
|
|
||||||
//add them to the dictionary directly
|
|
||||||
friso_dic_add(friso->dic, lex, _word, NULL);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* filter out the words that its length is larger
|
|
||||||
* than the specified limit.
|
|
||||||
* but not for __LEX_ECM_WORDS__ and english __LEX_STOPWORDS__
|
|
||||||
* and __LEX_CEM_WORDS__.
|
|
||||||
*/
|
|
||||||
if(!(lex == __LEX_ECM_WORDS__ || lex == __LEX_CEM_WORDS__)
|
|
||||||
&& strlen(_word) > length) {
|
|
||||||
FRISO_FREE(_word);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//2. get the synonyms words.
|
|
||||||
_syn = NULL;
|
|
||||||
if(strcmp(_buffer, "null") != 0) {
|
|
||||||
_syn = string_copy(_buffer, _sbuffer, strlen(_buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
//3. get the word frequency if it available.
|
|
||||||
_fre = 0;
|
|
||||||
if(string_split_next(&sse, _buffer) != NULL) {
|
|
||||||
_fre = atoi(_buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Here:
|
|
||||||
* split the synonyms words with mark ","
|
|
||||||
* and put them in a array list if the synonyms is not NULL
|
|
||||||
*/
|
|
||||||
sywords = NULL;
|
|
||||||
if(config->add_syn && _syn != NULL) {
|
|
||||||
string_split_reset(&sse, ",", _sbuffer);
|
|
||||||
sywords = new_array_list_with_opacity(5);
|
|
||||||
while(string_split_next(&sse, _buffer) != NULL) {
|
|
||||||
if(strlen(_buffer) > length) continue;
|
|
||||||
array_list_add(sywords,
|
|
||||||
string_copy_heap(_buffer, strlen(_buffer)));
|
|
||||||
}
|
|
||||||
sywords = array_list_trim(sywords);
|
|
||||||
}
|
|
||||||
|
|
||||||
//4. add the word item
|
|
||||||
friso_dic_add_with_fre(
|
|
||||||
friso->dic, lex, _word, sywords, _fre);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(_stream);
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "Warning: Fail to open lexicon file %s\n", lex_file);
|
|
||||||
fprintf(stderr, "Warning: Without lexicon file, segment results will not correct \n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the lexicon type index with the specified
|
|
||||||
* type keywords .
|
|
||||||
*
|
|
||||||
* @see friso.h#friso_lex_t
|
|
||||||
* @param _key
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
__STATIC_API__ friso_lex_t get_lexicon_type_with_constant(fstring _key) {
|
|
||||||
if(strcmp(_key, "__LEX_CJK_WORDS__") == 0) {
|
|
||||||
return __LEX_CJK_WORDS__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CJK_UNITS__") == 0) {
|
|
||||||
return __LEX_CJK_UNITS__;
|
|
||||||
} else if(strcmp(_key, "__LEX_ECM_WORDS__") == 0) {
|
|
||||||
return __LEX_ECM_WORDS__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CEM_WORDS__") == 0) {
|
|
||||||
return __LEX_CEM_WORDS__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CN_LNAME__") == 0) {
|
|
||||||
return __LEX_CN_LNAME__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CN_SNAME__") == 0) {
|
|
||||||
return __LEX_CN_SNAME__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CN_DNAME1__") == 0) {
|
|
||||||
return __LEX_CN_DNAME1__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CN_DNAME2__") == 0) {
|
|
||||||
return __LEX_CN_DNAME2__;
|
|
||||||
} else if(strcmp(_key, "__LEX_CN_LNA__") == 0) {
|
|
||||||
return __LEX_CN_LNA__;
|
|
||||||
} else if(strcmp(_key, "__LEX_STOPWORDS__") == 0) {
|
|
||||||
return __LEX_STOPWORDS__;
|
|
||||||
} else if(strcmp(_key, "__LEX_ENPUN_WORDS__") == 0) {
|
|
||||||
return __LEX_ENPUN_WORDS__;
|
|
||||||
} else if(strcmp(_key, "__LEX_EN_WORDS__") == 0) {
|
|
||||||
return __LEX_EN_WORDS__;
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* load the lexicon configuration file.
|
|
||||||
* and load all the valid lexicon from the configuration file.
|
|
||||||
*
|
|
||||||
* @param friso friso instance
|
|
||||||
* @param config friso_config instance
|
|
||||||
* @param _path dictionary directory
|
|
||||||
* @param _limitts words length limit
|
|
||||||
*/
|
|
||||||
FRISO_API void friso_dic_load_from_ifile(
|
|
||||||
friso_t friso,
|
|
||||||
friso_config_t config,
|
|
||||||
fstring _path,
|
|
||||||
uint_t _limits) {
|
|
||||||
|
|
||||||
//1.parse the configuration file.
|
|
||||||
FILE *__stream;
|
|
||||||
char __chars__[1024], __key__[30], *__line__;
|
|
||||||
uint_t __length__, i, t;
|
|
||||||
friso_lex_t lex_t;
|
|
||||||
string_buffer_t sb;
|
|
||||||
|
|
||||||
//get the lexicon configruation file path
|
|
||||||
sb = new_string_buffer();
|
|
||||||
|
|
||||||
string_buffer_append(sb, _path);
|
|
||||||
string_buffer_append(sb, __FRISO_LEX_IFILE__);
|
|
||||||
//printf("%s\n", sb->buffer);
|
|
||||||
|
|
||||||
if((__stream = fopen(sb->buffer, "rb")) != NULL) {
|
|
||||||
while((__line__ =
|
|
||||||
file_get_line(__chars__, __stream)) != NULL) {
|
|
||||||
//comment filter.
|
|
||||||
if(__line__[0] == '#') continue;
|
|
||||||
if(__line__[0] == '\0') continue;
|
|
||||||
|
|
||||||
__length__ = strlen(__line__);
|
|
||||||
//item start
|
|
||||||
if(__line__[ __length__ - 1 ] == '[') {
|
|
||||||
//get the type key
|
|
||||||
for(i = 0; i < __length__
|
|
||||||
&& (__line__[i] == ' ' || __line__[i] == '\t'); i++);
|
|
||||||
for(t = 0; i < __length__; i++, t++) {
|
|
||||||
if(__line__[i] == ' '
|
|
||||||
|| __line__[i] == '\t' || __line__[i] == ':') break;
|
|
||||||
__key__[t] = __line__[i];
|
|
||||||
}
|
|
||||||
__key__[t] = '\0';
|
|
||||||
|
|
||||||
//get the lexicon type
|
|
||||||
lex_t = get_lexicon_type_with_constant(__key__);
|
|
||||||
if(lex_t == -1) continue;
|
|
||||||
|
|
||||||
//printf("key=%s, type=%d\n", __key__, lex_t );
|
|
||||||
while((__line__ = file_get_line(__chars__, __stream)) != NULL) {
|
|
||||||
//comments filter.
|
|
||||||
if(__line__[0] == '#') continue;
|
|
||||||
if(__line__[0] == '\0') continue;
|
|
||||||
|
|
||||||
__length__ = strlen(__line__);
|
|
||||||
if(__line__[ __length__ - 1 ] == ']') break;
|
|
||||||
|
|
||||||
for(i = 0; i < __length__
|
|
||||||
&& (__line__[i] == ' ' || __line__[i] == '\t'); i++);
|
|
||||||
for(t = 0; i < __length__; i++, t++) {
|
|
||||||
if(__line__[i] == ' '
|
|
||||||
|| __line__[i] == '\t' || __line__[i] == ';') break;
|
|
||||||
__key__[t] = __line__[i];
|
|
||||||
}
|
|
||||||
__key__[t] = '\0';
|
|
||||||
|
|
||||||
//load the lexicon item from the lexicon file.
|
|
||||||
string_buffer_clear(sb);
|
|
||||||
string_buffer_append(sb, _path);
|
|
||||||
string_buffer_append(sb, __key__);
|
|
||||||
//printf("key=%s, type=%d\n", __key__, lex_t);
|
|
||||||
friso_dic_load(friso, config, lex_t, sb->buffer, _limits);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} //end while
|
|
||||||
|
|
||||||
fclose(__stream);
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "Warning: Fail to open the lexicon configuration file %s\n", sb->buffer);
|
|
||||||
fprintf(stderr, "Warning: Without lexicon file, segment results will not correct \n");
|
|
||||||
}
|
|
||||||
|
|
||||||
free_string_buffer(sb);
|
|
||||||
}
|
|
||||||
|
|
||||||
//match the item.
|
|
||||||
FRISO_API int friso_dic_match(
|
|
||||||
friso_dic_t dic,
|
|
||||||
friso_lex_t lex,
|
|
||||||
fstring word) {
|
|
||||||
if(lex >= 0 && lex < __FRISO_LEXICON_LENGTH__) {
|
|
||||||
return hash_exist_mapping(dic[lex], word);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the lex_entry_t associated with the word.
|
|
||||||
FRISO_API lex_entry_t friso_dic_get(
|
|
||||||
friso_dic_t dic,
|
|
||||||
friso_lex_t lex,
|
|
||||||
fstring word) {
|
|
||||||
if(lex >= 0 && lex < __FRISO_LEXICON_LENGTH__) {
|
|
||||||
return (lex_entry_t) hash_get_value(dic[lex], word);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the size of the specified type dictionary.
|
|
||||||
FRISO_API uint_t friso_spec_dic_size(
|
|
||||||
friso_dic_t dic,
|
|
||||||
friso_lex_t lex) {
|
|
||||||
if(lex >= 0 && lex < __FRISO_LEXICON_LENGTH__) {
|
|
||||||
return hash_get_size(dic[lex]);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get size of the whole dictionary.
|
|
||||||
FRISO_API uint_t friso_all_dic_size(
|
|
||||||
friso_dic_t dic) {
|
|
||||||
register uint_t size = 0, t;
|
|
||||||
|
|
||||||
for(t = 0; t < __FRISO_LEXICON_LENGTH__; t++) {
|
|
||||||
size += hash_get_size(dic[t]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return size;
|
|
||||||
}
|
|
|
@ -1,266 +0,0 @@
|
||||||
/*
|
|
||||||
* link list functions implementation defined in header file "friso_API.h".
|
|
||||||
* when the link_node is being deleted, here we just free
|
|
||||||
* the allocation of the node, not the allcation of it's value.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
//create a new link list node.
|
|
||||||
__STATIC_API__ link_node_t new_node_entry(
|
|
||||||
void * value,
|
|
||||||
link_node_t prev,
|
|
||||||
link_node_t next) {
|
|
||||||
link_node_t node = (link_node_t)
|
|
||||||
FRISO_MALLOC(sizeof(link_node_entry));
|
|
||||||
if(node == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
node->value = value;
|
|
||||||
node->prev = prev;
|
|
||||||
node->next = next;
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
//create a new link list
|
|
||||||
FRISO_API friso_link_t new_link_list(void) {
|
|
||||||
friso_link_t e = (friso_link_t)
|
|
||||||
FRISO_MALLOC(sizeof(friso_link_entry));
|
|
||||||
if(e == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//initialize the entry
|
|
||||||
e->head = new_node_entry(NULL, NULL, NULL);
|
|
||||||
e->tail = new_node_entry(NULL, e->head, NULL);
|
|
||||||
e->head->next = e->tail;
|
|
||||||
e->size = 0;
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
//free the given link list
|
|
||||||
FRISO_API void free_link_list(friso_link_t link) {
|
|
||||||
link_node_t node, next;
|
|
||||||
for(node = link->head; node != NULL;) {
|
|
||||||
next = node->next;
|
|
||||||
FRISO_FREE(node);
|
|
||||||
node = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_FREE(link);
|
|
||||||
}
|
|
||||||
|
|
||||||
//clear all nodes in the link list.
|
|
||||||
FRISO_API friso_link_t link_list_clear(
|
|
||||||
friso_link_t link) {
|
|
||||||
link_node_t node, next;
|
|
||||||
//free all the middle nodes.
|
|
||||||
for(node = link->head->next; node != link->tail;) {
|
|
||||||
next = node->next;
|
|
||||||
FRISO_FREE(node);
|
|
||||||
node = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
link->head->next = link->tail;
|
|
||||||
link->tail->prev = link->head;
|
|
||||||
link->size = 0;
|
|
||||||
|
|
||||||
return link;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the size of the link list.
|
|
||||||
//FRISO_API uint_t link_list_size( friso_link_t link ) {
|
|
||||||
// return link->size;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//check if the link list is empty
|
|
||||||
//FRISO_API int link_list_empty( friso_link_t link ) {
|
|
||||||
// return ( link->size == 0 );
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* find the node at a specified position.
|
|
||||||
* static
|
|
||||||
*/
|
|
||||||
__STATIC_API__ link_node_t get_node(
|
|
||||||
friso_link_t link, uint_t idx) {
|
|
||||||
link_node_t p = NULL;
|
|
||||||
register uint_t t;
|
|
||||||
|
|
||||||
if(idx >= 0 && idx < link->size) {
|
|
||||||
if(idx < link->size / 2) { //find from the head.
|
|
||||||
p = link->head;
|
|
||||||
for(t = 0; t <= idx; t++)
|
|
||||||
p = p->next;
|
|
||||||
} else { //find from the tail.
|
|
||||||
p = link->tail;
|
|
||||||
for(t = link->size; t > idx; t--)
|
|
||||||
p = p->prev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* insert a node before the given node.
|
|
||||||
* static
|
|
||||||
*/
|
|
||||||
//__STATIC_API__ void insert_before(
|
|
||||||
// friso_link_t link,
|
|
||||||
// link_node_t node,
|
|
||||||
// void * value )
|
|
||||||
//{
|
|
||||||
// link_node_t e = new_node_entry( value, node->prev, node );
|
|
||||||
// e->prev->next = e;
|
|
||||||
// e->next->prev = e;
|
|
||||||
// //node->prev = e;
|
|
||||||
//
|
|
||||||
// link->size++;
|
|
||||||
//}
|
|
||||||
#define insert_before( link, node, value ) \
|
|
||||||
{ \
|
|
||||||
link_node_t e = new_node_entry( value, node->prev, node ); \
|
|
||||||
e->prev->next = e; \
|
|
||||||
e->next->prev = e; \
|
|
||||||
link->size++; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* static function:
|
|
||||||
* remove the given node, the allocation of the value will not free,
|
|
||||||
* but we return it to you, you will free it youself when there is a necessary.
|
|
||||||
*
|
|
||||||
* @return the value of the removed node.
|
|
||||||
*/
|
|
||||||
__STATIC_API__ void * remove_node(
|
|
||||||
friso_link_t link, link_node_t node) {
|
|
||||||
void * _value = node->value;
|
|
||||||
|
|
||||||
node->prev->next = node->next;
|
|
||||||
node->next->prev = node->prev;
|
|
||||||
link->size--;
|
|
||||||
|
|
||||||
FRISO_FREE(node);
|
|
||||||
|
|
||||||
return _value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//add a new node to the link list.(insert just before the tail)
|
|
||||||
FRISO_API void link_list_add(
|
|
||||||
friso_link_t link, void * value) {
|
|
||||||
insert_before(link, link->tail, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
//add a new node before the given index.
|
|
||||||
FRISO_API void link_list_insert_before(
|
|
||||||
friso_link_t link, uint_t idx, void * value) {
|
|
||||||
link_node_t node = get_node(link, idx);
|
|
||||||
if(node != NULL) {
|
|
||||||
insert_before(link, node, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* get the value with the specified node.
|
|
||||||
*
|
|
||||||
* @return the value of the node.
|
|
||||||
*/
|
|
||||||
FRISO_API void * link_list_get(
|
|
||||||
friso_link_t link, uint_t idx) {
|
|
||||||
link_node_t node = get_node(link, idx);
|
|
||||||
if(node != NULL) {
|
|
||||||
return node->value;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* set the value of the node that located in the specified position.
|
|
||||||
* we did't free the allocation of the old value, we return it to you.
|
|
||||||
* free it yourself when it is necessary.
|
|
||||||
*
|
|
||||||
* @return the old value.
|
|
||||||
*/
|
|
||||||
FRISO_API void *link_list_set(
|
|
||||||
friso_link_t link,
|
|
||||||
uint_t idx, void * value) {
|
|
||||||
link_node_t node = get_node(link, idx);
|
|
||||||
void * _value = NULL;
|
|
||||||
|
|
||||||
if(node != NULL) {
|
|
||||||
_value = node->value;
|
|
||||||
node->value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* remove the node located in the specified position.
|
|
||||||
*
|
|
||||||
* @see remove_node
|
|
||||||
* @return the value of the node removed.
|
|
||||||
*/
|
|
||||||
FRISO_API void *link_list_remove(
|
|
||||||
friso_link_t link, uint_t idx) {
|
|
||||||
link_node_t node = get_node(link, idx);
|
|
||||||
|
|
||||||
if(node != NULL) {
|
|
||||||
//printf("idx=%d, node->value=%s\n", idx, (string) node->value );
|
|
||||||
return remove_node(link, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* remove the given node from the given link list.
|
|
||||||
*
|
|
||||||
* @see remove_node.
|
|
||||||
* @return the value of the node removed.
|
|
||||||
*/
|
|
||||||
FRISO_API void *link_list_remove_node(
|
|
||||||
friso_link_t link,
|
|
||||||
link_node_t node) {
|
|
||||||
return remove_node(link, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
//remove the first node after the head
|
|
||||||
FRISO_API void *link_list_remove_first(
|
|
||||||
friso_link_t link) {
|
|
||||||
if(link->size > 0) {
|
|
||||||
return remove_node(link, link->head->next);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//remove the last node just before the tail.
|
|
||||||
FRISO_API void *link_list_remove_last(
|
|
||||||
friso_link_t link) {
|
|
||||||
if(link->size > 0) {
|
|
||||||
return remove_node(link, link->tail->prev);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//append a node from the tail.
|
|
||||||
FRISO_API void link_list_add_last(
|
|
||||||
friso_link_t link,
|
|
||||||
void *value) {
|
|
||||||
insert_before(link, link->tail, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
//append a note just after the head.
|
|
||||||
FRISO_API void link_list_add_first(
|
|
||||||
friso_link_t link, void *value) {
|
|
||||||
insert_before(link, link->head->next, value);
|
|
||||||
}
|
|
|
@ -1,298 +0,0 @@
|
||||||
/*
|
|
||||||
* utf-8 handle functions implementation.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/* ******************************************
|
|
||||||
* fstring buffer functions implements. *
|
|
||||||
********************************************/
|
|
||||||
/**
|
|
||||||
* create a new buffer
|
|
||||||
* @Note:
|
|
||||||
* 1. it's real length is 1 byte greater than the specifield value
|
|
||||||
* 2. we did not do any optimization for the memory allocation to ...
|
|
||||||
* avoid the memory defragmentation.
|
|
||||||
*
|
|
||||||
* @date: 2014-10-16
|
|
||||||
*/
|
|
||||||
__STATIC_API__ fstring create_buffer(uint_t length) {
|
|
||||||
fstring buffer = (fstring) FRISO_MALLOC(length + 1);
|
|
||||||
if(buffer == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(buffer, 0x00, length + 1);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
//the __allocs should not be smaller than sb->length
|
|
||||||
__STATIC_API__ string_buffer_t resize_buffer(
|
|
||||||
string_buffer_t sb, uint_t __allocs) {
|
|
||||||
//create a new buffer.
|
|
||||||
//if ( __allocs < sb->length ) __allocs = sb->length + 1;
|
|
||||||
fstring str = create_buffer(__allocs);
|
|
||||||
|
|
||||||
//register uint_t t;
|
|
||||||
//for ( t = 0; t < sb->length; t++ ) {
|
|
||||||
// str[t] = sb->buffer[t];
|
|
||||||
//}
|
|
||||||
memcpy(str, sb->buffer, sb->length);
|
|
||||||
FRISO_FREE(sb->buffer);
|
|
||||||
|
|
||||||
sb->buffer = str;
|
|
||||||
sb->allocs = __allocs;
|
|
||||||
|
|
||||||
return sb;
|
|
||||||
}
|
|
||||||
|
|
||||||
//create a new fstring buffer with a default opacity.
|
|
||||||
//FRISO_API string_buffer_t new_string_buffer( void )
|
|
||||||
//{
|
|
||||||
// return new_string_buffer_with_opacity( __BUFFER_DEFAULT_LENGTH__ );
|
|
||||||
//}
|
|
||||||
|
|
||||||
//create a new fstring buffer with the given opacity.
|
|
||||||
FRISO_API string_buffer_t new_string_buffer_with_opacity(uint_t opacity) {
|
|
||||||
string_buffer_t sb = (string_buffer_t)
|
|
||||||
FRISO_MALLOC(sizeof(string_buffer_entry));
|
|
||||||
if(sb == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
sb->buffer = create_buffer(opacity);
|
|
||||||
sb->length = 0;
|
|
||||||
sb->allocs = opacity;
|
|
||||||
|
|
||||||
return sb;
|
|
||||||
}
|
|
||||||
|
|
||||||
//create a buffer with the given string.
|
|
||||||
FRISO_API string_buffer_t new_string_buffer_with_string(fstring str) {
|
|
||||||
//buffer allocations.
|
|
||||||
string_buffer_t sb = (string_buffer_t)
|
|
||||||
FRISO_MALLOC(sizeof(string_buffer_entry));
|
|
||||||
if(sb == NULL) {
|
|
||||||
___ALLOCATION_ERROR___
|
|
||||||
}
|
|
||||||
|
|
||||||
//initialize
|
|
||||||
sb->length = strlen(str);
|
|
||||||
sb->buffer = create_buffer(sb->length + __BUFFER_DEFAULT_LENGTH__);
|
|
||||||
sb->allocs = sb->length + __BUFFER_DEFAULT_LENGTH__;
|
|
||||||
|
|
||||||
//register uint_t t;
|
|
||||||
//copy the str to the buffer.
|
|
||||||
//for ( t = 0; t < sb->length; t++ ) {
|
|
||||||
// sb->buffer[t] = str[t];
|
|
||||||
//}
|
|
||||||
memcpy(sb->buffer, str, sb->length);
|
|
||||||
|
|
||||||
return sb;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void string_buffer_append(
|
|
||||||
string_buffer_t sb, fstring __str) {
|
|
||||||
register uint_t __len__ = strlen(__str);
|
|
||||||
|
|
||||||
//check the necessity to resize the buffer.
|
|
||||||
if(sb->length + __len__ > sb->allocs) {
|
|
||||||
sb = resize_buffer(sb, (sb->length + __len__) * 2 + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//register uint_t t;
|
|
||||||
////copy the __str to the buffer.
|
|
||||||
//for ( t = 0; t < __len__; t++ ) {
|
|
||||||
// sb->buffer[ sb->length++ ] = __str[t];
|
|
||||||
//}
|
|
||||||
memcpy(sb->buffer + sb->length, __str, __len__);
|
|
||||||
sb->length += __len__;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void string_buffer_append_char(
|
|
||||||
string_buffer_t sb, char ch) {
|
|
||||||
//check the necessity to resize the buffer.
|
|
||||||
if(sb->length + 1 > sb->allocs) {
|
|
||||||
sb = resize_buffer(sb, sb->length * 2 + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
sb->buffer[sb->length++] = ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void string_buffer_insert(
|
|
||||||
string_buffer_t sb,
|
|
||||||
uint_t idx,
|
|
||||||
fstring __str) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* remove the given bytes from the buffer start from idx.
|
|
||||||
* this will cause the byte move after the idx+length.
|
|
||||||
*
|
|
||||||
* @return the new string.
|
|
||||||
*/
|
|
||||||
FRISO_API fstring string_buffer_remove(
|
|
||||||
string_buffer_t sb,
|
|
||||||
uint_t idx,
|
|
||||||
uint_t length) {
|
|
||||||
uint_t t;
|
|
||||||
//move the bytes after the idx + length
|
|
||||||
for(t = idx + length; t < sb->length; t++) {
|
|
||||||
sb->buffer[t - length] = sb->buffer[t];
|
|
||||||
}
|
|
||||||
sb->buffer[t] = '\0';
|
|
||||||
//memcpy( sb->buffer + idx,
|
|
||||||
// sb->buffer + idx + length,
|
|
||||||
// sb->length - idx - length );
|
|
||||||
|
|
||||||
t = sb->length - idx;
|
|
||||||
if(t > 0) {
|
|
||||||
sb->length -= (t > length) ? length : t;
|
|
||||||
}
|
|
||||||
sb->buffer[sb->length - 1] = '\0';
|
|
||||||
|
|
||||||
return sb->buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* turn the string_buffer to a string.
|
|
||||||
* or return the buffer of the string_buffer.
|
|
||||||
*/
|
|
||||||
FRISO_API string_buffer_t string_buffer_trim(string_buffer_t sb) {
|
|
||||||
//resize the buffer.
|
|
||||||
if(sb->length < sb->allocs - 1) {
|
|
||||||
sb = resize_buffer(sb, sb->length + 1);
|
|
||||||
}
|
|
||||||
return sb;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* free the given fstring buffer.
|
|
||||||
* and this function will not free the allocations of the
|
|
||||||
* string_buffer_t->buffer, we return it to you, if there is
|
|
||||||
* a necessary you could free it youself by calling free();
|
|
||||||
*/
|
|
||||||
FRISO_API fstring string_buffer_devote(string_buffer_t sb) {
|
|
||||||
fstring buffer = sb->buffer;
|
|
||||||
FRISO_FREE(sb);
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* clear the given fstring buffer.
|
|
||||||
* reset its buffer with 0 and reset its length to 0.
|
|
||||||
*/
|
|
||||||
FRISO_API void string_buffer_clear(string_buffer_t sb) {
|
|
||||||
memset(sb->buffer, 0x00, sb->length);
|
|
||||||
sb->length = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//free everything of the fstring buffer.
|
|
||||||
FRISO_API void free_string_buffer(string_buffer_t sb) {
|
|
||||||
FRISO_FREE(sb->buffer);
|
|
||||||
FRISO_FREE(sb);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* create a new string_split_entry.
|
|
||||||
*
|
|
||||||
* @param source
|
|
||||||
* @return string_split_t;
|
|
||||||
*/
|
|
||||||
FRISO_API string_split_t new_string_split(
|
|
||||||
fstring delimiter,
|
|
||||||
fstring source) {
|
|
||||||
string_split_t e = (string_split_t)
|
|
||||||
FRISO_MALLOC(sizeof(string_split_entry));
|
|
||||||
if(e == NULL) {
|
|
||||||
___ALLOCATION_ERROR___;
|
|
||||||
}
|
|
||||||
|
|
||||||
e->delimiter = delimiter;
|
|
||||||
e->delLen = strlen(delimiter);
|
|
||||||
e->source = source;
|
|
||||||
e->srcLen = strlen(source);
|
|
||||||
e->idx = 0;
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void string_split_reset(
|
|
||||||
string_split_t sst,
|
|
||||||
fstring delimiter,
|
|
||||||
fstring source) {
|
|
||||||
sst->delimiter = delimiter;
|
|
||||||
sst->delLen = strlen(delimiter);
|
|
||||||
sst->source = source;
|
|
||||||
sst->srcLen = strlen(source);
|
|
||||||
sst->idx = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void string_split_set_source(
|
|
||||||
string_split_t sst, fstring source) {
|
|
||||||
sst->source = source;
|
|
||||||
sst->srcLen = strlen(source);
|
|
||||||
sst->idx = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void string_split_set_delimiter(
|
|
||||||
string_split_t sst, fstring delimiter) {
|
|
||||||
sst->delimiter = delimiter;
|
|
||||||
sst->delLen = strlen(delimiter);
|
|
||||||
sst->idx = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FRISO_API void free_string_split(string_split_t sst) {
|
|
||||||
FRISO_FREE(sst);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the next split fstring, and copy the
|
|
||||||
* splited fstring into the __dst buffer .
|
|
||||||
*
|
|
||||||
* @param string_split_t
|
|
||||||
* @param __dst
|
|
||||||
* @return fstring (NULL if reach the end of the source
|
|
||||||
* or there is no more segmentation)
|
|
||||||
*/
|
|
||||||
FRISO_API fstring string_split_next(
|
|
||||||
string_split_t sst, fstring __dst) {
|
|
||||||
uint_t i, _ok;
|
|
||||||
fstring _dst = __dst;
|
|
||||||
|
|
||||||
//check if reach the end of the fstring
|
|
||||||
if(sst->idx >= sst->srcLen) return NULL;
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
_ok = 1;
|
|
||||||
for(i = 0; i < sst->delLen
|
|
||||||
&& (sst->idx + i < sst->srcLen); i++) {
|
|
||||||
if(sst->source[sst->idx + i] != sst->delimiter[i]) {
|
|
||||||
_ok = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//find the delimiter here,
|
|
||||||
//break the loop and self plus the sst->idx, then return the buffer .
|
|
||||||
if(_ok == 1) {
|
|
||||||
sst->idx += sst->delLen;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//coy the char to the buffer
|
|
||||||
*_dst++ = sst->source[sst->idx++];
|
|
||||||
//check if reach the end of the fstring
|
|
||||||
if(sst->idx >= sst->srcLen) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*_dst = '\0';
|
|
||||||
return _dst;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
/*
|
|
||||||
* dynamatic array test program.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int main(int argc, char **args) {
|
|
||||||
|
|
||||||
//create a new array list.
|
|
||||||
friso_array_t array = new_array_list();
|
|
||||||
fstring keys[] = {
|
|
||||||
"chenmanwen", "yangqinghua",
|
|
||||||
"chenxin", "luojiangyan", "xiaoyanzi", "bibi",
|
|
||||||
"zhangrenfang", "yangjian",
|
|
||||||
"liuxiao", "pankai",
|
|
||||||
"chenpei", "liheng", "zhangzhigang", "zhgangyishao", "yangjiangbo",
|
|
||||||
"caizaili", "panpan", "xiaolude", "yintanwen"
|
|
||||||
};
|
|
||||||
int j, idx = 2, len = sizeof(keys) / sizeof(fstring);
|
|
||||||
|
|
||||||
for(j = 0; j < len; j++) {
|
|
||||||
array_list_add(array, keys[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("length=%d, allocations=%d\n", array->length, array->allocs);
|
|
||||||
array_list_trim(array);
|
|
||||||
printf("after tirm length=%d, allocations=%d\n", array->length, array->allocs);
|
|
||||||
printf("idx=%d, value=%s\n", idx, (fstring) array_list_get(array, idx));
|
|
||||||
|
|
||||||
printf("\nAfter set %dth item.\n", idx);
|
|
||||||
array_list_set(array, idx, "chenxin__");
|
|
||||||
printf("idx=%d, value=%s\n", idx, (fstring) array_list_get(array, idx));
|
|
||||||
|
|
||||||
printf("\nAfter remove %dth item.\n", idx);
|
|
||||||
array_list_remove(array, idx);
|
|
||||||
printf("length=%d, allocations=%d\n", array->length, array->allocs);
|
|
||||||
printf("idx=%d, value=%s\n", idx, (fstring) array_list_get(array, idx));
|
|
||||||
|
|
||||||
printf("\nInsert a item at %dth\n", idx);
|
|
||||||
array_list_insert(array, idx, "*chenxin*");
|
|
||||||
printf("idx=%d, value=%s\n", idx, (fstring) array_list_get(array, idx));
|
|
||||||
|
|
||||||
free_array_list(array);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,161 +0,0 @@
|
||||||
/*
|
|
||||||
* Friso test program.
|
|
||||||
* Of couse you can make it a perfect demo for friso.
|
|
||||||
* all threads or proccess share the same friso_t,
|
|
||||||
* defferent threads/proccess use defferent friso_task_t.
|
|
||||||
* and you could share the friso_config_t if you wish...
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include "friso.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#define __LENGTH__ 15
|
|
||||||
#define __INPUT_LENGTH__ 20480
|
|
||||||
#define ___EXIT_INFO___ \
|
|
||||||
println("Thanks for trying friso."); \
|
|
||||||
break;
|
|
||||||
|
|
||||||
#define ___ABOUT___ \
|
|
||||||
println("+---------------------------------------------------------------+"); \
|
|
||||||
println("| Friso - a Chinese word segmentation writen by c. |"); \
|
|
||||||
println("| bug report email - chenxin619315@gmail.com. |"); \
|
|
||||||
println("| or: visit https://github.com/lionsoul2014/friso. |"); \
|
|
||||||
println("| java version for https://github.com/lionsoul2014/jcseg |"); \
|
|
||||||
println("| type 'quit' to exit the program. |"); \
|
|
||||||
println("+---------------------------------------------------------------+");
|
|
||||||
|
|
||||||
//read a line from a command line.
|
|
||||||
static fstring getLine(FILE *fp, fstring __dst) {
|
|
||||||
register int c;
|
|
||||||
register fstring cs;
|
|
||||||
|
|
||||||
cs = __dst;
|
|
||||||
while((c = getc(fp)) != EOF) {
|
|
||||||
if(c == '\n') break;
|
|
||||||
*cs++ = c;
|
|
||||||
}
|
|
||||||
*cs = '\0';
|
|
||||||
|
|
||||||
return (c == EOF && cs == __dst) ? NULL : __dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*static void printcode( fstring str ) {
|
|
||||||
int i,length;
|
|
||||||
length = strlen( str );
|
|
||||||
printf("str:length=%d\n", length );
|
|
||||||
for ( i = 0; i < length; i++ ) {
|
|
||||||
printf("%d ", str[i] );
|
|
||||||
}
|
|
||||||
putchar('\n');
|
|
||||||
}*/
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
|
|
||||||
clock_t s_time, e_time;
|
|
||||||
char line[__INPUT_LENGTH__] = {0};
|
|
||||||
int i;
|
|
||||||
fstring __path__ = NULL, mode = NULL;
|
|
||||||
|
|
||||||
friso_t friso;
|
|
||||||
friso_config_t config;
|
|
||||||
friso_task_t task;
|
|
||||||
|
|
||||||
// get the lexicon directory from command line arguments
|
|
||||||
for(i = 0; i < argc; i++) {
|
|
||||||
if(strcasecmp("-init", argv[i]) == 0) {
|
|
||||||
__path__ = argv[i + 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(__path__ == NULL) {
|
|
||||||
println("Usage: friso -init lexicon path");
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
s_time = clock();
|
|
||||||
|
|
||||||
//initialize
|
|
||||||
friso = friso_new();
|
|
||||||
config = friso_new_config();
|
|
||||||
/*friso_dic_t dic = friso_dic_new();
|
|
||||||
friso_dic_load_from_ifile( dic, __path__, __LENGTH__ );
|
|
||||||
friso_set_dic( friso, dic );
|
|
||||||
friso_set_mode( friso, __FRISO_COMPLEX_MODE__ );*/
|
|
||||||
if(friso_init_from_ifile(friso, config, __path__) != 1) {
|
|
||||||
printf("fail to initialize friso and config.\n");
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(config->mode) {
|
|
||||||
case __FRISO_SIMPLE_MODE__:
|
|
||||||
mode = "Simple";
|
|
||||||
break;
|
|
||||||
case __FRISO_COMPLEX_MODE__:
|
|
||||||
mode = "Complex";
|
|
||||||
break;
|
|
||||||
case __FRISO_DETECT_MODE__:
|
|
||||||
mode = "Detect";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//friso_set_mode( config, __FRISO_DETECT_MODE__ );
|
|
||||||
//printf("clr_stw=%d\n", friso->clr_stw);
|
|
||||||
//printf("match c++?%d\n", friso_dic_match( friso->dic, __LEX_ENPUN_WORDS__, "c++" ));
|
|
||||||
//printf("match(研究)?%d\n", friso_dic_match( friso->dic, __LEX_CJK_WORDS__, "研究"));
|
|
||||||
|
|
||||||
e_time = clock();
|
|
||||||
|
|
||||||
printf("Initialized in %fsec\n", (double)(e_time - s_time) / CLOCKS_PER_SEC);
|
|
||||||
printf("Mode: %s\n", mode);
|
|
||||||
printf("+-Version: %s (%s)\n", friso_version(), friso->charset == FRISO_UTF8 ? "UTF-8" : "GBK");
|
|
||||||
___ABOUT___;
|
|
||||||
|
|
||||||
//set the task.
|
|
||||||
task = friso_new_task();
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
print("friso>> ");
|
|
||||||
getLine(stdin, line);
|
|
||||||
//exit the programe
|
|
||||||
if(strcasecmp(line, "quit") == 0) {
|
|
||||||
___EXIT_INFO___
|
|
||||||
}
|
|
||||||
|
|
||||||
//for ( i = 0; i < 1000000; i++ ) {
|
|
||||||
//set the task text.
|
|
||||||
friso_set_text(task, line);
|
|
||||||
println("分词结果:");
|
|
||||||
|
|
||||||
s_time = clock();
|
|
||||||
while((config->next_token(friso, config, task)) != NULL) {
|
|
||||||
printf(
|
|
||||||
"%s[%d, %d, %d] ",
|
|
||||||
task->token->word,
|
|
||||||
task->token->offset,
|
|
||||||
task->token->length,
|
|
||||||
task->token->rlen
|
|
||||||
);
|
|
||||||
// printf("%s ", task->token->word);
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
e_time = clock();
|
|
||||||
printf("\nDone, cost < %fsec\n", ((double)(e_time - s_time)) / CLOCKS_PER_SEC);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
friso_free_task(task);
|
|
||||||
|
|
||||||
//error block.
|
|
||||||
err:
|
|
||||||
friso_free_config(config);
|
|
||||||
friso_free(friso);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,65 +0,0 @@
|
||||||
/**
|
|
||||||
* hashmap testing program
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
void print_hash_info(friso_hash_t _hash) {
|
|
||||||
printf("info:length=%d, size=%d, facotr=%f, threshold=%d\n", _hash->length, \
|
|
||||||
_hash->size, _hash->factor, _hash->threshold);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
friso_hash_t _hash = new_hash_table();
|
|
||||||
char *names[] = {
|
|
||||||
"陈满文", "阳清华",
|
|
||||||
"陈鑫", "罗江艳",
|
|
||||||
"小燕子", "比比",
|
|
||||||
"张仁芳", "阳建",
|
|
||||||
"陈配", "李恒",
|
|
||||||
"张志刚", "张怡少",
|
|
||||||
"阳江波", "蔡再利",
|
|
||||||
"阳绘章", "尹唐文",
|
|
||||||
"谭志鹏", "肖路德",
|
|
||||||
"潘凯", "刘潇",
|
|
||||||
"马朝辉", "张强",
|
|
||||||
"殷美林", "元明清",
|
|
||||||
"周安", "郭桥安",
|
|
||||||
"刘敏", "黄广华",
|
|
||||||
"李胜", "黄海清"
|
|
||||||
};
|
|
||||||
//char *str[] = {"陈鑫", "张仁芳", "比比"};
|
|
||||||
char **str = names;
|
|
||||||
int j, len = 30;
|
|
||||||
|
|
||||||
print_hash_info(_hash);
|
|
||||||
for(j = 0; j < len; j++) {
|
|
||||||
hash_put_mapping(_hash, names[j], names[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
print_hash_info(_hash);
|
|
||||||
|
|
||||||
printf("Press any key to continue.");
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
//remove mappings
|
|
||||||
for(j = 0; j < len; j++) {
|
|
||||||
printf("Exist %s?%2d\n", str[j], hash_exist_mapping(_hash, str[j]));
|
|
||||||
printf("Now, remove %s\n", str[j]);
|
|
||||||
hash_remove_mapping(_hash, str[j]);
|
|
||||||
printf("Exist %s?%2d\n", str[j], hash_exist_mapping(_hash, str[j]));
|
|
||||||
printf("*********************************\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Press any key to continue.");
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
print_hash_info(_hash);
|
|
||||||
//free the table
|
|
||||||
free_hash_table(_hash, 0);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,108 +0,0 @@
|
||||||
/*
|
|
||||||
* lex functions test program.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define __LENGTH__ 15
|
|
||||||
#define ___PRINT_HELP_INFO___ \
|
|
||||||
printf("1. help print the current menu.\n"); \
|
|
||||||
printf("2. #set set the classify of the dictionary.\n"); \
|
|
||||||
printf("3. other search the words in the dictionary.\n"); \
|
|
||||||
printf("4. quit exit the programe.\n");
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
lex_entry_t e;
|
|
||||||
int lex = __LEX_CJK_WORDS__;
|
|
||||||
char _line[__LENGTH__];
|
|
||||||
clock_t s_time, e_time;
|
|
||||||
friso_t friso;
|
|
||||||
friso_config_t config;
|
|
||||||
|
|
||||||
s_time = clock();
|
|
||||||
friso = friso_new();
|
|
||||||
config = friso_new_config();
|
|
||||||
config->add_syn = 0;
|
|
||||||
friso->dic = friso_dic_new();
|
|
||||||
|
|
||||||
//__CJK_WORDS__
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-main.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-admin.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-chars.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-cn-mz.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-cn-place.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-company.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-festival.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-flname.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-food.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-lang.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-nation.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-net.lex", __LENGTH__);
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_WORDS__, "../vendors/dict/UTF-8/lex-org.lex", __LENGTH__);
|
|
||||||
|
|
||||||
//__CJK_UNITS__
|
|
||||||
friso_dic_load(friso, config, __LEX_CJK_UNITS__, "../vendors/dict/UTF-8/lex-units.lex", __LENGTH__);
|
|
||||||
//__MIX_WORDS__
|
|
||||||
friso_dic_load(friso, config, __LEX_ECM_WORDS__, "../vendors/dict/UTF-8/lex-ecmixed.lex", __LENGTH__);
|
|
||||||
//__CN_LNAME__
|
|
||||||
friso_dic_load(friso, config, __LEX_CN_LNAME__, "../vendors/dict/UTF-8/lex-lname.lex", __LENGTH__);
|
|
||||||
//__CN_SNAME__
|
|
||||||
friso_dic_load(friso, config, __LEX_CN_SNAME__, "../vendors/dict/UTF-8/lex-sname.lex", __LENGTH__);
|
|
||||||
//__CN_DNAME1__
|
|
||||||
friso_dic_load(friso, config, __LEX_CN_DNAME1__, "../vendors/dict/UTF-8/lex-dname-1.lex", __LENGTH__);
|
|
||||||
//__CN_DNAME2__
|
|
||||||
friso_dic_load(friso, config, __LEX_CN_DNAME2__, "../vendors/dict/UTF-8/lex-dname-2.lex", __LENGTH__);
|
|
||||||
//__CN_LNA__
|
|
||||||
friso_dic_load(friso, config, __LEX_CN_LNA__, "../vendors/dict/UTF-8/lex-ln-adorn.lex", __LENGTH__);
|
|
||||||
|
|
||||||
e_time = clock();
|
|
||||||
printf(
|
|
||||||
"Done, cost: %f sec, size=%d\n",
|
|
||||||
(double)(e_time - s_time) / CLOCKS_PER_SEC,
|
|
||||||
friso_all_dic_size(friso->dic)
|
|
||||||
);
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
printf("friso-%d>> ", lex);
|
|
||||||
if(scanf("%s", _line) != 1) {
|
|
||||||
printf("Invalid input\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(strcmp(_line, "quit") == 0) {
|
|
||||||
break;
|
|
||||||
} else if(strcmp(_line, "help") == 0) {
|
|
||||||
___PRINT_HELP_INFO___
|
|
||||||
} else if(strcmp(_line, "#set") == 0) {
|
|
||||||
printf("lex_t>> ");
|
|
||||||
if(scanf("%d", &lex) != 1) {
|
|
||||||
printf("Warning: Invalid lex type input\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
s_time = clock();
|
|
||||||
e = friso_dic_get(friso->dic, lex, _line);
|
|
||||||
e_time = clock();
|
|
||||||
if(e != NULL) {
|
|
||||||
printf(
|
|
||||||
"word=%s, syn=%s, fre=%d, cost:%fsec\n",
|
|
||||||
e->word, e->syn == NULL ? "NULL" : (char *)e->syn->items[0],
|
|
||||||
e->fre,
|
|
||||||
(double)(e_time - s_time) / CLOCKS_PER_SEC
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
printf("%s was not found.\n", _line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// friso_dic_free( friso->dic );
|
|
||||||
friso_free(friso);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
/*
|
|
||||||
* link list test programe.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int main(int argc, char **args) {
|
|
||||||
|
|
||||||
friso_link_t link;
|
|
||||||
fstring keys[] = {
|
|
||||||
"chenmanwen", "yangqinghua",
|
|
||||||
"chenxin", "luojiangyan", "xiaoyanzi", "bibi",
|
|
||||||
"zhangrenfang", "yangjian",
|
|
||||||
"liuxiao", "pankai",
|
|
||||||
"chenpei", "liheng", "zhangzhigang", "zhgangyishao", "yangjiangbo",
|
|
||||||
"caizaili", "panpan", "xiaolude", "yintanwen"
|
|
||||||
};
|
|
||||||
int j, len = sizeof(keys) / sizeof(fstring);
|
|
||||||
|
|
||||||
link = new_link_list();
|
|
||||||
|
|
||||||
//print the size of the link
|
|
||||||
printf("size=%d\n", link->size);
|
|
||||||
|
|
||||||
for(j = 0; j < len; j++) {
|
|
||||||
//link_add( link, keys[j] );
|
|
||||||
link_list_add_last(link, keys[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("size=%d\n", link->size);
|
|
||||||
|
|
||||||
for(j = 0; j < len / 2; j++) {
|
|
||||||
//printf("idx=%d, remove %s\n", j, ( fstring ) link_remove( link, 0 ) );
|
|
||||||
printf("idx=%d, remove %s\n", j, (fstring) link_list_remove_first(link));
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("size=%d\n", link->size);
|
|
||||||
|
|
||||||
//clear all the nodes
|
|
||||||
link_list_clear(link);
|
|
||||||
printf("size=%d, head->next->value=%s\n", link->size, (fstring) link->head->next->value);
|
|
||||||
|
|
||||||
free_link_list(link);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
/**
|
|
||||||
* friso fstring split test program .
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int main(int argc, char **args) {
|
|
||||||
fstring source = ",I am a chinese,,my name is Lion,and i am the author of friso,bug report email chenxin619315@gmail.com,qq:1187582057";
|
|
||||||
char buffer[128];
|
|
||||||
string_split_t split = new_string_split(",", source);
|
|
||||||
|
|
||||||
printf("sst->idx=%d\n", split->idx);
|
|
||||||
printf("sst->srcLen=%d\n", split->srcLen);
|
|
||||||
printf("sst->delLen=%d\n", split->delLen);
|
|
||||||
|
|
||||||
while(string_split_next(split, buffer) != NULL) {
|
|
||||||
printf("buffer:%s\n", buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
free_string_split(split);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
/*
|
|
||||||
* fstring handle mode test program.
|
|
||||||
*
|
|
||||||
* @author lionsoul<chenxin619315@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "friso_API.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
int main(int argc, char **args) {
|
|
||||||
|
|
||||||
fstring str = "康熙字典部首, 符号和标点, 统一表意符号扩展 A ,CJK㈩兼Ⅱ容形式⑩.";
|
|
||||||
char word[4];
|
|
||||||
int bytes, t, j, length = strlen(str);
|
|
||||||
string_buffer_t sb = new_string_buffer();
|
|
||||||
|
|
||||||
printf("str=%s, length=%d\n", str, length);
|
|
||||||
|
|
||||||
|
|
||||||
for(t = 0; t < length; t += bytes) {
|
|
||||||
bytes = get_utf8_bytes(*(str + t));
|
|
||||||
if(bytes == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(j = 0; j < bytes; j++) {
|
|
||||||
word[j] = *(str + t + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
word[j] = '\0';
|
|
||||||
string_buffer_append(sb, word);
|
|
||||||
printf("word=%s\n", word);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("length=%d, buffer=%s\n", sb->length, sb->buffer);
|
|
||||||
string_buffer_remove(sb, 0, 3);
|
|
||||||
printf("length=%d, buffer=%s\n", sb->length, sb->buffer);
|
|
||||||
string_buffer_remove(sb, 0, 3);
|
|
||||||
printf("length=%d, buffer=%s\n", sb->length, sb->buffer);
|
|
||||||
string_buffer_remove(sb, sb->length - 3, 6);
|
|
||||||
sb = string_buffer_trim(sb);
|
|
||||||
printf("length=%d, buffer=%s\n", sb->length, string_buffer_devote(sb));
|
|
||||||
|
|
||||||
//00011110 - yuan ma
|
|
||||||
//11100001 - fa ma
|
|
||||||
//11100010 - bu ma
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,65 +0,0 @@
|
||||||
# friso lexicon configure file.
|
|
||||||
# @email chenxin619315@gmail.com
|
|
||||||
# @date 2012-12-19
|
|
||||||
# main lexion
|
|
||||||
__LEX_CJK_WORDS__ :[
|
|
||||||
lex-main.lex;
|
|
||||||
lex-admin.lex;
|
|
||||||
lex-chars.lex;
|
|
||||||
lex-cn-mz.lex;
|
|
||||||
lex-cn-place.lex;
|
|
||||||
lex-company.lex;
|
|
||||||
lex-festival.lex;
|
|
||||||
lex-flname.lex;
|
|
||||||
lex-food.lex;
|
|
||||||
lex-lang.lex;
|
|
||||||
lex-nation.lex;
|
|
||||||
lex-net.lex;
|
|
||||||
lex-org.lex;
|
|
||||||
lex-touris.lex;
|
|
||||||
# add more here
|
|
||||||
]
|
|
||||||
# single chinese unit lexicon
|
|
||||||
__LEX_CJK_UNITS__ :[
|
|
||||||
lex-units.lex;
|
|
||||||
]
|
|
||||||
# chinese and english mixed word lexicon like "b超".
|
|
||||||
__LEX_ECM_WORDS__:[
|
|
||||||
lex-ecmixed.lex;
|
|
||||||
]
|
|
||||||
# english and chinese mixed word lexicon like "卡拉ok".
|
|
||||||
__LEX_CEM_WORDS__:[
|
|
||||||
lex-cemixed.lex;
|
|
||||||
]
|
|
||||||
# chinese last name lexicon.
|
|
||||||
__LEX_CN_LNAME__:[
|
|
||||||
lex-lname.lex;
|
|
||||||
]
|
|
||||||
# single name words lexicon.
|
|
||||||
__LEX_CN_SNAME__:[
|
|
||||||
lex-sname.lex;
|
|
||||||
]
|
|
||||||
# first word of a double chinese name.
|
|
||||||
__LEX_CN_DNAME1__:[
|
|
||||||
lex-dname-1.lex;
|
|
||||||
]
|
|
||||||
# second word of a double chinese name.
|
|
||||||
__LEX_CN_DNAME2__:[
|
|
||||||
lex-dname-2.lex;
|
|
||||||
]
|
|
||||||
# chinese last name decorate word.
|
|
||||||
__LEX_CN_LNA__:[
|
|
||||||
lex-ln-adorn.lex;
|
|
||||||
]
|
|
||||||
# stopwords lexicon
|
|
||||||
__LEX_STOPWORDS__:[
|
|
||||||
lex-stopword.lex;
|
|
||||||
]
|
|
||||||
# english and punctuation mixed words lexicon.
|
|
||||||
__LEX_ENPUN_WORDS__:[
|
|
||||||
lex-en-pun.lex;
|
|
||||||
]
|
|
||||||
# english words(for synonyms words)
|
|
||||||
__LEX_EN_WORDS__:[
|
|
||||||
lex-en.lex;
|
|
||||||
]
|
|
|
@ -1,27 +0,0 @@
|
||||||
人事部/人事管理部门,人事管理部
|
|
||||||
人事管理部/人事管理部门,人事部
|
|
||||||
人事管理部/事管理部门,人事部
|
|
||||||
信息产业部/null
|
|
||||||
农业部/null
|
|
||||||
医管局/医疗管理部门,医疗管理部
|
|
||||||
医疗管理部/医疗管理部门,医管局
|
|
||||||
医疗管理部门/医管局,医疗管理部
|
|
||||||
发改委/null
|
|
||||||
国土资源部/null
|
|
||||||
国防部/人民武装力量部,军事部,防卫厅
|
|
||||||
军事部/人民武装力量部,防卫厅
|
|
||||||
外交部/国务院,政治部,对外关系部,外务省
|
|
||||||
外交部长/null
|
|
||||||
教育部/null
|
|
||||||
文化部/null
|
|
||||||
民政部/null
|
|
||||||
能源部/null
|
|
||||||
财政部/null
|
|
||||||
铁道部/null
|
|
||||||
防卫厅/null
|
|
||||||
防卫省/null
|
|
||||||
革命委员会/null
|
|
||||||
交通运输部/null
|
|
||||||
对外经济贸易部/null
|
|
||||||
技术部/null
|
|
||||||
总装备部/null
|
|
|
@ -1,6 +0,0 @@
|
||||||
#中文英文混合词词库
|
|
||||||
卡拉ok/null
|
|
||||||
漂亮mm/null
|
|
||||||
拳皇ova/拳皇动漫
|
|
||||||
奇都ktv/null
|
|
||||||
哆啦a梦/null
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,168 +0,0 @@
|
||||||
汉族/null
|
|
||||||
汉族人/null
|
|
||||||
汉族语/null
|
|
||||||
蒙古族/null
|
|
||||||
蒙古族人/null
|
|
||||||
蒙古族语/null
|
|
||||||
满族/null
|
|
||||||
满族人/null
|
|
||||||
满族语/null
|
|
||||||
朝鲜族/null
|
|
||||||
朝鲜族人/null
|
|
||||||
朝鲜族语/null
|
|
||||||
赫哲族/null
|
|
||||||
赫哲族人/null
|
|
||||||
赫哲族语/null
|
|
||||||
达斡尔族/null
|
|
||||||
达斡尔族人/null
|
|
||||||
达斡尔族语/null
|
|
||||||
鄂温克族/null
|
|
||||||
鄂温克族人/null
|
|
||||||
鄂温克族语/null
|
|
||||||
鄂伦春族/null
|
|
||||||
鄂伦春族人/null
|
|
||||||
鄂伦春族语/null
|
|
||||||
回族/null
|
|
||||||
回族人/null
|
|
||||||
回族语/null
|
|
||||||
东乡族/null
|
|
||||||
东乡族人/null
|
|
||||||
东乡族语/null
|
|
||||||
土族/null
|
|
||||||
土族人/null
|
|
||||||
土族语/null
|
|
||||||
撒拉族/null
|
|
||||||
撒拉族人/null
|
|
||||||
撒拉族语/null
|
|
||||||
保安族/null
|
|
||||||
保安族人/null
|
|
||||||
保安族语/null
|
|
||||||
裕固族/null
|
|
||||||
裕固族人/null
|
|
||||||
裕固族语/null
|
|
||||||
维吾尔族/null
|
|
||||||
维吾尔族人/null
|
|
||||||
维吾尔族语/null
|
|
||||||
哈萨克族/null
|
|
||||||
哈萨克族人/null
|
|
||||||
哈萨克族语/null
|
|
||||||
柯尔克孜族/null
|
|
||||||
柯尔克孜族人/null
|
|
||||||
柯尔克孜族语/null
|
|
||||||
锡伯族/null
|
|
||||||
锡伯族人/null
|
|
||||||
锡伯族语/null
|
|
||||||
塔吉克族/null
|
|
||||||
塔吉克族人/null
|
|
||||||
塔吉克族语/null
|
|
||||||
乌孜别克族/null
|
|
||||||
乌孜别克族人/null
|
|
||||||
乌孜别克族语/null
|
|
||||||
俄罗斯族/null
|
|
||||||
俄罗斯族人/null
|
|
||||||
俄罗斯族语/null
|
|
||||||
塔塔尔族/null
|
|
||||||
塔塔尔族人/null
|
|
||||||
塔塔尔族语/null
|
|
||||||
藏族/null
|
|
||||||
藏族人/null
|
|
||||||
藏族语/null
|
|
||||||
门巴族/null
|
|
||||||
门巴族人/null
|
|
||||||
门巴族语/null
|
|
||||||
珞巴族/null
|
|
||||||
珞巴族人/null
|
|
||||||
珞巴族语/null
|
|
||||||
羌族/null
|
|
||||||
羌族人/null
|
|
||||||
羌族语/null
|
|
||||||
彝族/null
|
|
||||||
彝族人/null
|
|
||||||
彝族语/null
|
|
||||||
白族/null
|
|
||||||
白族人/null
|
|
||||||
白族语/null
|
|
||||||
哈尼族/null
|
|
||||||
哈尼族人/null
|
|
||||||
哈尼族语/null
|
|
||||||
傣族/null
|
|
||||||
傣族人/null
|
|
||||||
傣族语/null
|
|
||||||
僳僳族/null
|
|
||||||
僳僳族人/null
|
|
||||||
僳僳族语/null
|
|
||||||
佤族/null
|
|
||||||
佤族人/null
|
|
||||||
佤族语/null
|
|
||||||
拉祜族/null
|
|
||||||
拉祜族人/null
|
|
||||||
拉祜族语/null
|
|
||||||
纳西族/null
|
|
||||||
纳西族人/null
|
|
||||||
纳西族语/null
|
|
||||||
景颇族/null
|
|
||||||
景颇族人/null
|
|
||||||
景颇族语/null
|
|
||||||
布朗族/null
|
|
||||||
布朗族人/null
|
|
||||||
布朗族语/null
|
|
||||||
阿昌族/null
|
|
||||||
阿昌族人/null
|
|
||||||
阿昌族语/null
|
|
||||||
普米族/null
|
|
||||||
普米族人/null
|
|
||||||
普米族语/null
|
|
||||||
怒族/null
|
|
||||||
怒族人/null
|
|
||||||
怒族语/null
|
|
||||||
德昂族/null
|
|
||||||
德昂族人/null
|
|
||||||
德昂族语/null
|
|
||||||
独龙族/null
|
|
||||||
独龙族人/null
|
|
||||||
独龙族语/null
|
|
||||||
基诺族/null
|
|
||||||
基诺族人/null
|
|
||||||
基诺族语/null
|
|
||||||
苗族/null
|
|
||||||
苗族人/null
|
|
||||||
苗族语/null
|
|
||||||
布依族/null
|
|
||||||
布依族人/null
|
|
||||||
布依族语/null
|
|
||||||
侗族/null
|
|
||||||
侗族人/null
|
|
||||||
侗族语/null
|
|
||||||
水族/null
|
|
||||||
水族人/null
|
|
||||||
水族语/null
|
|
||||||
仡佬族/null
|
|
||||||
仡佬族人/null
|
|
||||||
仡佬族语/null
|
|
||||||
壮族/null
|
|
||||||
壮族人/null
|
|
||||||
壮族语/null
|
|
||||||
瑶族/null
|
|
||||||
瑶族人/null
|
|
||||||
瑶族语/null
|
|
||||||
仫佬族/null
|
|
||||||
仫佬族人/null
|
|
||||||
仫佬族语/null
|
|
||||||
毛南族/null
|
|
||||||
毛南族人/null
|
|
||||||
毛南族语/null
|
|
||||||
京族/null
|
|
||||||
京族人/null
|
|
||||||
京族语/null
|
|
||||||
土家族/null
|
|
||||||
土家族人/null
|
|
||||||
土家族语/null
|
|
||||||
黎族/null
|
|
||||||
黎族人/null
|
|
||||||
黎族语/null
|
|
||||||
畲族/null
|
|
||||||
畲族人/null
|
|
||||||
畲族语/null
|
|
||||||
高山族/null
|
|
||||||
高山族人/null
|
|
||||||
高山族语/null
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,100 +0,0 @@
|
||||||
央视/null
|
|
||||||
电信/null
|
|
||||||
移动/null
|
|
||||||
网通/null
|
|
||||||
联通/null
|
|
||||||
铁通/null
|
|
||||||
百度/null
|
|
||||||
环球网/null
|
|
||||||
长城网/null
|
|
||||||
新浪/null
|
|
||||||
腾讯/null
|
|
||||||
搜搜/soso
|
|
||||||
谷歌/null
|
|
||||||
雅虎/null
|
|
||||||
微软/null
|
|
||||||
中关村/null
|
|
||||||
搜狐/null
|
|
||||||
网易/null
|
|
||||||
硅谷/null
|
|
||||||
维基百科/null
|
|
||||||
巨人网络/null
|
|
||||||
阿里巴巴/null
|
|
||||||
阿里旺旺/旺旺
|
|
||||||
旺旺/null
|
|
||||||
淘宝/null
|
|
||||||
赶集网/null
|
|
||||||
猪八戒网/null
|
|
||||||
唯你英语/null
|
|
||||||
拉手网/null
|
|
||||||
百贯福泰/null
|
|
||||||
汇划算/null
|
|
||||||
汇划算网/null
|
|
||||||
聚划算/null
|
|
||||||
天猫/null
|
|
||||||
天猫网/null
|
|
||||||
亚马逊/null
|
|
||||||
亚马逊网/null
|
|
||||||
拍拍/null
|
|
||||||
拍拍网/null
|
|
||||||
京东/null
|
|
||||||
京东商城/null
|
|
||||||
返利网/null
|
|
||||||
支付宝/null
|
|
||||||
支付宝担保/null
|
|
||||||
支付宝及时到帐/null
|
|
||||||
支付宝双工能/null
|
|
||||||
财付通/null
|
|
||||||
财付通及时到帐/null
|
|
||||||
网银在线/null
|
|
||||||
苏宁易购/null
|
|
||||||
苏宁电器/null
|
|
||||||
仙童公司/null
|
|
||||||
开源中国/null
|
|
||||||
畅想网络/null
|
|
||||||
快乐大本营/null
|
|
||||||
越策越开心/null
|
|
||||||
超级男声/null
|
|
||||||
超男/null
|
|
||||||
超级女声/超女
|
|
||||||
超女/超级女声
|
|
||||||
好声音/null
|
|
||||||
快乐男声/快男
|
|
||||||
快男/快乐男声
|
|
||||||
快乐女声/null
|
|
||||||
快女/null
|
|
||||||
德克士/null
|
|
||||||
肯德基/null
|
|
||||||
奥利奥/null
|
|
||||||
回头客/null
|
|
||||||
苏波尔/null
|
|
||||||
苏宁/null
|
|
||||||
苏宁电器/null
|
|
||||||
苏宁易购/null
|
|
||||||
中央银行/null
|
|
||||||
人民银行/null
|
|
||||||
工商银行/null
|
|
||||||
农业银行/null
|
|
||||||
中国银行/null
|
|
||||||
建设银行/null
|
|
||||||
交通银行/null
|
|
||||||
华夏银行/null
|
|
||||||
光大银行/null
|
|
||||||
招商银行/null
|
|
||||||
中信银行/null
|
|
||||||
兴业银行/null
|
|
||||||
民生银行/null
|
|
||||||
深圳发展银行/null
|
|
||||||
广东发展银行/null
|
|
||||||
上海浦东发展银行/null
|
|
||||||
恒丰银行/null
|
|
||||||
农业发展银行/null
|
|
||||||
国家进出口信贷银行/null
|
|
||||||
国家开发银行/null
|
|
||||||
北京商业银行/null
|
|
||||||
上海银行/null
|
|
||||||
济南商业银行/null
|
|
||||||
信用社/null
|
|
||||||
农村信用社/null
|
|
||||||
邮政局/null
|
|
||||||
邮政储蓄银行/null
|
|
|
@ -1,210 +0,0 @@
|
||||||
#双姓名首字词库
|
|
||||||
建
|
|
||||||
小
|
|
||||||
晓
|
|
||||||
文
|
|
||||||
志
|
|
||||||
国
|
|
||||||
玉
|
|
||||||
丽
|
|
||||||
永
|
|
||||||
海
|
|
||||||
春
|
|
||||||
金
|
|
||||||
明
|
|
||||||
新
|
|
||||||
德
|
|
||||||
秀
|
|
||||||
红
|
|
||||||
亚
|
|
||||||
伟
|
|
||||||
雪
|
|
||||||
俊
|
|
||||||
桂
|
|
||||||
爱
|
|
||||||
美
|
|
||||||
世
|
|
||||||
正
|
|
||||||
庆
|
|
||||||
学
|
|
||||||
家
|
|
||||||
立
|
|
||||||
淑
|
|
||||||
振
|
|
||||||
云
|
|
||||||
华
|
|
||||||
光
|
|
||||||
惠
|
|
||||||
兴
|
|
||||||
天
|
|
||||||
长
|
|
||||||
艳
|
|
||||||
慧
|
|
||||||
利
|
|
||||||
宏
|
|
||||||
佳
|
|
||||||
瑞
|
|
||||||
凤
|
|
||||||
荣
|
|
||||||
秋
|
|
||||||
继
|
|
||||||
嘉
|
|
||||||
卫
|
|
||||||
燕
|
|
||||||
思
|
|
||||||
维
|
|
||||||
少
|
|
||||||
福
|
|
||||||
忠
|
|
||||||
宝
|
|
||||||
子
|
|
||||||
成
|
|
||||||
月
|
|
||||||
洪
|
|
||||||
东
|
|
||||||
一
|
|
||||||
泽
|
|
||||||
林
|
|
||||||
大
|
|
||||||
素
|
|
||||||
旭
|
|
||||||
宇
|
|
||||||
智
|
|
||||||
锦
|
|
||||||
冬
|
|
||||||
玲
|
|
||||||
雅
|
|
||||||
伯
|
|
||||||
翠
|
|
||||||
传
|
|
||||||
启
|
|
||||||
剑
|
|
||||||
安
|
|
||||||
树
|
|
||||||
良
|
|
||||||
中
|
|
||||||
梦
|
|
||||||
广
|
|
||||||
昌
|
|
||||||
元
|
|
||||||
万
|
|
||||||
清
|
|
||||||
静
|
|
||||||
友
|
|
||||||
宗
|
|
||||||
兆
|
|
||||||
丹
|
|
||||||
克
|
|
||||||
彩
|
|
||||||
绍
|
|
||||||
喜
|
|
||||||
远
|
|
||||||
朝
|
|
||||||
敏
|
|
||||||
培
|
|
||||||
胜
|
|
||||||
祖
|
|
||||||
先
|
|
||||||
菊
|
|
||||||
士
|
|
||||||
向
|
|
||||||
有
|
|
||||||
连
|
|
||||||
军
|
|
||||||
健
|
|
||||||
巧
|
|
||||||
耀
|
|
||||||
莉
|
|
||||||
英
|
|
||||||
方
|
|
||||||
和
|
|
||||||
仁
|
|
||||||
孝
|
|
||||||
梅
|
|
||||||
汉
|
|
||||||
兰
|
|
||||||
松
|
|
||||||
水
|
|
||||||
江
|
|
||||||
益
|
|
||||||
开
|
|
||||||
景
|
|
||||||
运
|
|
||||||
贵
|
|
||||||
祥
|
|
||||||
青
|
|
||||||
芳
|
|
||||||
碧
|
|
||||||
婷
|
|
||||||
龙
|
|
||||||
鹏
|
|
||||||
自
|
|
||||||
顺
|
|
||||||
双
|
|
||||||
书
|
|
||||||
生
|
|
||||||
义
|
|
||||||
跃
|
|
||||||
银
|
|
||||||
佩
|
|
||||||
雨
|
|
||||||
保
|
|
||||||
贤
|
|
||||||
仲
|
|
||||||
鸿
|
|
||||||
浩
|
|
||||||
加
|
|
||||||
定
|
|
||||||
炳
|
|
||||||
飞
|
|
||||||
锡
|
|
||||||
柏
|
|
||||||
发
|
|
||||||
超
|
|
||||||
道
|
|
||||||
怀
|
|
||||||
进
|
|
||||||
其
|
|
||||||
富
|
|
||||||
平
|
|
||||||
全
|
|
||||||
阳
|
|
||||||
吉
|
|
||||||
茂
|
|
||||||
彦
|
|
||||||
诗
|
|
||||||
洁
|
|
||||||
润
|
|
||||||
承
|
|
||||||
治
|
|
||||||
焕
|
|
||||||
如
|
|
||||||
君
|
|
||||||
增
|
|
||||||
善
|
|
||||||
希
|
|
||||||
根
|
|
||||||
应
|
|
||||||
勇
|
|
||||||
宜
|
|
||||||
守
|
|
||||||
会
|
|
||||||
凯
|
|
||||||
育
|
|
||||||
湘
|
|
||||||
凌
|
|
||||||
本
|
|
||||||
敬
|
|
||||||
博
|
|
||||||
延
|
|
||||||
乐
|
|
||||||
三
|
|
||||||
高
|
|
||||||
熙
|
|
||||||
逸
|
|
||||||
幸
|
|
||||||
灵
|
|
||||||
宣
|
|
||||||
才
|
|
||||||
述
|
|
||||||
化
|
|
|
@ -1,211 +0,0 @@
|
||||||
#双姓名尾字词库
|
|
||||||
华
|
|
||||||
平
|
|
||||||
明
|
|
||||||
英
|
|
||||||
军
|
|
||||||
林
|
|
||||||
萍
|
|
||||||
芳
|
|
||||||
玲
|
|
||||||
红
|
|
||||||
生
|
|
||||||
霞
|
|
||||||
梅
|
|
||||||
文
|
|
||||||
荣
|
|
||||||
珍
|
|
||||||
兰
|
|
||||||
娟
|
|
||||||
峰
|
|
||||||
琴
|
|
||||||
云
|
|
||||||
辉
|
|
||||||
东
|
|
||||||
龙
|
|
||||||
敏
|
|
||||||
伟
|
|
||||||
强
|
|
||||||
丽
|
|
||||||
春
|
|
||||||
杰
|
|
||||||
燕
|
|
||||||
民
|
|
||||||
君
|
|
||||||
波
|
|
||||||
国
|
|
||||||
芬
|
|
||||||
清
|
|
||||||
祥
|
|
||||||
斌
|
|
||||||
婷
|
|
||||||
飞
|
|
||||||
良
|
|
||||||
忠
|
|
||||||
新
|
|
||||||
凤
|
|
||||||
锋
|
|
||||||
成
|
|
||||||
勇
|
|
||||||
刚
|
|
||||||
玉
|
|
||||||
元
|
|
||||||
宇
|
|
||||||
海
|
|
||||||
兵
|
|
||||||
安
|
|
||||||
庆
|
|
||||||
涛
|
|
||||||
鹏
|
|
||||||
亮
|
|
||||||
青
|
|
||||||
阳
|
|
||||||
艳
|
|
||||||
松
|
|
||||||
江
|
|
||||||
莲
|
|
||||||
娜
|
|
||||||
兴
|
|
||||||
光
|
|
||||||
德
|
|
||||||
武
|
|
||||||
香
|
|
||||||
俊
|
|
||||||
秀
|
|
||||||
慧
|
|
||||||
雄
|
|
||||||
才
|
|
||||||
宏
|
|
||||||
群
|
|
||||||
琼
|
|
||||||
胜
|
|
||||||
超
|
|
||||||
彬
|
|
||||||
莉
|
|
||||||
中
|
|
||||||
山
|
|
||||||
富
|
|
||||||
花
|
|
||||||
宁
|
|
||||||
利
|
|
||||||
贵
|
|
||||||
福
|
|
||||||
发
|
|
||||||
义
|
|
||||||
蓉
|
|
||||||
喜
|
|
||||||
娥
|
|
||||||
昌
|
|
||||||
仁
|
|
||||||
志
|
|
||||||
全
|
|
||||||
宝
|
|
||||||
权
|
|
||||||
美
|
|
||||||
琳
|
|
||||||
建
|
|
||||||
金
|
|
||||||
贤
|
|
||||||
星
|
|
||||||
丹
|
|
||||||
根
|
|
||||||
和
|
|
||||||
珠
|
|
||||||
康
|
|
||||||
菊
|
|
||||||
琪
|
|
||||||
坤
|
|
||||||
泉
|
|
||||||
秋
|
|
||||||
静
|
|
||||||
佳
|
|
||||||
顺
|
|
||||||
源
|
|
||||||
珊
|
|
||||||
达
|
|
||||||
欣
|
|
||||||
如
|
|
||||||
莹
|
|
||||||
章
|
|
||||||
浩
|
|
||||||
勤
|
|
||||||
芹
|
|
||||||
容
|
|
||||||
友
|
|
||||||
芝
|
|
||||||
豪
|
|
||||||
洁
|
|
||||||
鑫
|
|
||||||
惠
|
|
||||||
洪
|
|
||||||
旺
|
|
||||||
虎
|
|
||||||
远
|
|
||||||
妮
|
|
||||||
森
|
|
||||||
妹
|
|
||||||
南
|
|
||||||
雯
|
|
||||||
奇
|
|
||||||
健
|
|
||||||
卿
|
|
||||||
虹
|
|
||||||
娇
|
|
||||||
媛
|
|
||||||
怡
|
|
||||||
铭
|
|
||||||
川
|
|
||||||
进
|
|
||||||
博
|
|
||||||
智
|
|
||||||
来
|
|
||||||
琦
|
|
||||||
学
|
|
||||||
聪
|
|
||||||
洋
|
|
||||||
乐
|
|
||||||
年
|
|
||||||
翔
|
|
||||||
然
|
|
||||||
栋
|
|
||||||
凯
|
|
||||||
颖
|
|
||||||
鸣
|
|
||||||
丰
|
|
||||||
瑞
|
|
||||||
奎
|
|
||||||
立
|
|
||||||
堂
|
|
||||||
威
|
|
||||||
雪
|
|
||||||
鸿
|
|
||||||
晶
|
|
||||||
桂
|
|
||||||
凡
|
|
||||||
娣
|
|
||||||
先
|
|
||||||
洲
|
|
||||||
毅
|
|
||||||
雅
|
|
||||||
月
|
|
||||||
旭
|
|
||||||
田
|
|
||||||
晖
|
|
||||||
方
|
|
||||||
恒
|
|
||||||
亚
|
|
||||||
泽
|
|
||||||
风
|
|
||||||
银
|
|
||||||
高
|
|
||||||
贞
|
|
||||||
九
|
|
||||||
薇
|
|
||||||
钰
|
|
||||||
城
|
|
||||||
宜
|
|
||||||
厚
|
|
||||||
耐
|
|
||||||
声
|
|
||||||
腾
|
|
||||||
宸
|
|
|
@ -1,131 +0,0 @@
|
||||||
#英文中文混合字, 注意英文字符均为小写
|
|
||||||
a咖/主角
|
|
||||||
a片/毛片,av
|
|
||||||
a座/null
|
|
||||||
a股/股票
|
|
||||||
a型/null
|
|
||||||
a杯/a罩杯
|
|
||||||
a罩杯/a杯
|
|
||||||
a计划/null
|
|
||||||
aa制/null
|
|
||||||
ab型/null
|
|
||||||
ab档案/null
|
|
||||||
a美a/null
|
|
||||||
a梦/null
|
|
||||||
x-射线/null
|
|
||||||
#
|
|
||||||
b座/null
|
|
||||||
b股/null
|
|
||||||
b型/null
|
|
||||||
b树/null
|
|
||||||
b计划/null
|
|
||||||
b超/null
|
|
||||||
b杯/b罩杯
|
|
||||||
b罩杯/b杯
|
|
||||||
bb机/call机
|
|
||||||
bb仔/null
|
|
||||||
bp机/null
|
|
||||||
#
|
|
||||||
c盘/null
|
|
||||||
c座/null
|
|
||||||
c语言/null
|
|
||||||
c杯/c罩杯
|
|
||||||
c罩杯/c杯
|
|
||||||
cd盒/null
|
|
||||||
cd机/null
|
|
||||||
call机/bb机
|
|
||||||
#
|
|
||||||
d盘/null
|
|
||||||
d座/null
|
|
||||||
d版/null
|
|
||||||
d杯/d罩杯
|
|
||||||
d罩杯/d杯
|
|
||||||
dna鉴定/null
|
|
||||||
#
|
|
||||||
e盘/null
|
|
||||||
e座/null
|
|
||||||
e化/null
|
|
||||||
e通/null
|
|
||||||
e仔/null
|
|
||||||
e语言/易语言
|
|
||||||
e杯/e罩杯
|
|
||||||
e罩杯/e杯
|
|
||||||
#
|
|
||||||
f盘/null
|
|
||||||
f座/null
|
|
||||||
f杯/f罩杯
|
|
||||||
f罩杯/f杯
|
|
||||||
#
|
|
||||||
g盘/null
|
|
||||||
g点/null
|
|
||||||
g杯/g罩杯
|
|
||||||
g罩杯/g杯
|
|
||||||
#
|
|
||||||
h盘/null
|
|
||||||
h股/null
|
|
||||||
h杯/h罩杯
|
|
||||||
h罩杯/h杯
|
|
||||||
#
|
|
||||||
i盘/null
|
|
||||||
ic卡/null
|
|
||||||
ip卡/null
|
|
||||||
ip段/null
|
|
||||||
ip电话/null
|
|
||||||
ip地址/null
|
|
||||||
it行业/null
|
|
||||||
it民工/码农
|
|
||||||
it男/null
|
|
||||||
#
|
|
||||||
j盘/null
|
|
||||||
#
|
|
||||||
k仔/null
|
|
||||||
k盘/null
|
|
||||||
k党/null
|
|
||||||
k书/看书,搞学习
|
|
||||||
k粉/氯胺酮
|
|
||||||
k歌/唱歌,嗨歌
|
|
||||||
k他命/null
|
|
||||||
k歌之王/null
|
|
||||||
#
|
|
||||||
n年/很久
|
|
||||||
#
|
|
||||||
o型/null
|
|
||||||
#
|
|
||||||
pc机/null
|
|
||||||
ph值/null
|
|
||||||
#
|
|
||||||
sim卡/null
|
|
||||||
#
|
|
||||||
u盘/null
|
|
||||||
u形/null
|
|
||||||
usb手指/null
|
|
||||||
usb接口/null
|
|
||||||
usb插口/null
|
|
||||||
usb记忆棒/null
|
|
||||||
#
|
|
||||||
visa卡/null
|
|
||||||
v沟/null
|
|
||||||
#
|
|
||||||
z盘/null
|
|
||||||
#
|
|
||||||
q版/null
|
|
||||||
qq号/null
|
|
||||||
q立方/null
|
|
||||||
#
|
|
||||||
rss订阅/null
|
|
||||||
#
|
|
||||||
t盘/null
|
|
||||||
#
|
|
||||||
x光/null
|
|
||||||
x光线/x射线
|
|
||||||
x射线/x光线
|
|
||||||
γ射线/null
|
|
||||||
#
|
|
||||||
t恤衫/t恤
|
|
||||||
t恤/t恤衫
|
|
||||||
t字帐/null
|
|
||||||
t型台/null
|
|
||||||
#
|
|
||||||
250g硬盘/null
|
|
||||||
160g硬盘/null
|
|
||||||
500g硬盘/null
|
|
|
@ -1,6 +0,0 @@
|
||||||
#英文和标点组合成的词,英文字母统一使用小写。
|
|
||||||
c++
|
|
||||||
g++
|
|
||||||
c#
|
|
||||||
i++
|
|
||||||
x-
|
|
|
@ -1,4 +0,0 @@
|
||||||
#英文词条, 做英文词语同义词追加用
|
|
||||||
decimal/decimals,fraction
|
|
||||||
spirit/mind
|
|
||||||
admire/appreciate,like,love,enjoy
|
|
|
@ -1,186 +0,0 @@
|
||||||
七七纪念日/null
|
|
||||||
七夕/七夕情人节,情人节,中国情人节
|
|
||||||
七夕情人节/七夕,中国情人节,情人节
|
|
||||||
七夕节/七夕,情人节,中国情人节
|
|
||||||
万圣节/鬼节
|
|
||||||
世界人权日/null
|
|
||||||
世界儿歌节/null
|
|
||||||
世界儿童节/null
|
|
||||||
世界动物日/null
|
|
||||||
世界卫生日/null
|
|
||||||
世界地球日/null
|
|
||||||
世界教师日/null
|
|
||||||
世界无烟日/null
|
|
||||||
世界无童工日/null
|
|
||||||
世界林业节/null
|
|
||||||
世界森林日/null
|
|
||||||
世界水日/null
|
|
||||||
世界海洋日/null
|
|
||||||
世界湿地日/null
|
|
||||||
世界献血日/null
|
|
||||||
世界环境日/null
|
|
||||||
世界电视日/null
|
|
||||||
世界睡眠日/null
|
|
||||||
世界粮食日/null
|
|
||||||
世界精神卫生日/null
|
|
||||||
世界红十字日/null
|
|
||||||
世界问候日/null
|
|
||||||
中国人民抗日战争纪念日/null
|
|
||||||
抗日战争纪念日/null
|
|
||||||
中国国耻日/null
|
|
||||||
中国学生营养日/null
|
|
||||||
中国爱牙日/null
|
|
||||||
中国爱耳日/null
|
|
||||||
中国青年志愿者服务日/null
|
|
||||||
中国青年节/null
|
|
||||||
中秋/null
|
|
||||||
中秋节/null
|
|
||||||
人口日/null
|
|
||||||
人权日/null
|
|
||||||
儿歌节/null
|
|
||||||
儿童节/null
|
|
||||||
元宵/null
|
|
||||||
元宵节/null
|
|
||||||
元旦/null
|
|
||||||
元旦节/null
|
|
||||||
党生日/null
|
|
||||||
全国中小学生安全教育日/null
|
|
||||||
全国助残日/null
|
|
||||||
全国爱眼日/null
|
|
||||||
全国爱耳日/null
|
|
||||||
六十亿人口日/null
|
|
||||||
六四纪念日/null
|
|
||||||
冬至/null
|
|
||||||
减轻自然灾害日/null
|
|
||||||
动物日/null
|
|
||||||
助残日/null
|
|
||||||
劳动妇女节/null
|
|
||||||
劳动节/null
|
|
||||||
博物馆日/null
|
|
||||||
卫生日/null
|
|
||||||
和平日/null
|
|
||||||
国庆/null
|
|
||||||
国庆节/null
|
|
||||||
国耻日/null
|
|
||||||
国际儿童节/null
|
|
||||||
国际减轻自然灾害日/null
|
|
||||||
国际劳动妇女节/null
|
|
||||||
国际劳动节/null
|
|
||||||
国际博物馆日/null
|
|
||||||
国际和平日/null
|
|
||||||
国际奥林匹克日/null
|
|
||||||
国际妇女节/null
|
|
||||||
国际容忍日/null
|
|
||||||
国际左撇子日/null
|
|
||||||
国际志愿者日/null
|
|
||||||
国际护士节/null
|
|
||||||
国际无车日/null
|
|
||||||
国际残疾人日/null
|
|
||||||
国际母语日/null
|
|
||||||
国际气象节/null
|
|
||||||
国际消费者权益日/null
|
|
||||||
国际牛奶日/null
|
|
||||||
国际盲人节/null
|
|
||||||
国际禁毒日/null
|
|
||||||
国际老人日/null
|
|
||||||
国际臭氧层保护日/null
|
|
||||||
国际非洲儿童日/null
|
|
||||||
国际音乐日/null
|
|
||||||
国际麻风日/null
|
|
||||||
圣诞节/null
|
|
||||||
地球日/null
|
|
||||||
处暑/null
|
|
||||||
复活节/null
|
|
||||||
夏至/null
|
|
||||||
大寒/null
|
|
||||||
大暑/null
|
|
||||||
大雪/null
|
|
||||||
奥林匹克日/null
|
|
||||||
妇女节/null
|
|
||||||
三八节/null
|
|
||||||
三八妇女节/null
|
|
||||||
学生营养日/null
|
|
||||||
安全教育日/null
|
|
||||||
安全日/null
|
|
||||||
容忍日/null
|
|
||||||
寒露/null
|
|
||||||
小寒/null
|
|
||||||
小年/null
|
|
||||||
小暑/null
|
|
||||||
小满/null
|
|
||||||
小雪/null
|
|
||||||
左撇子日/null
|
|
||||||
平安夜/null
|
|
||||||
建党日/null
|
|
||||||
建军节/null
|
|
||||||
志愿人员日/null
|
|
||||||
志愿者日/null
|
|
||||||
情人节/null
|
|
||||||
惊蛰/null
|
|
||||||
愚人节/null
|
|
||||||
感恩节/null
|
|
||||||
扫房日/null
|
|
||||||
抗日战争纪念日/null
|
|
||||||
抗日纪念日/null
|
|
||||||
护士节/null
|
|
||||||
教师日/null
|
|
||||||
教师节/null
|
|
||||||
文化遗产日/null
|
|
||||||
无烟日/null
|
|
||||||
无童工日/null
|
|
||||||
无车日/null
|
|
||||||
春分/null
|
|
||||||
春节/null
|
|
||||||
植树节/null
|
|
||||||
残疾人日/null
|
|
||||||
母亲节/null
|
|
||||||
母语日/null
|
|
||||||
气象节/null
|
|
||||||
水日/null
|
|
||||||
海洋日/null
|
|
||||||
消费者权益日/null
|
|
||||||
清明/null
|
|
||||||
清明节/null
|
|
||||||
湿地日/null
|
|
||||||
爱牙日/null
|
|
||||||
爱眼日/null
|
|
||||||
爱耳日/null
|
|
||||||
父亲节/null
|
|
||||||
牛奶日/null
|
|
||||||
独立日/null
|
|
||||||
献血日/null
|
|
||||||
环境日/null
|
|
||||||
电视日/null
|
|
||||||
白露/null
|
|
||||||
盲人节/null
|
|
||||||
睡眠日/null
|
|
||||||
秋分/null
|
|
||||||
立冬/null
|
|
||||||
立夏/null
|
|
||||||
立春/null
|
|
||||||
立秋/null
|
|
||||||
端午节/null
|
|
||||||
粮食日/null
|
|
||||||
精神卫生日/null
|
|
||||||
红十字日/null
|
|
||||||
老人日/null
|
|
||||||
联合国日/null
|
|
||||||
腊八节/null
|
|
||||||
腊日/null
|
|
||||||
臭氧保护日/null
|
|
||||||
臭氧层保护日/null
|
|
||||||
芒种/null
|
|
||||||
营养日/null
|
|
||||||
谷雨/null
|
|
||||||
重阳/null
|
|
||||||
重阳节/null
|
|
||||||
问候日/null
|
|
||||||
除夕/null
|
|
||||||
雨水/null
|
|
||||||
霜降/null
|
|
||||||
青年志愿者服务日/null
|
|
||||||
青年节/null
|
|
||||||
非洲儿童日/null
|
|
||||||
音乐日/null
|
|
||||||
麻风日/null
|
|
||||||
龙头节/null
|
|
|
@ -1,11 +0,0 @@
|
||||||
#西方姓氏词库
|
|
||||||
亚历山大/null
|
|
||||||
克林顿/null
|
|
||||||
克里斯汀/null
|
|
||||||
布什/null
|
|
||||||
布莱尔/null
|
|
||||||
科特勒/null
|
|
||||||
约翰/null
|
|
||||||
约翰逊/null
|
|
||||||
蒂娜/null
|
|
||||||
安妮/null
|
|
|
@ -1,12 +0,0 @@
|
||||||
雪碧/null
|
|
||||||
可口可乐/null
|
|
||||||
冰红茶/null
|
|
||||||
奶茶/null
|
|
||||||
花生奶/null
|
|
||||||
芬达/null
|
|
||||||
珍珠奶茶/null
|
|
||||||
达利源/null
|
|
||||||
肯德鸡/null
|
|
||||||
炸薯条/null
|
|
||||||
麻辣烫/null
|
|
||||||
麻辣干锅/null
|
|
|
@ -1,20 +0,0 @@
|
||||||
中文/国语
|
|
||||||
国语/null
|
|
||||||
台湾话/台语
|
|
||||||
台语/台湾话
|
|
||||||
客家话/null
|
|
||||||
汉字/null
|
|
||||||
汉语/国语,中文
|
|
||||||
法文/法文
|
|
||||||
法语/法语
|
|
||||||
福建话/null
|
|
||||||
粤语/广东话
|
|
||||||
美语/英语,英文
|
|
||||||
英文/英语
|
|
||||||
英语/英文
|
|
||||||
西班牙语/null
|
|
||||||
闽南语/null
|
|
||||||
泰语/null
|
|
||||||
西班牙语/null
|
|
||||||
俄罗斯语/null
|
|
||||||
拉丁语/null
|
|
|
@ -1,4 +0,0 @@
|
||||||
#姓氏修饰,例如:老陈,小陈,中的老,小
|
|
||||||
#如果他已经是姓氏(lex-lname.lex中的词),则无须放在这里。
|
|
||||||
老
|
|
||||||
小
|
|
|
@ -1,513 +0,0 @@
|
||||||
#中文姓氏词库
|
|
||||||
#单姓
|
|
||||||
王
|
|
||||||
李
|
|
||||||
张
|
|
||||||
刘
|
|
||||||
陈
|
|
||||||
杨
|
|
||||||
周
|
|
||||||
黄
|
|
||||||
孙
|
|
||||||
吴
|
|
||||||
徐
|
|
||||||
赵
|
|
||||||
林
|
|
||||||
胡
|
|
||||||
朱
|
|
||||||
梁
|
|
||||||
郭
|
|
||||||
高
|
|
||||||
何
|
|
||||||
马
|
|
||||||
郑
|
|
||||||
罗
|
|
||||||
宋
|
|
||||||
唐
|
|
||||||
谢
|
|
||||||
叶
|
|
||||||
韩
|
|
||||||
任
|
|
||||||
潘
|
|
||||||
于
|
|
||||||
冯
|
|
||||||
蒋
|
|
||||||
董
|
|
||||||
吕
|
|
||||||
邓
|
|
||||||
许
|
|
||||||
曹
|
|
||||||
曾
|
|
||||||
袁
|
|
||||||
汪
|
|
||||||
程
|
|
||||||
田
|
|
||||||
彭
|
|
||||||
钟
|
|
||||||
蔡
|
|
||||||
魏
|
|
||||||
沈
|
|
||||||
方
|
|
||||||
卢
|
|
||||||
余
|
|
||||||
杜
|
|
||||||
丁
|
|
||||||
苏
|
|
||||||
贾
|
|
||||||
姚
|
|
||||||
姜
|
|
||||||
陆
|
|
||||||
戴
|
|
||||||
傅
|
|
||||||
夏
|
|
||||||
廖
|
|
||||||
萧
|
|
||||||
石
|
|
||||||
江
|
|
||||||
范
|
|
||||||
今
|
|
||||||
谭
|
|
||||||
邹
|
|
||||||
崔
|
|
||||||
薛
|
|
||||||
邱
|
|
||||||
康
|
|
||||||
史
|
|
||||||
侯
|
|
||||||
邵
|
|
||||||
熊
|
|
||||||
秦
|
|
||||||
雷
|
|
||||||
孟
|
|
||||||
庞
|
|
||||||
白
|
|
||||||
毛
|
|
||||||
郝
|
|
||||||
钱
|
|
||||||
段
|
|
||||||
俞
|
|
||||||
洪
|
|
||||||
汤
|
|
||||||
顾
|
|
||||||
贺
|
|
||||||
龚
|
|
||||||
尹
|
|
||||||
万
|
|
||||||
龙
|
|
||||||
赖
|
|
||||||
章
|
|
||||||
孔
|
|
||||||
武
|
|
||||||
邢
|
|
||||||
颜
|
|
||||||
梅
|
|
||||||
阮
|
|
||||||
黎
|
|
||||||
常
|
|
||||||
倪
|
|
||||||
施
|
|
||||||
乔
|
|
||||||
樊
|
|
||||||
严
|
|
||||||
齐
|
|
||||||
陶
|
|
||||||
#向
|
|
||||||
温
|
|
||||||
文
|
|
||||||
易
|
|
||||||
兰
|
|
||||||
闫
|
|
||||||
芦
|
|
||||||
牛
|
|
||||||
尚
|
|
||||||
安
|
|
||||||
管
|
|
||||||
殷
|
|
||||||
霍
|
|
||||||
翟
|
|
||||||
佘
|
|
||||||
葛
|
|
||||||
庄
|
|
||||||
伍
|
|
||||||
辛
|
|
||||||
练
|
|
||||||
申
|
|
||||||
付
|
|
||||||
曲
|
|
||||||
焦
|
|
||||||
项
|
|
||||||
代
|
|
||||||
鲁
|
|
||||||
季
|
|
||||||
覃
|
|
||||||
覃
|
|
||||||
毕
|
|
||||||
麦
|
|
||||||
阳
|
|
||||||
耿
|
|
||||||
舒
|
|
||||||
聂
|
|
||||||
盛
|
|
||||||
童
|
|
||||||
祝
|
|
||||||
柳
|
|
||||||
单
|
|
||||||
单
|
|
||||||
岳
|
|
||||||
骆
|
|
||||||
纪
|
|
||||||
欧
|
|
||||||
房
|
|
||||||
左
|
|
||||||
尤
|
|
||||||
凌
|
|
||||||
韦
|
|
||||||
景
|
|
||||||
詹
|
|
||||||
莫
|
|
||||||
郎
|
|
||||||
路
|
|
||||||
宁
|
|
||||||
宁
|
|
||||||
关
|
|
||||||
丛
|
|
||||||
翁
|
|
||||||
容
|
|
||||||
亢
|
|
||||||
柯
|
|
||||||
鲍
|
|
||||||
蒲
|
|
||||||
苗
|
|
||||||
牟
|
|
||||||
谷
|
|
||||||
裴
|
|
||||||
商
|
|
||||||
初
|
|
||||||
屈
|
|
||||||
成
|
|
||||||
包
|
|
||||||
游
|
|
||||||
司
|
|
||||||
祁
|
|
||||||
强
|
|
||||||
靳
|
|
||||||
甘
|
|
||||||
席
|
|
||||||
瞿
|
|
||||||
卜
|
|
||||||
褚
|
|
||||||
解
|
|
||||||
臧
|
|
||||||
时
|
|
||||||
费
|
|
||||||
班
|
|
||||||
华
|
|
||||||
全
|
|
||||||
涂
|
|
||||||
卓
|
|
||||||
党
|
|
||||||
饶
|
|
||||||
应
|
|
||||||
卫
|
|
||||||
丘
|
|
||||||
隋
|
|
||||||
米
|
|
||||||
闵
|
|
||||||
畅
|
|
||||||
喻
|
|
||||||
冉
|
|
||||||
宫
|
|
||||||
甄
|
|
||||||
宣
|
|
||||||
穆
|
|
||||||
谈
|
|
||||||
匡
|
|
||||||
帅
|
|
||||||
车
|
|
||||||
母
|
|
||||||
查
|
|
||||||
戚
|
|
||||||
符
|
|
||||||
缪
|
|
||||||
昌
|
|
||||||
娄
|
|
||||||
滕
|
|
||||||
位
|
|
||||||
奚
|
|
||||||
边
|
|
||||||
卞
|
|
||||||
桂
|
|
||||||
邝
|
|
||||||
苟
|
|
||||||
柏
|
|
||||||
井
|
|
||||||
冀
|
|
||||||
邬
|
|
||||||
吉
|
|
||||||
敖
|
|
||||||
桑
|
|
||||||
池
|
|
||||||
简
|
|
||||||
蔺
|
|
||||||
连
|
|
||||||
艾
|
|
||||||
蓝
|
|
||||||
窦
|
|
||||||
刚
|
|
||||||
封
|
|
||||||
占
|
|
||||||
迟
|
|
||||||
姬
|
|
||||||
刁
|
|
||||||
栾
|
|
||||||
冷
|
|
||||||
杭
|
|
||||||
植
|
|
||||||
郁
|
|
||||||
晋
|
|
||||||
虞
|
|
||||||
佟
|
|
||||||
苑
|
|
||||||
屠
|
|
||||||
藏
|
|
||||||
蒙
|
|
||||||
占
|
|
||||||
辜
|
|
||||||
廉
|
|
||||||
巩
|
|
||||||
麻
|
|
||||||
晏
|
|
||||||
相
|
|
||||||
师
|
|
||||||
鄢
|
|
||||||
泮
|
|
||||||
燕
|
|
||||||
岑
|
|
||||||
官
|
|
||||||
仲
|
|
||||||
羊
|
|
||||||
揭
|
|
||||||
仇
|
|
||||||
邸
|
|
||||||
宗
|
|
||||||
荆
|
|
||||||
盖
|
|
||||||
盖
|
|
||||||
粱
|
|
||||||
原
|
|
||||||
茅
|
|
||||||
荣
|
|
||||||
沙
|
|
||||||
郜
|
|
||||||
巫
|
|
||||||
鞠
|
|
||||||
罡
|
|
||||||
未
|
|
||||||
来
|
|
||||||
劳
|
|
||||||
诸
|
|
||||||
计
|
|
||||||
乐
|
|
||||||
乐
|
|
||||||
双
|
|
||||||
花
|
|
||||||
冼
|
|
||||||
尉
|
|
||||||
木
|
|
||||||
丰
|
|
||||||
寇
|
|
||||||
栗
|
|
||||||
况
|
|
||||||
干
|
|
||||||
楼
|
|
||||||
满
|
|
||||||
桑
|
|
||||||
湛
|
|
||||||
谌
|
|
||||||
储
|
|
||||||
邦
|
|
||||||
皮
|
|
||||||
楚
|
|
||||||
胥
|
|
||||||
明
|
|
||||||
平
|
|
||||||
腾
|
|
||||||
厉
|
|
||||||
仉
|
|
||||||
励
|
|
||||||
竺
|
|
||||||
闻
|
|
||||||
宇
|
|
||||||
支
|
|
||||||
都
|
|
||||||
折
|
|
||||||
旷
|
|
||||||
南
|
|
||||||
战
|
|
||||||
嵇
|
|
||||||
化
|
|
||||||
糜
|
|
||||||
衣
|
|
||||||
国
|
|
||||||
逄
|
|
||||||
门
|
|
||||||
崇
|
|
||||||
裘
|
|
||||||
薄
|
|
||||||
束
|
|
||||||
宿
|
|
||||||
东
|
|
||||||
降
|
|
||||||
逯
|
|
||||||
伊
|
|
||||||
修
|
|
||||||
粟
|
|
||||||
漆
|
|
||||||
阙
|
|
||||||
禹
|
|
||||||
先
|
|
||||||
银
|
|
||||||
台
|
|
||||||
#和
|
|
||||||
祖
|
|
||||||
惠
|
|
||||||
伦
|
|
||||||
候
|
|
||||||
阚
|
|
||||||
慕
|
|
||||||
戈
|
|
||||||
富
|
|
||||||
伏
|
|
||||||
僧
|
|
||||||
习
|
|
||||||
云
|
|
||||||
元
|
|
||||||
狄
|
|
||||||
危
|
|
||||||
雍
|
|
||||||
蔚
|
|
||||||
索
|
|
||||||
居
|
|
||||||
浦
|
|
||||||
权
|
|
||||||
税
|
|
||||||
谯
|
|
||||||
於
|
|
||||||
芮
|
|
||||||
濮
|
|
||||||
基
|
|
||||||
寿
|
|
||||||
凡
|
|
||||||
卿
|
|
||||||
酆
|
|
||||||
苻
|
|
||||||
保
|
|
||||||
郗
|
|
||||||
渠
|
|
||||||
琚
|
|
||||||
淡
|
|
||||||
由
|
|
||||||
豆
|
|
||||||
扈
|
|
||||||
仁
|
|
||||||
呼
|
|
||||||
矫
|
|
||||||
巢
|
|
||||||
盘
|
|
||||||
敬
|
|
||||||
巴
|
|
||||||
茆
|
|
||||||
鱼
|
|
||||||
戎
|
|
||||||
缠
|
|
||||||
区
|
|
||||||
幸
|
|
||||||
海
|
|
||||||
弓
|
|
||||||
阴
|
|
||||||
住
|
|
||||||
晁
|
|
||||||
菅
|
|
||||||
印
|
|
||||||
汝
|
|
||||||
历
|
|
||||||
么
|
|
||||||
乌
|
|
||||||
贡
|
|
||||||
妙
|
|
||||||
禤
|
|
||||||
荀
|
|
||||||
鹿
|
|
||||||
邰
|
|
||||||
随
|
|
||||||
雒
|
|
||||||
贝
|
|
||||||
录
|
|
||||||
鲜
|
|
||||||
茹
|
|
||||||
种
|
|
||||||
农
|
|
||||||
佐
|
|
||||||
赫
|
|
||||||
字
|
|
||||||
油
|
|
||||||
#但
|
|
||||||
綦
|
|
||||||
美
|
|
||||||
利
|
|
||||||
钮
|
|
||||||
信
|
|
||||||
勾
|
|
||||||
火
|
|
||||||
昝
|
|
||||||
圣
|
|
||||||
颉
|
|
||||||
从
|
|
||||||
靖
|
|
||||||
开
|
|
||||||
公
|
|
||||||
那
|
|
||||||
山
|
|
||||||
智
|
|
||||||
补
|
|
||||||
虎
|
|
||||||
才
|
|
||||||
布
|
|
||||||
亓
|
|
||||||
药
|
|
||||||
造
|
|
||||||
普
|
|
||||||
五
|
|
||||||
仝
|
|
||||||
扆
|
|
||||||
暴
|
|
||||||
咸
|
|
||||||
庚
|
|
||||||
奕
|
|
||||||
锺
|
|
||||||
问
|
|
||||||
招
|
|
||||||
贵
|
|
||||||
巨
|
|
||||||
檀
|
|
||||||
厚
|
|
||||||
恽
|
|
||||||
过
|
|
||||||
达
|
|
||||||
邴
|
|
||||||
洛
|
|
||||||
忻
|
|
||||||
展
|
|
||||||
户
|
|
||||||
毋
|
|
||||||
暨
|
|
||||||
#复姓
|
|
||||||
欧阳
|
|
||||||
上官
|
|
||||||
司徒
|
|
||||||
刘付
|
|
||||||
皇甫
|
|
||||||
长孙
|
|
||||||
相里
|
|
||||||
令狐
|
|
||||||
诸葛
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,54 +0,0 @@
|
||||||
东非/null
|
|
||||||
中华/null
|
|
||||||
中华/null
|
|
||||||
中华人民共和国/null
|
|
||||||
中华民国/null
|
|
||||||
中国/null
|
|
||||||
中國/null
|
|
||||||
中非/null
|
|
||||||
乌克兰/null
|
|
||||||
也门/null
|
|
||||||
以色列/null
|
|
||||||
伊拉克/null
|
|
||||||
伊朗/null
|
|
||||||
俄罗斯/null
|
|
||||||
分类/null
|
|
||||||
加拿大/null
|
|
||||||
南非/null
|
|
||||||
古巴/null
|
|
||||||
台湾/null
|
|
||||||
埃及/null
|
|
||||||
塞尔维亚/null
|
|
||||||
墨西哥/null
|
|
||||||
威尔士/null
|
|
||||||
尼日利亚/null
|
|
||||||
巴比伦/null
|
|
||||||
希腊/null
|
|
||||||
德国/null
|
|
||||||
德意志/null
|
|
||||||
意大利/null
|
|
||||||
捷克/null
|
|
||||||
日本/null
|
|
||||||
朝鲜/null
|
|
||||||
比利时/null
|
|
||||||
法兰西/null
|
|
||||||
法国/null
|
|
||||||
波兰/null
|
|
||||||
波黑/null
|
|
||||||
瑞典/null
|
|
||||||
瑞士/null
|
|
||||||
白俄罗斯/null
|
|
||||||
缅甸/null
|
|
||||||
美利坚/null
|
|
||||||
美利坚合众国/null
|
|
||||||
美国/null
|
|
||||||
老挝/null
|
|
||||||
苏格兰/null
|
|
||||||
苏联/null
|
|
||||||
英国/null
|
|
||||||
英格兰/null
|
|
||||||
葡萄牙/null
|
|
||||||
蒙古/null
|
|
||||||
西班牙/null
|
|
||||||
越南/null
|
|
||||||
韩国/null
|
|
|
@ -1,23 +0,0 @@
|
||||||
油条哥/null
|
|
||||||
活雷锋/null
|
|
||||||
夕阳红/null
|
|
||||||
帮扶村/null
|
|
||||||
后援会/null
|
|
||||||
复炸油/null
|
|
||||||
献血哥/null
|
|
||||||
放心姐/null
|
|
||||||
啃老族/null
|
|
||||||
特训班/null
|
|
||||||
平头男/null
|
|
||||||
爆头哥/null
|
|
||||||
楼主/null
|
|
||||||
有两把刷子/null
|
|
||||||
非典/null
|
|
||||||
微信/null
|
|
||||||
微博/null
|
|
||||||
吊丝/null
|
|
||||||
高富帅/null
|
|
||||||
矮穷挫/null
|
|
||||||
白富美/null
|
|
||||||
狮子的魂/null
|
|
||||||
仓老师/仓井空
|
|
|
@ -1,15 +0,0 @@
|
||||||
上海合作组织/null
|
|
||||||
世卫/null
|
|
||||||
世界卫生组织/null
|
|
||||||
世界银行/null
|
|
||||||
东盟/null
|
|
||||||
亚太经合组织/null
|
|
||||||
人权理事会/null
|
|
||||||
六方会谈/null
|
|
||||||
北约/null
|
|
||||||
哈马斯/null
|
|
||||||
安全理事会/null
|
|
||||||
安理会/null
|
|
||||||
欧佩克/null
|
|
||||||
红十字会/null
|
|
||||||
联合国/null
|
|
|
@ -1,207 +0,0 @@
|
||||||
#中文单名词库
|
|
||||||
敏
|
|
||||||
伟
|
|
||||||
勇
|
|
||||||
军
|
|
||||||
斌
|
|
||||||
静
|
|
||||||
丽
|
|
||||||
涛
|
|
||||||
芳
|
|
||||||
杰
|
|
||||||
萍
|
|
||||||
强
|
|
||||||
俊
|
|
||||||
明
|
|
||||||
燕
|
|
||||||
磊
|
|
||||||
玲
|
|
||||||
华
|
|
||||||
平
|
|
||||||
鹏
|
|
||||||
健
|
|
||||||
波
|
|
||||||
红
|
|
||||||
丹
|
|
||||||
辉
|
|
||||||
超
|
|
||||||
艳
|
|
||||||
莉
|
|
||||||
刚
|
|
||||||
娟
|
|
||||||
峰
|
|
||||||
婷
|
|
||||||
亮
|
|
||||||
洁
|
|
||||||
颖
|
|
||||||
琳
|
|
||||||
英
|
|
||||||
慧
|
|
||||||
飞
|
|
||||||
霞
|
|
||||||
浩
|
|
||||||
凯
|
|
||||||
宇
|
|
||||||
毅
|
|
||||||
林
|
|
||||||
佳
|
|
||||||
云
|
|
||||||
莹
|
|
||||||
娜
|
|
||||||
晶
|
|
||||||
洋
|
|
||||||
文
|
|
||||||
鑫
|
|
||||||
欣
|
|
||||||
琴
|
|
||||||
宁
|
|
||||||
琼
|
|
||||||
兵
|
|
||||||
青
|
|
||||||
琦
|
|
||||||
翔
|
|
||||||
彬
|
|
||||||
锋
|
|
||||||
阳
|
|
||||||
璐
|
|
||||||
旭
|
|
||||||
蕾
|
|
||||||
剑
|
|
||||||
虹
|
|
||||||
蓉
|
|
||||||
建
|
|
||||||
倩
|
|
||||||
梅
|
|
||||||
宏
|
|
||||||
威
|
|
||||||
博
|
|
||||||
君
|
|
||||||
力
|
|
||||||
龙
|
|
||||||
晨
|
|
||||||
薇
|
|
||||||
雪
|
|
||||||
琪
|
|
||||||
欢
|
|
||||||
荣
|
|
||||||
江
|
|
||||||
炜
|
|
||||||
成
|
|
||||||
庆
|
|
||||||
冰
|
|
||||||
东
|
|
||||||
帆
|
|
||||||
雷
|
|
||||||
楠
|
|
||||||
锐
|
|
||||||
进
|
|
||||||
海
|
|
||||||
凡
|
|
||||||
巍
|
|
||||||
维
|
|
||||||
迪
|
|
||||||
媛
|
|
||||||
玮
|
|
||||||
杨
|
|
||||||
群
|
|
||||||
瑛
|
|
||||||
悦
|
|
||||||
春
|
|
||||||
瑶
|
|
||||||
婧
|
|
||||||
兰
|
|
||||||
茜
|
|
||||||
松
|
|
||||||
爽
|
|
||||||
立
|
|
||||||
瑜
|
|
||||||
睿
|
|
||||||
晖
|
|
||||||
聪
|
|
||||||
帅
|
|
||||||
瑾
|
|
||||||
骏
|
|
||||||
雯
|
|
||||||
晓
|
|
||||||
昊
|
|
||||||
勤
|
|
||||||
新
|
|
||||||
瑞
|
|
||||||
岩
|
|
||||||
星
|
|
||||||
忠
|
|
||||||
志
|
|
||||||
怡
|
|
||||||
坤
|
|
||||||
康
|
|
||||||
航
|
|
||||||
利
|
|
||||||
畅
|
|
||||||
坚
|
|
||||||
雄
|
|
||||||
智
|
|
||||||
萌
|
|
||||||
哲
|
|
||||||
岚
|
|
||||||
洪
|
|
||||||
捷
|
|
||||||
珊
|
|
||||||
恒
|
|
||||||
靖
|
|
||||||
清
|
|
||||||
扬
|
|
||||||
昕
|
|
||||||
乐
|
|
||||||
武
|
|
||||||
玉
|
|
||||||
诚
|
|
||||||
菲
|
|
||||||
锦
|
|
||||||
凤
|
|
||||||
珍
|
|
||||||
晔
|
|
||||||
妍
|
|
||||||
璇
|
|
||||||
胜
|
|
||||||
菁
|
|
||||||
科
|
|
||||||
芬
|
|
||||||
露
|
|
||||||
越
|
|
||||||
彤
|
|
||||||
曦
|
|
||||||
义
|
|
||||||
良
|
|
||||||
鸣
|
|
||||||
芸
|
|
||||||
方
|
|
||||||
月
|
|
||||||
铭
|
|
||||||
光
|
|
||||||
震
|
|
||||||
冬
|
|
||||||
源
|
|
||||||
政
|
|
||||||
虎
|
|
||||||
莎
|
|
||||||
彪
|
|
||||||
蓓
|
|
||||||
钢
|
|
||||||
凌
|
|
||||||
奇
|
|
||||||
卫
|
|
||||||
彦
|
|
||||||
烨
|
|
||||||
可
|
|
||||||
黎
|
|
||||||
川
|
|
||||||
淼
|
|
||||||
惠
|
|
||||||
祥
|
|
||||||
然
|
|
||||||
三
|
|
||||||
逗
|
|
||||||
高
|
|
||||||
潇
|
|
||||||
正
|
|
||||||
硕
|
|
|
@ -1,887 +0,0 @@
|
||||||
#en-punctuation
|
|
||||||
!
|
|
||||||
"
|
|
||||||
#
|
|
||||||
$
|
|
||||||
%
|
|
||||||
&
|
|
||||||
'
|
|
||||||
(
|
|
||||||
)
|
|
||||||
*
|
|
||||||
+
|
|
||||||
,
|
|
||||||
-
|
|
||||||
.
|
|
||||||
/
|
|
||||||
#0
|
|
||||||
#1
|
|
||||||
#2
|
|
||||||
#3
|
|
||||||
#4
|
|
||||||
#5
|
|
||||||
#6
|
|
||||||
#7
|
|
||||||
#8
|
|
||||||
#9
|
|
||||||
:
|
|
||||||
;
|
|
||||||
<
|
|
||||||
=
|
|
||||||
>
|
|
||||||
?
|
|
||||||
@
|
|
||||||
[
|
|
||||||
\
|
|
||||||
]
|
|
||||||
^
|
|
||||||
_
|
|
||||||
`
|
|
||||||
#a
|
|
||||||
#b
|
|
||||||
#c
|
|
||||||
#d
|
|
||||||
#e
|
|
||||||
#f
|
|
||||||
#g
|
|
||||||
#h
|
|
||||||
#i
|
|
||||||
#j
|
|
||||||
#k
|
|
||||||
#l
|
|
||||||
#m
|
|
||||||
#n
|
|
||||||
#o
|
|
||||||
#p
|
|
||||||
#q
|
|
||||||
#r
|
|
||||||
#s
|
|
||||||
#t
|
|
||||||
#u
|
|
||||||
#v
|
|
||||||
#w
|
|
||||||
#x
|
|
||||||
#y
|
|
||||||
#z
|
|
||||||
{
|
|
||||||
|
|
|
||||||
}
|
|
||||||
~
|
|
||||||
!
|
|
||||||
#fullwidth
|
|
||||||
!
|
|
||||||
"
|
|
||||||
#
|
|
||||||
$
|
|
||||||
%
|
|
||||||
&
|
|
||||||
'
|
|
||||||
(
|
|
||||||
)
|
|
||||||
*
|
|
||||||
+
|
|
||||||
,
|
|
||||||
-
|
|
||||||
.
|
|
||||||
/
|
|
||||||
:
|
|
||||||
;
|
|
||||||
<
|
|
||||||
=
|
|
||||||
>
|
|
||||||
?
|
|
||||||
@
|
|
||||||
[
|
|
||||||
\
|
|
||||||
]
|
|
||||||
^
|
|
||||||
_
|
|
||||||
`
|
|
||||||
{
|
|
||||||
|
|
|
||||||
}
|
|
||||||
~
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
#cn-punctuation
|
|
||||||
、
|
|
||||||
。
|
|
||||||
〃
|
|
||||||
?
|
|
||||||
々
|
|
||||||
〆
|
|
||||||
〇
|
|
||||||
〈
|
|
||||||
〉
|
|
||||||
《
|
|
||||||
》
|
|
||||||
「
|
|
||||||
」
|
|
||||||
『
|
|
||||||
』
|
|
||||||
【
|
|
||||||
】
|
|
||||||
〒
|
|
||||||
〓
|
|
||||||
〔
|
|
||||||
〕
|
|
||||||
〖
|
|
||||||
〗
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
?
|
|
||||||
〝
|
|
||||||
〞
|
|
||||||
?
|
|
||||||
#中文
|
|
||||||
的
|
|
||||||
吗
|
|
||||||
不
|
|
||||||
我
|
|
||||||
们
|
|
||||||
起
|
|
||||||
就
|
|
||||||
最
|
|
||||||
在
|
|
||||||
人
|
|
||||||
有
|
|
||||||
是
|
|
||||||
为
|
|
||||||
以
|
|
||||||
于
|
|
||||||
上
|
|
||||||
他
|
|
||||||
而
|
|
||||||
后
|
|
||||||
之
|
|
||||||
来
|
|
||||||
由
|
|
||||||
及
|
|
||||||
了
|
|
||||||
下
|
|
||||||
可
|
|
||||||
到
|
|
||||||
这
|
|
||||||
与
|
|
||||||
也
|
|
||||||
因
|
|
||||||
此
|
|
||||||
但
|
|
||||||
并
|
|
||||||
个
|
|
||||||
其
|
|
||||||
已
|
|
||||||
无
|
|
||||||
小
|
|
||||||
今
|
|
||||||
去
|
|
||||||
再
|
|
||||||
好
|
|
||||||
只
|
|
||||||
又
|
|
||||||
或
|
|
||||||
很
|
|
||||||
亦
|
|
||||||
某
|
|
||||||
把
|
|
||||||
那
|
|
||||||
你
|
|
||||||
乃
|
|
||||||
它
|
|
||||||
吧
|
|
||||||
被
|
|
||||||
比
|
|
||||||
别
|
|
||||||
趁
|
|
||||||
当
|
|
||||||
从
|
|
||||||
到
|
|
||||||
得
|
|
||||||
打
|
|
||||||
凡
|
|
||||||
儿
|
|
||||||
尔
|
|
||||||
该
|
|
||||||
各
|
|
||||||
给
|
|
||||||
跟
|
|
||||||
和
|
|
||||||
何
|
|
||||||
还
|
|
||||||
即
|
|
||||||
几
|
|
||||||
既
|
|
||||||
看
|
|
||||||
据
|
|
||||||
距
|
|
||||||
靠
|
|
||||||
啦
|
|
||||||
了
|
|
||||||
另
|
|
||||||
么
|
|
||||||
每
|
|
||||||
们
|
|
||||||
嘛
|
|
||||||
拿
|
|
||||||
哪
|
|
||||||
那
|
|
||||||
您
|
|
||||||
凭
|
|
||||||
且
|
|
||||||
却
|
|
||||||
让
|
|
||||||
仍
|
|
||||||
啥
|
|
||||||
如
|
|
||||||
若
|
|
||||||
使
|
|
||||||
谁
|
|
||||||
虽
|
|
||||||
随
|
|
||||||
同
|
|
||||||
所
|
|
||||||
她
|
|
||||||
哇
|
|
||||||
嗡
|
|
||||||
往
|
|
||||||
哪
|
|
||||||
些
|
|
||||||
向
|
|
||||||
沿
|
|
||||||
哟
|
|
||||||
用
|
|
||||||
于
|
|
||||||
咱
|
|
||||||
则
|
|
||||||
怎
|
|
||||||
曾
|
|
||||||
至
|
|
||||||
致
|
|
||||||
着
|
|
||||||
诸
|
|
||||||
自
|
|
||||||
啊
|
|
||||||
#英文
|
|
||||||
to
|
|
||||||
can
|
|
||||||
could
|
|
||||||
dare
|
|
||||||
do
|
|
||||||
did
|
|
||||||
does
|
|
||||||
may
|
|
||||||
might
|
|
||||||
would
|
|
||||||
should
|
|
||||||
must
|
|
||||||
will
|
|
||||||
ought
|
|
||||||
shall
|
|
||||||
need
|
|
||||||
is
|
|
||||||
a
|
|
||||||
am
|
|
||||||
are
|
|
||||||
about
|
|
||||||
according
|
|
||||||
after
|
|
||||||
against
|
|
||||||
all
|
|
||||||
almost
|
|
||||||
also
|
|
||||||
although
|
|
||||||
among
|
|
||||||
an
|
|
||||||
and
|
|
||||||
another
|
|
||||||
any
|
|
||||||
anything
|
|
||||||
approximately
|
|
||||||
as
|
|
||||||
asked
|
|
||||||
at
|
|
||||||
back
|
|
||||||
because
|
|
||||||
before
|
|
||||||
besides
|
|
||||||
between
|
|
||||||
both
|
|
||||||
but
|
|
||||||
by
|
|
||||||
call
|
|
||||||
called
|
|
||||||
currently
|
|
||||||
despite
|
|
||||||
did
|
|
||||||
do
|
|
||||||
dr
|
|
||||||
during
|
|
||||||
each
|
|
||||||
earlier
|
|
||||||
eight
|
|
||||||
even
|
|
||||||
eventually
|
|
||||||
every
|
|
||||||
everything
|
|
||||||
five
|
|
||||||
for
|
|
||||||
four
|
|
||||||
from
|
|
||||||
he
|
|
||||||
her
|
|
||||||
here
|
|
||||||
his
|
|
||||||
how
|
|
||||||
however
|
|
||||||
i
|
|
||||||
if
|
|
||||||
in
|
|
||||||
indeed
|
|
||||||
instead
|
|
||||||
it
|
|
||||||
its
|
|
||||||
just
|
|
||||||
last
|
|
||||||
like
|
|
||||||
major
|
|
||||||
many
|
|
||||||
may
|
|
||||||
maybe
|
|
||||||
meanwhile
|
|
||||||
more
|
|
||||||
moreover
|
|
||||||
most
|
|
||||||
mr
|
|
||||||
mrs
|
|
||||||
ms
|
|
||||||
much
|
|
||||||
my
|
|
||||||
neither
|
|
||||||
net
|
|
||||||
never
|
|
||||||
nevertheless
|
|
||||||
nine
|
|
||||||
no
|
|
||||||
none
|
|
||||||
not
|
|
||||||
nothing
|
|
||||||
now
|
|
||||||
of
|
|
||||||
on
|
|
||||||
once
|
|
||||||
one
|
|
||||||
only
|
|
||||||
or
|
|
||||||
other
|
|
||||||
our
|
|
||||||
over
|
|
||||||
partly
|
|
||||||
perhaps
|
|
||||||
prior
|
|
||||||
regarding
|
|
||||||
separately
|
|
||||||
seven
|
|
||||||
several
|
|
||||||
she
|
|
||||||
should
|
|
||||||
similarly
|
|
||||||
since
|
|
||||||
six
|
|
||||||
so
|
|
||||||
some
|
|
||||||
somehow
|
|
||||||
still
|
|
||||||
such
|
|
||||||
ten
|
|
||||||
that
|
|
||||||
the
|
|
||||||
their
|
|
||||||
then
|
|
||||||
there
|
|
||||||
therefore
|
|
||||||
these
|
|
||||||
they
|
|
||||||
this
|
|
||||||
those
|
|
||||||
though
|
|
||||||
three
|
|
||||||
to
|
|
||||||
two
|
|
||||||
under
|
|
||||||
unless
|
|
||||||
unlike
|
|
||||||
until
|
|
||||||
volume
|
|
||||||
we
|
|
||||||
what
|
|
||||||
whatever
|
|
||||||
whats
|
|
||||||
when
|
|
||||||
where
|
|
||||||
which
|
|
||||||
while
|
|
||||||
why
|
|
||||||
with
|
|
||||||
without
|
|
||||||
yesterday
|
|
||||||
yet
|
|
||||||
you
|
|
||||||
your
|
|
||||||
aboard
|
|
||||||
about
|
|
||||||
above
|
|
||||||
according to
|
|
||||||
across
|
|
||||||
afore
|
|
||||||
after
|
|
||||||
against
|
|
||||||
agin
|
|
||||||
along
|
|
||||||
alongside
|
|
||||||
amid
|
|
||||||
amidst
|
|
||||||
among
|
|
||||||
amongst
|
|
||||||
anent
|
|
||||||
around
|
|
||||||
as
|
|
||||||
aslant
|
|
||||||
astride
|
|
||||||
at
|
|
||||||
athwart
|
|
||||||
bar
|
|
||||||
because of
|
|
||||||
before
|
|
||||||
behind
|
|
||||||
below
|
|
||||||
beneath
|
|
||||||
beside
|
|
||||||
besides
|
|
||||||
between
|
|
||||||
betwixt
|
|
||||||
beyond
|
|
||||||
but
|
|
||||||
by
|
|
||||||
circa
|
|
||||||
despite
|
|
||||||
down
|
|
||||||
during
|
|
||||||
due to
|
|
||||||
ere
|
|
||||||
except
|
|
||||||
for
|
|
||||||
from
|
|
||||||
in
|
|
||||||
inside
|
|
||||||
into
|
|
||||||
less
|
|
||||||
like
|
|
||||||
mid
|
|
||||||
midst
|
|
||||||
minus
|
|
||||||
near
|
|
||||||
next
|
|
||||||
nigh
|
|
||||||
nigher
|
|
||||||
nighest
|
|
||||||
notwithstanding
|
|
||||||
of
|
|
||||||
off
|
|
||||||
on
|
|
||||||
on to
|
|
||||||
onto
|
|
||||||
out
|
|
||||||
out of
|
|
||||||
outside
|
|
||||||
over
|
|
||||||
past
|
|
||||||
pending
|
|
||||||
per
|
|
||||||
plus
|
|
||||||
qua
|
|
||||||
re
|
|
||||||
round
|
|
||||||
sans
|
|
||||||
save
|
|
||||||
since
|
|
||||||
through
|
|
||||||
throughout
|
|
||||||
thru
|
|
||||||
till
|
|
||||||
to
|
|
||||||
toward
|
|
||||||
towards
|
|
||||||
under
|
|
||||||
underneath
|
|
||||||
unlike
|
|
||||||
until
|
|
||||||
unto
|
|
||||||
up
|
|
||||||
upon
|
|
||||||
versus
|
|
||||||
via
|
|
||||||
vice
|
|
||||||
with
|
|
||||||
within
|
|
||||||
without
|
|
||||||
he
|
|
||||||
her
|
|
||||||
herself
|
|
||||||
hers
|
|
||||||
him
|
|
||||||
himself
|
|
||||||
his
|
|
||||||
I
|
|
||||||
it
|
|
||||||
its
|
|
||||||
itself
|
|
||||||
me
|
|
||||||
mine
|
|
||||||
my
|
|
||||||
myself
|
|
||||||
ours
|
|
||||||
she
|
|
||||||
their
|
|
||||||
theirs
|
|
||||||
them
|
|
||||||
themselves
|
|
||||||
they
|
|
||||||
us
|
|
||||||
we
|
|
||||||
our
|
|
||||||
ourselves
|
|
||||||
you
|
|
||||||
your
|
|
||||||
yours
|
|
||||||
yourselves
|
|
||||||
yourself
|
|
||||||
this
|
|
||||||
that
|
|
||||||
these
|
|
||||||
those
|
|
||||||
a
|
|
||||||
about
|
|
||||||
above
|
|
||||||
across
|
|
||||||
after
|
|
||||||
afterwards
|
|
||||||
again
|
|
||||||
against
|
|
||||||
all
|
|
||||||
almost
|
|
||||||
alone
|
|
||||||
along
|
|
||||||
already
|
|
||||||
also
|
|
||||||
although
|
|
||||||
always
|
|
||||||
am
|
|
||||||
among
|
|
||||||
amongst
|
|
||||||
amoungst
|
|
||||||
amount
|
|
||||||
an
|
|
||||||
and
|
|
||||||
another
|
|
||||||
any
|
|
||||||
anyhow
|
|
||||||
anyone
|
|
||||||
anything
|
|
||||||
anyway
|
|
||||||
anywhere
|
|
||||||
are
|
|
||||||
around
|
|
||||||
as
|
|
||||||
at
|
|
||||||
back
|
|
||||||
be
|
|
||||||
became
|
|
||||||
because
|
|
||||||
become
|
|
||||||
becomes
|
|
||||||
becoming
|
|
||||||
been
|
|
||||||
before
|
|
||||||
beforehand
|
|
||||||
behind
|
|
||||||
being
|
|
||||||
below
|
|
||||||
beside
|
|
||||||
besides
|
|
||||||
between
|
|
||||||
beyond
|
|
||||||
bill
|
|
||||||
both
|
|
||||||
bottom
|
|
||||||
but
|
|
||||||
by
|
|
||||||
call
|
|
||||||
can
|
|
||||||
cannot
|
|
||||||
cant
|
|
||||||
co
|
|
||||||
computer
|
|
||||||
con
|
|
||||||
could
|
|
||||||
couldnt
|
|
||||||
cry
|
|
||||||
de
|
|
||||||
describe
|
|
||||||
detail
|
|
||||||
do
|
|
||||||
done
|
|
||||||
down
|
|
||||||
due
|
|
||||||
during
|
|
||||||
each
|
|
||||||
eg
|
|
||||||
eight
|
|
||||||
either
|
|
||||||
eleven
|
|
||||||
else
|
|
||||||
elsewhere
|
|
||||||
empty
|
|
||||||
enough
|
|
||||||
etc
|
|
||||||
even
|
|
||||||
ever
|
|
||||||
every
|
|
||||||
everyone
|
|
||||||
everything
|
|
||||||
everywhere
|
|
||||||
except
|
|
||||||
few
|
|
||||||
fifteen
|
|
||||||
fify
|
|
||||||
fill
|
|
||||||
find
|
|
||||||
fire
|
|
||||||
first
|
|
||||||
five
|
|
||||||
for
|
|
||||||
former
|
|
||||||
formerly
|
|
||||||
forty
|
|
||||||
found
|
|
||||||
four
|
|
||||||
from
|
|
||||||
front
|
|
||||||
full
|
|
||||||
further
|
|
||||||
get
|
|
||||||
give
|
|
||||||
go
|
|
||||||
had
|
|
||||||
has
|
|
||||||
hasnt
|
|
||||||
have
|
|
||||||
he
|
|
||||||
hence
|
|
||||||
her
|
|
||||||
here
|
|
||||||
hereafter
|
|
||||||
hereby
|
|
||||||
herein
|
|
||||||
hereupon
|
|
||||||
hers
|
|
||||||
herself
|
|
||||||
him
|
|
||||||
himself
|
|
||||||
his
|
|
||||||
how
|
|
||||||
however
|
|
||||||
hundred
|
|
||||||
i
|
|
||||||
ie
|
|
||||||
if
|
|
||||||
in
|
|
||||||
inc
|
|
||||||
indeed
|
|
||||||
interest
|
|
||||||
into
|
|
||||||
is
|
|
||||||
it
|
|
||||||
its
|
|
||||||
itself
|
|
||||||
keep
|
|
||||||
last
|
|
||||||
latter
|
|
||||||
latterly
|
|
||||||
least
|
|
||||||
less
|
|
||||||
ltd
|
|
||||||
made
|
|
||||||
many
|
|
||||||
may
|
|
||||||
me
|
|
||||||
meanwhile
|
|
||||||
might
|
|
||||||
mill
|
|
||||||
mine
|
|
||||||
more
|
|
||||||
moreover
|
|
||||||
most
|
|
||||||
mostly
|
|
||||||
move
|
|
||||||
much
|
|
||||||
must
|
|
||||||
my
|
|
||||||
myself
|
|
||||||
name
|
|
||||||
namely
|
|
||||||
neither
|
|
||||||
never
|
|
||||||
nevertheless
|
|
||||||
next
|
|
||||||
nine
|
|
||||||
no
|
|
||||||
nobody
|
|
||||||
none
|
|
||||||
noone
|
|
||||||
nor
|
|
||||||
not
|
|
||||||
nothing
|
|
||||||
now
|
|
||||||
nowhere
|
|
||||||
of
|
|
||||||
off
|
|
||||||
often
|
|
||||||
on
|
|
||||||
once
|
|
||||||
one
|
|
||||||
only
|
|
||||||
onto
|
|
||||||
or
|
|
||||||
other
|
|
||||||
others
|
|
||||||
otherwise
|
|
||||||
our
|
|
||||||
ours
|
|
||||||
ourselves
|
|
||||||
out
|
|
||||||
over
|
|
||||||
own
|
|
||||||
part
|
|
||||||
per
|
|
||||||
perhaps
|
|
||||||
please
|
|
||||||
put
|
|
||||||
rather
|
|
||||||
re
|
|
||||||
same
|
|
||||||
see
|
|
||||||
seem
|
|
||||||
seemed
|
|
||||||
seeming
|
|
||||||
seems
|
|
||||||
serious
|
|
||||||
several
|
|
||||||
she
|
|
||||||
should
|
|
||||||
show
|
|
||||||
side
|
|
||||||
since
|
|
||||||
sincere
|
|
||||||
six
|
|
||||||
sixty
|
|
||||||
so
|
|
||||||
some
|
|
||||||
somehow
|
|
||||||
someone
|
|
||||||
something
|
|
||||||
sometime
|
|
||||||
sometimes
|
|
||||||
somewhere
|
|
||||||
still
|
|
||||||
such
|
|
||||||
take
|
|
||||||
ten
|
|
||||||
than
|
|
||||||
that
|
|
||||||
the
|
|
||||||
their
|
|
||||||
them
|
|
||||||
themselves
|
|
||||||
then
|
|
||||||
thence
|
|
||||||
there
|
|
||||||
thereafter
|
|
||||||
thereby
|
|
||||||
therefore
|
|
||||||
therein
|
|
||||||
thereupon
|
|
||||||
these
|
|
||||||
they
|
|
||||||
thick
|
|
||||||
thin
|
|
||||||
third
|
|
||||||
this
|
|
||||||
those
|
|
||||||
though
|
|
||||||
three
|
|
||||||
through
|
|
||||||
throughout
|
|
||||||
thru
|
|
||||||
thus
|
|
||||||
to
|
|
||||||
together
|
|
||||||
too
|
|
||||||
top
|
|
||||||
toward
|
|
||||||
towards
|
|
||||||
twelve
|
|
||||||
twenty
|
|
||||||
two
|
|
||||||
un
|
|
||||||
under
|
|
||||||
until
|
|
||||||
up
|
|
||||||
upon
|
|
||||||
us
|
|
||||||
very
|
|
||||||
via
|
|
||||||
was
|
|
||||||
we
|
|
||||||
well
|
|
||||||
were
|
|
||||||
what
|
|
||||||
whatever
|
|
||||||
when
|
|
||||||
whence
|
|
||||||
whenever
|
|
||||||
where
|
|
||||||
whereafter
|
|
||||||
whereas
|
|
||||||
whereby
|
|
||||||
wherein
|
|
||||||
whereupon
|
|
||||||
wherever
|
|
||||||
whether
|
|
||||||
which
|
|
||||||
while
|
|
||||||
whither
|
|
||||||
who
|
|
||||||
whoever
|
|
||||||
whole
|
|
||||||
whom
|
|
||||||
whose
|
|
||||||
why
|
|
||||||
will
|
|
||||||
with
|
|
||||||
within
|
|
||||||
without
|
|
||||||
would
|
|
||||||
yet
|
|
||||||
you
|
|
||||||
your
|
|
||||||
yours
|
|
||||||
yourself
|
|
||||||
yourselves
|
|
||||||
#other number
|
|
|
@ -1,7 +0,0 @@
|
||||||
世博园/null
|
|
||||||
世博会/null
|
|
||||||
长城/null
|
|
||||||
黄山/null
|
|
||||||
衡山/null
|
|
||||||
华山/null
|
|
||||||
泰山/null
|
|
|
@ -1,39 +0,0 @@
|
||||||
#中文单字单位词库
|
|
||||||
#长度
|
|
||||||
米
|
|
||||||
寸
|
|
||||||
尺
|
|
||||||
丈
|
|
||||||
里
|
|
||||||
#时间
|
|
||||||
年
|
|
||||||
月
|
|
||||||
日
|
|
||||||
时
|
|
||||||
#分
|
|
||||||
秒
|
|
||||||
#币
|
|
||||||
元
|
|
||||||
角
|
|
||||||
#容量
|
|
||||||
升
|
|
||||||
斗
|
|
||||||
石
|
|
||||||
瓶
|
|
||||||
袋
|
|
||||||
盒
|
|
||||||
#重量
|
|
||||||
吨
|
|
||||||
克
|
|
||||||
斤
|
|
||||||
两
|
|
||||||
担
|
|
||||||
#地积
|
|
||||||
亩
|
|
||||||
顷
|
|
||||||
#其他
|
|
||||||
折
|
|
||||||
件
|
|
||||||
番
|
|
||||||
℃
|
|
||||||
℉
|
|
|
@ -1,65 +0,0 @@
|
||||||
# friso lexicon configure file.
|
|
||||||
# @email chenxin619315@gmail.com
|
|
||||||
# @date 2012-12-19
|
|
||||||
# main lexion
|
|
||||||
__LEX_CJK_WORDS__ :[
|
|
||||||
lex-main.lex;
|
|
||||||
lex-admin.lex;
|
|
||||||
lex-chars.lex;
|
|
||||||
lex-cn-mz.lex;
|
|
||||||
lex-cn-place.lex;
|
|
||||||
lex-company.lex;
|
|
||||||
lex-festival.lex;
|
|
||||||
lex-flname.lex;
|
|
||||||
lex-food.lex;
|
|
||||||
lex-lang.lex;
|
|
||||||
lex-nation.lex;
|
|
||||||
lex-net.lex;
|
|
||||||
lex-org.lex;
|
|
||||||
lex-touris.lex;
|
|
||||||
# add more here
|
|
||||||
]
|
|
||||||
# single chinese unit lexicon
|
|
||||||
__LEX_CJK_UNITS__ :[
|
|
||||||
lex-units.lex;
|
|
||||||
]
|
|
||||||
# chinese and english mixed word lexicon like "b超".
|
|
||||||
__LEX_ECM_WORDS__:[
|
|
||||||
lex-ecmixed.lex;
|
|
||||||
]
|
|
||||||
# english and chinese mixed word lexicon like "卡拉ok".
|
|
||||||
__LEX_CEM_WORDS__:[
|
|
||||||
lex-cemixed.lex;
|
|
||||||
]
|
|
||||||
# chinese last name lexicon.
|
|
||||||
__LEX_CN_LNAME__:[
|
|
||||||
lex-lname.lex;
|
|
||||||
]
|
|
||||||
# single name words lexicon.
|
|
||||||
__LEX_CN_SNAME__:[
|
|
||||||
lex-sname.lex;
|
|
||||||
]
|
|
||||||
# first word of a double chinese name.
|
|
||||||
__LEX_CN_DNAME1__:[
|
|
||||||
lex-dname-1.lex;
|
|
||||||
]
|
|
||||||
# second word of a double chinese name.
|
|
||||||
__LEX_CN_DNAME2__:[
|
|
||||||
lex-dname-2.lex;
|
|
||||||
]
|
|
||||||
# chinese last name decorate word.
|
|
||||||
__LEX_CN_LNA__:[
|
|
||||||
lex-ln-adorn.lex;
|
|
||||||
]
|
|
||||||
# stopwords lexicon
|
|
||||||
__LEX_STOPWORDS__:[
|
|
||||||
lex-stopword.lex;
|
|
||||||
]
|
|
||||||
# english and punctuation mixed words lexicon.
|
|
||||||
__LEX_ENPUN_WORDS__:[
|
|
||||||
lex-en-pun.lex;
|
|
||||||
]
|
|
||||||
# english words(for synonyms words)
|
|
||||||
__LEX_EN_WORDS__:[
|
|
||||||
lex-en.lex;
|
|
||||||
]
|
|
|
@ -1,26 +0,0 @@
|
||||||
人事部/人事管理部门,人事管理部
|
|
||||||
人事管理部/人事管理部门,人事部
|
|
||||||
信息产业部/null
|
|
||||||
农业部/null
|
|
||||||
医管局/医疗管理部门,医疗管理部
|
|
||||||
医疗管理部/医疗管理部门,医管局
|
|
||||||
医疗管理部门/医管局,医疗管理部
|
|
||||||
发改委/null
|
|
||||||
国土资源部/null
|
|
||||||
国防部/人民武装力量部,军事部,防卫厅
|
|
||||||
军事部/人民武装力量部,防卫厅
|
|
||||||
外交部/国务院,政治部,对外关系部,外务省
|
|
||||||
外交部长/null
|
|
||||||
教育部/null
|
|
||||||
文化部/null
|
|
||||||
民政部/null
|
|
||||||
能源部/null
|
|
||||||
财政部/null
|
|
||||||
铁道部/null
|
|
||||||
防卫厅/null
|
|
||||||
防卫省/null
|
|
||||||
革命委员会/null
|
|
||||||
交通运输部/null
|
|
||||||
对外经济贸易部/null
|
|
||||||
技术部/null
|
|
||||||
总装备部/null
|
|
|
@ -1,9 +0,0 @@
|
||||||
#中文英文混合词词库
|
|
||||||
卡拉ok/null
|
|
||||||
漂亮mm/null
|
|
||||||
拳皇ova/拳皇动漫
|
|
||||||
奇都ktv/null
|
|
||||||
哆啦a梦/null
|
|
||||||
高3/高三
|
|
||||||
高2/高二
|
|
||||||
高1/高一
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,168 +0,0 @@
|
||||||
汉族/null
|
|
||||||
汉族人/null
|
|
||||||
汉族语/null
|
|
||||||
蒙古族/null
|
|
||||||
蒙古族人/null
|
|
||||||
蒙古族语/null
|
|
||||||
满族/null
|
|
||||||
满族人/null
|
|
||||||
满族语/null
|
|
||||||
朝鲜族/null
|
|
||||||
朝鲜族人/null
|
|
||||||
朝鲜族语/null
|
|
||||||
赫哲族/null
|
|
||||||
赫哲族人/null
|
|
||||||
赫哲族语/null
|
|
||||||
达斡尔族/null
|
|
||||||
达斡尔族人/null
|
|
||||||
达斡尔族语/null
|
|
||||||
鄂温克族/null
|
|
||||||
鄂温克族人/null
|
|
||||||
鄂温克族语/null
|
|
||||||
鄂伦春族/null
|
|
||||||
鄂伦春族人/null
|
|
||||||
鄂伦春族语/null
|
|
||||||
回族/null
|
|
||||||
回族人/null
|
|
||||||
回族语/null
|
|
||||||
东乡族/null
|
|
||||||
东乡族人/null
|
|
||||||
东乡族语/null
|
|
||||||
土族/null
|
|
||||||
土族人/null
|
|
||||||
土族语/null
|
|
||||||
撒拉族/null
|
|
||||||
撒拉族人/null
|
|
||||||
撒拉族语/null
|
|
||||||
保安族/null
|
|
||||||
保安族人/null
|
|
||||||
保安族语/null
|
|
||||||
裕固族/null
|
|
||||||
裕固族人/null
|
|
||||||
裕固族语/null
|
|
||||||
维吾尔族/null
|
|
||||||
维吾尔族人/null
|
|
||||||
维吾尔族语/null
|
|
||||||
哈萨克族/null
|
|
||||||
哈萨克族人/null
|
|
||||||
哈萨克族语/null
|
|
||||||
柯尔克孜族/null
|
|
||||||
柯尔克孜族人/null
|
|
||||||
柯尔克孜族语/null
|
|
||||||
锡伯族/null
|
|
||||||
锡伯族人/null
|
|
||||||
锡伯族语/null
|
|
||||||
塔吉克族/null
|
|
||||||
塔吉克族人/null
|
|
||||||
塔吉克族语/null
|
|
||||||
乌孜别克族/null
|
|
||||||
乌孜别克族人/null
|
|
||||||
乌孜别克族语/null
|
|
||||||
俄罗斯族/null
|
|
||||||
俄罗斯族人/null
|
|
||||||
俄罗斯族语/null
|
|
||||||
塔塔尔族/null
|
|
||||||
塔塔尔族人/null
|
|
||||||
塔塔尔族语/null
|
|
||||||
藏族/null
|
|
||||||
藏族人/null
|
|
||||||
藏族语/null
|
|
||||||
门巴族/null
|
|
||||||
门巴族人/null
|
|
||||||
门巴族语/null
|
|
||||||
珞巴族/null
|
|
||||||
珞巴族人/null
|
|
||||||
珞巴族语/null
|
|
||||||
羌族/null
|
|
||||||
羌族人/null
|
|
||||||
羌族语/null
|
|
||||||
彝族/null
|
|
||||||
彝族人/null
|
|
||||||
彝族语/null
|
|
||||||
白族/null
|
|
||||||
白族人/null
|
|
||||||
白族语/null
|
|
||||||
哈尼族/null
|
|
||||||
哈尼族人/null
|
|
||||||
哈尼族语/null
|
|
||||||
傣族/null
|
|
||||||
傣族人/null
|
|
||||||
傣族语/null
|
|
||||||
僳僳族/null
|
|
||||||
僳僳族人/null
|
|
||||||
僳僳族语/null
|
|
||||||
佤族/null
|
|
||||||
佤族人/null
|
|
||||||
佤族语/null
|
|
||||||
拉祜族/null
|
|
||||||
拉祜族人/null
|
|
||||||
拉祜族语/null
|
|
||||||
纳西族/null
|
|
||||||
纳西族人/null
|
|
||||||
纳西族语/null
|
|
||||||
景颇族/null
|
|
||||||
景颇族人/null
|
|
||||||
景颇族语/null
|
|
||||||
布朗族/null
|
|
||||||
布朗族人/null
|
|
||||||
布朗族语/null
|
|
||||||
阿昌族/null
|
|
||||||
阿昌族人/null
|
|
||||||
阿昌族语/null
|
|
||||||
普米族/null
|
|
||||||
普米族人/null
|
|
||||||
普米族语/null
|
|
||||||
怒族/null
|
|
||||||
怒族人/null
|
|
||||||
怒族语/null
|
|
||||||
德昂族/null
|
|
||||||
德昂族人/null
|
|
||||||
德昂族语/null
|
|
||||||
独龙族/null
|
|
||||||
独龙族人/null
|
|
||||||
独龙族语/null
|
|
||||||
基诺族/null
|
|
||||||
基诺族人/null
|
|
||||||
基诺族语/null
|
|
||||||
苗族/null
|
|
||||||
苗族人/null
|
|
||||||
苗族语/null
|
|
||||||
布依族/null
|
|
||||||
布依族人/null
|
|
||||||
布依族语/null
|
|
||||||
侗族/null
|
|
||||||
侗族人/null
|
|
||||||
侗族语/null
|
|
||||||
水族/null
|
|
||||||
水族人/null
|
|
||||||
水族语/null
|
|
||||||
仡佬族/null
|
|
||||||
仡佬族人/null
|
|
||||||
仡佬族语/null
|
|
||||||
壮族/null
|
|
||||||
壮族人/null
|
|
||||||
壮族语/null
|
|
||||||
瑶族/null
|
|
||||||
瑶族人/null
|
|
||||||
瑶族语/null
|
|
||||||
仫佬族/null
|
|
||||||
仫佬族人/null
|
|
||||||
仫佬族语/null
|
|
||||||
毛南族/null
|
|
||||||
毛南族人/null
|
|
||||||
毛南族语/null
|
|
||||||
京族/null
|
|
||||||
京族人/null
|
|
||||||
京族语/null
|
|
||||||
土家族/null
|
|
||||||
土家族人/null
|
|
||||||
土家族语/null
|
|
||||||
黎族/null
|
|
||||||
黎族人/null
|
|
||||||
黎族语/null
|
|
||||||
畲族/null
|
|
||||||
畲族人/null
|
|
||||||
畲族语/null
|
|
||||||
高山族/null
|
|
||||||
高山族人/null
|
|
||||||
高山族语/null
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,100 +0,0 @@
|
||||||
央视/null
|
|
||||||
电信/null
|
|
||||||
移动/null
|
|
||||||
网通/null
|
|
||||||
联通/null
|
|
||||||
铁通/null
|
|
||||||
百度/null
|
|
||||||
环球网/null
|
|
||||||
长城网/null
|
|
||||||
新浪/null
|
|
||||||
腾讯/null
|
|
||||||
搜搜/soso
|
|
||||||
谷歌/null
|
|
||||||
雅虎/null
|
|
||||||
微软/null
|
|
||||||
中关村/null
|
|
||||||
搜狐/null
|
|
||||||
网易/null
|
|
||||||
硅谷/null
|
|
||||||
维基百科/null
|
|
||||||
巨人网络/null
|
|
||||||
阿里巴巴/null
|
|
||||||
阿里旺旺/旺旺
|
|
||||||
旺旺/null
|
|
||||||
淘宝/null
|
|
||||||
赶集网/null
|
|
||||||
猪八戒网/null
|
|
||||||
唯你英语/null
|
|
||||||
拉手网/null
|
|
||||||
百贯福泰/null
|
|
||||||
汇划算/null
|
|
||||||
汇划算网/null
|
|
||||||
聚划算/null
|
|
||||||
天猫/null
|
|
||||||
天猫网/null
|
|
||||||
亚马逊/null
|
|
||||||
亚马逊网/null
|
|
||||||
拍拍/null
|
|
||||||
拍拍网/null
|
|
||||||
京东/null
|
|
||||||
京东商城/null
|
|
||||||
返利网/null
|
|
||||||
支付宝/null
|
|
||||||
支付宝担保/null
|
|
||||||
支付宝及时到帐/null
|
|
||||||
支付宝双工能/null
|
|
||||||
财付通/null
|
|
||||||
财付通及时到帐/null
|
|
||||||
网银在线/null
|
|
||||||
苏宁易购/null
|
|
||||||
苏宁电器/null
|
|
||||||
仙童公司/null
|
|
||||||
开源中国/null
|
|
||||||
畅想网络/null
|
|
||||||
快乐大本营/null
|
|
||||||
越策越开心/null
|
|
||||||
超级男声/null
|
|
||||||
超男/null
|
|
||||||
超级女声/超女
|
|
||||||
超女/超级女声
|
|
||||||
好声音/null
|
|
||||||
快乐男声/快男
|
|
||||||
快男/快乐男声
|
|
||||||
快乐女声/null
|
|
||||||
快女/null
|
|
||||||
德克士/null
|
|
||||||
肯德基/null
|
|
||||||
奥利奥/null
|
|
||||||
回头客/null
|
|
||||||
苏波尔/null
|
|
||||||
苏宁/null
|
|
||||||
苏宁电器/null
|
|
||||||
苏宁易购/null
|
|
||||||
中央银行/null
|
|
||||||
人民银行/null
|
|
||||||
工商银行/null
|
|
||||||
农业银行/null
|
|
||||||
中国银行/null
|
|
||||||
建设银行/null
|
|
||||||
交通银行/null
|
|
||||||
华夏银行/null
|
|
||||||
光大银行/null
|
|
||||||
招商银行/null
|
|
||||||
中信银行/null
|
|
||||||
兴业银行/null
|
|
||||||
民生银行/null
|
|
||||||
深圳发展银行/null
|
|
||||||
广东发展银行/null
|
|
||||||
上海浦东发展银行/null
|
|
||||||
恒丰银行/null
|
|
||||||
农业发展银行/null
|
|
||||||
国家进出口信贷银行/null
|
|
||||||
国家开发银行/null
|
|
||||||
北京商业银行/null
|
|
||||||
上海银行/null
|
|
||||||
济南商业银行/null
|
|
||||||
信用社/null
|
|
||||||
农村信用社/null
|
|
||||||
邮政局/null
|
|
||||||
邮政储蓄银行/null
|
|
|
@ -1,210 +0,0 @@
|
||||||
#双姓名首字词库
|
|
||||||
建
|
|
||||||
小
|
|
||||||
晓
|
|
||||||
文
|
|
||||||
志
|
|
||||||
国
|
|
||||||
玉
|
|
||||||
丽
|
|
||||||
永
|
|
||||||
海
|
|
||||||
春
|
|
||||||
金
|
|
||||||
明
|
|
||||||
新
|
|
||||||
德
|
|
||||||
秀
|
|
||||||
红
|
|
||||||
亚
|
|
||||||
伟
|
|
||||||
雪
|
|
||||||
俊
|
|
||||||
桂
|
|
||||||
爱
|
|
||||||
美
|
|
||||||
世
|
|
||||||
正
|
|
||||||
庆
|
|
||||||
学
|
|
||||||
家
|
|
||||||
立
|
|
||||||
淑
|
|
||||||
振
|
|
||||||
云
|
|
||||||
华
|
|
||||||
光
|
|
||||||
惠
|
|
||||||
兴
|
|
||||||
天
|
|
||||||
长
|
|
||||||
艳
|
|
||||||
慧
|
|
||||||
利
|
|
||||||
宏
|
|
||||||
佳
|
|
||||||
瑞
|
|
||||||
凤
|
|
||||||
荣
|
|
||||||
秋
|
|
||||||
继
|
|
||||||
嘉
|
|
||||||
卫
|
|
||||||
燕
|
|
||||||
思
|
|
||||||
维
|
|
||||||
少
|
|
||||||
福
|
|
||||||
忠
|
|
||||||
宝
|
|
||||||
子
|
|
||||||
成
|
|
||||||
月
|
|
||||||
洪
|
|
||||||
东
|
|
||||||
一
|
|
||||||
泽
|
|
||||||
林
|
|
||||||
大
|
|
||||||
素
|
|
||||||
旭
|
|
||||||
宇
|
|
||||||
智
|
|
||||||
锦
|
|
||||||
冬
|
|
||||||
玲
|
|
||||||
雅
|
|
||||||
伯
|
|
||||||
翠
|
|
||||||
传
|
|
||||||
启
|
|
||||||
剑
|
|
||||||
安
|
|
||||||
树
|
|
||||||
良
|
|
||||||
中
|
|
||||||
梦
|
|
||||||
广
|
|
||||||
昌
|
|
||||||
元
|
|
||||||
万
|
|
||||||
清
|
|
||||||
静
|
|
||||||
友
|
|
||||||
宗
|
|
||||||
兆
|
|
||||||
丹
|
|
||||||
克
|
|
||||||
彩
|
|
||||||
绍
|
|
||||||
喜
|
|
||||||
远
|
|
||||||
朝
|
|
||||||
敏
|
|
||||||
培
|
|
||||||
胜
|
|
||||||
祖
|
|
||||||
先
|
|
||||||
菊
|
|
||||||
士
|
|
||||||
向
|
|
||||||
有
|
|
||||||
连
|
|
||||||
军
|
|
||||||
健
|
|
||||||
巧
|
|
||||||
耀
|
|
||||||
莉
|
|
||||||
英
|
|
||||||
方
|
|
||||||
和
|
|
||||||
仁
|
|
||||||
孝
|
|
||||||
梅
|
|
||||||
汉
|
|
||||||
兰
|
|
||||||
松
|
|
||||||
水
|
|
||||||
江
|
|
||||||
益
|
|
||||||
开
|
|
||||||
景
|
|
||||||
运
|
|
||||||
贵
|
|
||||||
祥
|
|
||||||
青
|
|
||||||
芳
|
|
||||||
碧
|
|
||||||
婷
|
|
||||||
龙
|
|
||||||
鹏
|
|
||||||
自
|
|
||||||
顺
|
|
||||||
双
|
|
||||||
书
|
|
||||||
生
|
|
||||||
义
|
|
||||||
跃
|
|
||||||
银
|
|
||||||
佩
|
|
||||||
雨
|
|
||||||
保
|
|
||||||
贤
|
|
||||||
仲
|
|
||||||
鸿
|
|
||||||
浩
|
|
||||||
加
|
|
||||||
定
|
|
||||||
炳
|
|
||||||
飞
|
|
||||||
锡
|
|
||||||
柏
|
|
||||||
发
|
|
||||||
超
|
|
||||||
道
|
|
||||||
怀
|
|
||||||
进
|
|
||||||
其
|
|
||||||
富
|
|
||||||
平
|
|
||||||
全
|
|
||||||
阳
|
|
||||||
吉
|
|
||||||
茂
|
|
||||||
彦
|
|
||||||
诗
|
|
||||||
洁
|
|
||||||
润
|
|
||||||
承
|
|
||||||
治
|
|
||||||
焕
|
|
||||||
如
|
|
||||||
君
|
|
||||||
增
|
|
||||||
善
|
|
||||||
希
|
|
||||||
根
|
|
||||||
应
|
|
||||||
勇
|
|
||||||
宜
|
|
||||||
守
|
|
||||||
会
|
|
||||||
凯
|
|
||||||
育
|
|
||||||
湘
|
|
||||||
凌
|
|
||||||
本
|
|
||||||
敬
|
|
||||||
博
|
|
||||||
延
|
|
||||||
乐
|
|
||||||
三
|
|
||||||
高
|
|
||||||
熙
|
|
||||||
逸
|
|
||||||
幸
|
|
||||||
灵
|
|
||||||
宣
|
|
||||||
才
|
|
||||||
述
|
|
||||||
化
|
|
|
@ -1,211 +0,0 @@
|
||||||
#双姓名尾字词库
|
|
||||||
华
|
|
||||||
平
|
|
||||||
明
|
|
||||||
英
|
|
||||||
军
|
|
||||||
林
|
|
||||||
萍
|
|
||||||
芳
|
|
||||||
玲
|
|
||||||
红
|
|
||||||
生
|
|
||||||
霞
|
|
||||||
梅
|
|
||||||
文
|
|
||||||
荣
|
|
||||||
珍
|
|
||||||
兰
|
|
||||||
娟
|
|
||||||
峰
|
|
||||||
琴
|
|
||||||
云
|
|
||||||
辉
|
|
||||||
东
|
|
||||||
龙
|
|
||||||
敏
|
|
||||||
伟
|
|
||||||
强
|
|
||||||
丽
|
|
||||||
春
|
|
||||||
杰
|
|
||||||
燕
|
|
||||||
民
|
|
||||||
君
|
|
||||||
波
|
|
||||||
国
|
|
||||||
芬
|
|
||||||
清
|
|
||||||
祥
|
|
||||||
斌
|
|
||||||
婷
|
|
||||||
飞
|
|
||||||
良
|
|
||||||
忠
|
|
||||||
新
|
|
||||||
凤
|
|
||||||
锋
|
|
||||||
成
|
|
||||||
勇
|
|
||||||
刚
|
|
||||||
玉
|
|
||||||
元
|
|
||||||
宇
|
|
||||||
海
|
|
||||||
兵
|
|
||||||
安
|
|
||||||
庆
|
|
||||||
涛
|
|
||||||
鹏
|
|
||||||
亮
|
|
||||||
青
|
|
||||||
阳
|
|
||||||
艳
|
|
||||||
松
|
|
||||||
江
|
|
||||||
莲
|
|
||||||
娜
|
|
||||||
兴
|
|
||||||
光
|
|
||||||
德
|
|
||||||
武
|
|
||||||
香
|
|
||||||
俊
|
|
||||||
秀
|
|
||||||
慧
|
|
||||||
雄
|
|
||||||
才
|
|
||||||
宏
|
|
||||||
群
|
|
||||||
琼
|
|
||||||
胜
|
|
||||||
超
|
|
||||||
彬
|
|
||||||
莉
|
|
||||||
中
|
|
||||||
山
|
|
||||||
富
|
|
||||||
花
|
|
||||||
宁
|
|
||||||
利
|
|
||||||
贵
|
|
||||||
福
|
|
||||||
发
|
|
||||||
义
|
|
||||||
蓉
|
|
||||||
喜
|
|
||||||
娥
|
|
||||||
昌
|
|
||||||
仁
|
|
||||||
志
|
|
||||||
全
|
|
||||||
宝
|
|
||||||
权
|
|
||||||
美
|
|
||||||
琳
|
|
||||||
建
|
|
||||||
金
|
|
||||||
贤
|
|
||||||
星
|
|
||||||
丹
|
|
||||||
根
|
|
||||||
和
|
|
||||||
珠
|
|
||||||
康
|
|
||||||
菊
|
|
||||||
琪
|
|
||||||
坤
|
|
||||||
泉
|
|
||||||
秋
|
|
||||||
静
|
|
||||||
佳
|
|
||||||
顺
|
|
||||||
源
|
|
||||||
珊
|
|
||||||
达
|
|
||||||
欣
|
|
||||||
如
|
|
||||||
莹
|
|
||||||
章
|
|
||||||
浩
|
|
||||||
勤
|
|
||||||
芹
|
|
||||||
容
|
|
||||||
友
|
|
||||||
芝
|
|
||||||
豪
|
|
||||||
洁
|
|
||||||
鑫
|
|
||||||
惠
|
|
||||||
洪
|
|
||||||
旺
|
|
||||||
虎
|
|
||||||
远
|
|
||||||
妮
|
|
||||||
森
|
|
||||||
妹
|
|
||||||
南
|
|
||||||
雯
|
|
||||||
奇
|
|
||||||
健
|
|
||||||
卿
|
|
||||||
虹
|
|
||||||
娇
|
|
||||||
媛
|
|
||||||
怡
|
|
||||||
铭
|
|
||||||
川
|
|
||||||
进
|
|
||||||
博
|
|
||||||
智
|
|
||||||
来
|
|
||||||
琦
|
|
||||||
学
|
|
||||||
聪
|
|
||||||
洋
|
|
||||||
乐
|
|
||||||
年
|
|
||||||
翔
|
|
||||||
然
|
|
||||||
栋
|
|
||||||
凯
|
|
||||||
颖
|
|
||||||
鸣
|
|
||||||
丰
|
|
||||||
瑞
|
|
||||||
奎
|
|
||||||
立
|
|
||||||
堂
|
|
||||||
威
|
|
||||||
雪
|
|
||||||
鸿
|
|
||||||
晶
|
|
||||||
桂
|
|
||||||
凡
|
|
||||||
娣
|
|
||||||
先
|
|
||||||
洲
|
|
||||||
毅
|
|
||||||
雅
|
|
||||||
月
|
|
||||||
旭
|
|
||||||
田
|
|
||||||
晖
|
|
||||||
方
|
|
||||||
恒
|
|
||||||
亚
|
|
||||||
泽
|
|
||||||
风
|
|
||||||
银
|
|
||||||
高
|
|
||||||
贞
|
|
||||||
九
|
|
||||||
薇
|
|
||||||
钰
|
|
||||||
城
|
|
||||||
宜
|
|
||||||
厚
|
|
||||||
耐
|
|
||||||
声
|
|
||||||
腾
|
|
||||||
宸
|
|
|
@ -1,131 +0,0 @@
|
||||||
#英文中文混合字, 注意英文字符均为小写
|
|
||||||
a咖/主角
|
|
||||||
a片/毛片,av
|
|
||||||
a座/null
|
|
||||||
a股/股票
|
|
||||||
a型/null
|
|
||||||
a杯/a罩杯
|
|
||||||
a罩杯/a杯
|
|
||||||
a计划/null
|
|
||||||
aa制/null
|
|
||||||
ab型/null
|
|
||||||
ab档案/null
|
|
||||||
a美a/null
|
|
||||||
a梦/null
|
|
||||||
x-射线/null
|
|
||||||
#
|
|
||||||
b座/null
|
|
||||||
b股/null
|
|
||||||
b型/null
|
|
||||||
b树/null
|
|
||||||
b计划/null
|
|
||||||
b超/null
|
|
||||||
b杯/b罩杯
|
|
||||||
b罩杯/b杯
|
|
||||||
bb机/call机
|
|
||||||
bb仔/null
|
|
||||||
bp机/null
|
|
||||||
#
|
|
||||||
c盘/null
|
|
||||||
c座/null
|
|
||||||
c语言/null
|
|
||||||
c杯/c罩杯
|
|
||||||
c罩杯/c杯
|
|
||||||
cd盒/null
|
|
||||||
cd机/null
|
|
||||||
call机/bb机
|
|
||||||
#
|
|
||||||
d盘/null
|
|
||||||
d座/null
|
|
||||||
d版/null
|
|
||||||
d杯/d罩杯
|
|
||||||
d罩杯/d杯
|
|
||||||
dna鉴定/null
|
|
||||||
#
|
|
||||||
e盘/null
|
|
||||||
e座/null
|
|
||||||
e化/null
|
|
||||||
e通/null
|
|
||||||
e仔/null
|
|
||||||
e语言/易语言
|
|
||||||
e杯/e罩杯
|
|
||||||
e罩杯/e杯
|
|
||||||
#
|
|
||||||
f盘/null
|
|
||||||
f座/null
|
|
||||||
f杯/f罩杯
|
|
||||||
f罩杯/f杯
|
|
||||||
#
|
|
||||||
g盘/null
|
|
||||||
g点/null
|
|
||||||
g杯/g罩杯
|
|
||||||
g罩杯/g杯
|
|
||||||
#
|
|
||||||
h盘/null
|
|
||||||
h股/null
|
|
||||||
h杯/h罩杯
|
|
||||||
h罩杯/h杯
|
|
||||||
#
|
|
||||||
i盘/null
|
|
||||||
ic卡/null
|
|
||||||
ip卡/null
|
|
||||||
ip段/null
|
|
||||||
ip电话/null
|
|
||||||
ip地址/null
|
|
||||||
it行业/null
|
|
||||||
it民工/码农
|
|
||||||
it男/null
|
|
||||||
#
|
|
||||||
j盘/null
|
|
||||||
#
|
|
||||||
k仔/null
|
|
||||||
k盘/null
|
|
||||||
k党/null
|
|
||||||
k书/看书,搞学习
|
|
||||||
k粉/氯胺酮
|
|
||||||
k歌/唱歌,嗨歌
|
|
||||||
k他命/null
|
|
||||||
k歌之王/null
|
|
||||||
#
|
|
||||||
n年/很久
|
|
||||||
#
|
|
||||||
o型/null
|
|
||||||
#
|
|
||||||
pc机/null
|
|
||||||
ph值/null
|
|
||||||
#
|
|
||||||
sim卡/null
|
|
||||||
#
|
|
||||||
u盘/null
|
|
||||||
u形/null
|
|
||||||
usb手指/null
|
|
||||||
usb接口/null
|
|
||||||
usb插口/null
|
|
||||||
usb记忆棒/null
|
|
||||||
#
|
|
||||||
visa卡/null
|
|
||||||
v沟/null
|
|
||||||
#
|
|
||||||
z盘/null
|
|
||||||
#
|
|
||||||
q版/null
|
|
||||||
qq号/null
|
|
||||||
q立方/null
|
|
||||||
#
|
|
||||||
rss订阅/null
|
|
||||||
#
|
|
||||||
t盘/null
|
|
||||||
#
|
|
||||||
x光/null
|
|
||||||
x光线/x射线
|
|
||||||
x射线/x光线
|
|
||||||
γ射线/null
|
|
||||||
#
|
|
||||||
t恤衫/t恤
|
|
||||||
t恤/t恤衫
|
|
||||||
t字帐/null
|
|
||||||
t型台/null
|
|
||||||
#
|
|
||||||
250g硬盘/null
|
|
||||||
160g硬盘/null
|
|
||||||
500g硬盘/null
|
|
|
@ -1,6 +0,0 @@
|
||||||
#英文和标点组合成的词,英文字母统一使用小写。
|
|
||||||
c++
|
|
||||||
g++
|
|
||||||
c#
|
|
||||||
i++
|
|
||||||
x-
|
|
|
@ -1,5 +0,0 @@
|
||||||
#英文词条, 做英文词语同义词追加用
|
|
||||||
decimal/decimals,fraction
|
|
||||||
spirit/mind
|
|
||||||
admire/appreciate,like,love,enjoy
|
|
||||||
chenxin12/chenxin,lionsoul
|
|
|
@ -1,186 +0,0 @@
|
||||||
七七纪念日/null
|
|
||||||
七夕/七夕情人节,情人节,中国情人节
|
|
||||||
七夕情人节/七夕,中国情人节,情人节
|
|
||||||
七夕节/七夕,情人节,中国情人节
|
|
||||||
万圣节/鬼节
|
|
||||||
世界人权日/null
|
|
||||||
世界儿歌节/null
|
|
||||||
世界儿童节/null
|
|
||||||
世界动物日/null
|
|
||||||
世界卫生日/null
|
|
||||||
世界地球日/null
|
|
||||||
世界教师日/null
|
|
||||||
世界无烟日/null
|
|
||||||
世界无童工日/null
|
|
||||||
世界林业节/null
|
|
||||||
世界森林日/null
|
|
||||||
世界水日/null
|
|
||||||
世界海洋日/null
|
|
||||||
世界湿地日/null
|
|
||||||
世界献血日/null
|
|
||||||
世界环境日/null
|
|
||||||
世界电视日/null
|
|
||||||
世界睡眠日/null
|
|
||||||
世界粮食日/null
|
|
||||||
世界精神卫生日/null
|
|
||||||
世界红十字日/null
|
|
||||||
世界问候日/null
|
|
||||||
中国人民抗日战争纪念日/null
|
|
||||||
抗日战争纪念日/null
|
|
||||||
中国国耻日/null
|
|
||||||
中国学生营养日/null
|
|
||||||
中国爱牙日/null
|
|
||||||
中国爱耳日/null
|
|
||||||
中国青年志愿者服务日/null
|
|
||||||
中国青年节/null
|
|
||||||
中秋/null
|
|
||||||
中秋节/null
|
|
||||||
人口日/null
|
|
||||||
人权日/null
|
|
||||||
儿歌节/null
|
|
||||||
儿童节/null
|
|
||||||
元宵/null
|
|
||||||
元宵节/null
|
|
||||||
元旦/null
|
|
||||||
元旦节/null
|
|
||||||
党生日/null
|
|
||||||
全国中小学生安全教育日/null
|
|
||||||
全国助残日/null
|
|
||||||
全国爱眼日/null
|
|
||||||
全国爱耳日/null
|
|
||||||
六十亿人口日/null
|
|
||||||
六四纪念日/null
|
|
||||||
冬至/null
|
|
||||||
减轻自然灾害日/null
|
|
||||||
动物日/null
|
|
||||||
助残日/null
|
|
||||||
劳动妇女节/null
|
|
||||||
劳动节/null
|
|
||||||
博物馆日/null
|
|
||||||
卫生日/null
|
|
||||||
和平日/null
|
|
||||||
国庆/null
|
|
||||||
国庆节/null
|
|
||||||
国耻日/null
|
|
||||||
国际儿童节/null
|
|
||||||
国际减轻自然灾害日/null
|
|
||||||
国际劳动妇女节/null
|
|
||||||
国际劳动节/null
|
|
||||||
国际博物馆日/null
|
|
||||||
国际和平日/null
|
|
||||||
国际奥林匹克日/null
|
|
||||||
国际妇女节/null
|
|
||||||
国际容忍日/null
|
|
||||||
国际左撇子日/null
|
|
||||||
国际志愿者日/null
|
|
||||||
国际护士节/null
|
|
||||||
国际无车日/null
|
|
||||||
国际残疾人日/null
|
|
||||||
国际母语日/null
|
|
||||||
国际气象节/null
|
|
||||||
国际消费者权益日/null
|
|
||||||
国际牛奶日/null
|
|
||||||
国际盲人节/null
|
|
||||||
国际禁毒日/null
|
|
||||||
国际老人日/null
|
|
||||||
国际臭氧层保护日/null
|
|
||||||
国际非洲儿童日/null
|
|
||||||
国际音乐日/null
|
|
||||||
国际麻风日/null
|
|
||||||
圣诞节/null
|
|
||||||
地球日/null
|
|
||||||
处暑/null
|
|
||||||
复活节/null
|
|
||||||
夏至/null
|
|
||||||
大寒/null
|
|
||||||
大暑/null
|
|
||||||
大雪/null
|
|
||||||
奥林匹克日/null
|
|
||||||
妇女节/null
|
|
||||||
三八节/null
|
|
||||||
三八妇女节/null
|
|
||||||
学生营养日/null
|
|
||||||
安全教育日/null
|
|
||||||
安全日/null
|
|
||||||
容忍日/null
|
|
||||||
寒露/null
|
|
||||||
小寒/null
|
|
||||||
小年/null
|
|
||||||
小暑/null
|
|
||||||
小满/null
|
|
||||||
小雪/null
|
|
||||||
左撇子日/null
|
|
||||||
平安夜/null
|
|
||||||
建党日/null
|
|
||||||
建军节/null
|
|
||||||
志愿人员日/null
|
|
||||||
志愿者日/null
|
|
||||||
情人节/null
|
|
||||||
惊蛰/null
|
|
||||||
愚人节/null
|
|
||||||
感恩节/null
|
|
||||||
扫房日/null
|
|
||||||
抗日战争纪念日/null
|
|
||||||
抗日纪念日/null
|
|
||||||
护士节/null
|
|
||||||
教师日/null
|
|
||||||
教师节/null
|
|
||||||
文化遗产日/null
|
|
||||||
无烟日/null
|
|
||||||
无童工日/null
|
|
||||||
无车日/null
|
|
||||||
春分/null
|
|
||||||
春节/null
|
|
||||||
植树节/null
|
|
||||||
残疾人日/null
|
|
||||||
母亲节/null
|
|
||||||
母语日/null
|
|
||||||
气象节/null
|
|
||||||
水日/null
|
|
||||||
海洋日/null
|
|
||||||
消费者权益日/null
|
|
||||||
清明/null
|
|
||||||
清明节/null
|
|
||||||
湿地日/null
|
|
||||||
爱牙日/null
|
|
||||||
爱眼日/null
|
|
||||||
爱耳日/null
|
|
||||||
父亲节/null
|
|
||||||
牛奶日/null
|
|
||||||
独立日/null
|
|
||||||
献血日/null
|
|
||||||
环境日/null
|
|
||||||
电视日/null
|
|
||||||
白露/null
|
|
||||||
盲人节/null
|
|
||||||
睡眠日/null
|
|
||||||
秋分/null
|
|
||||||
立冬/null
|
|
||||||
立夏/null
|
|
||||||
立春/null
|
|
||||||
立秋/null
|
|
||||||
端午节/null
|
|
||||||
粮食日/null
|
|
||||||
精神卫生日/null
|
|
||||||
红十字日/null
|
|
||||||
老人日/null
|
|
||||||
联合国日/null
|
|
||||||
腊八节/null
|
|
||||||
腊日/null
|
|
||||||
臭氧保护日/null
|
|
||||||
臭氧层保护日/null
|
|
||||||
芒种/null
|
|
||||||
营养日/null
|
|
||||||
谷雨/null
|
|
||||||
重阳/null
|
|
||||||
重阳节/null
|
|
||||||
问候日/null
|
|
||||||
除夕/null
|
|
||||||
雨水/null
|
|
||||||
霜降/null
|
|
||||||
青年志愿者服务日/null
|
|
||||||
青年节/null
|
|
||||||
非洲儿童日/null
|
|
||||||
音乐日/null
|
|
||||||
麻风日/null
|
|
||||||
龙头节/null
|
|
|
@ -1,11 +0,0 @@
|
||||||
#西方姓氏词库
|
|
||||||
亚历山大/null
|
|
||||||
克林顿/null
|
|
||||||
克里斯汀/null
|
|
||||||
布什/null
|
|
||||||
布莱尔/null
|
|
||||||
科特勒/null
|
|
||||||
约翰/null
|
|
||||||
约翰逊/null
|
|
||||||
蒂娜/null
|
|
||||||
安妮/null
|
|
|
@ -1,12 +0,0 @@
|
||||||
雪碧/null
|
|
||||||
可口可乐/null
|
|
||||||
冰红茶/null
|
|
||||||
奶茶/null
|
|
||||||
花生奶/null
|
|
||||||
芬达/null
|
|
||||||
珍珠奶茶/null
|
|
||||||
达利源/null
|
|
||||||
肯德鸡/null
|
|
||||||
炸薯条/null
|
|
||||||
麻辣烫/null
|
|
||||||
麻辣干锅/null
|
|
|
@ -1,20 +0,0 @@
|
||||||
中文/国语
|
|
||||||
国语/null
|
|
||||||
台湾话/台语
|
|
||||||
台语/台湾话
|
|
||||||
客家话/null
|
|
||||||
汉字/null
|
|
||||||
汉语/国语,中文
|
|
||||||
法文/法文
|
|
||||||
法语/法语
|
|
||||||
福建话/null
|
|
||||||
粤语/广东话
|
|
||||||
美语/英语,英文
|
|
||||||
英文/英语
|
|
||||||
英语/英文
|
|
||||||
西班牙语/null
|
|
||||||
闽南语/null
|
|
||||||
泰语/null
|
|
||||||
西班牙语/null
|
|
||||||
俄罗斯语/null
|
|
||||||
拉丁语/null
|
|
|
@ -1,4 +0,0 @@
|
||||||
#姓氏修饰,例如:老陈,小陈,中的老,小
|
|
||||||
#如果他已经是姓氏(lex-lname.lex中的词),则无须放在这里。
|
|
||||||
老
|
|
||||||
小
|
|
|
@ -1,513 +0,0 @@
|
||||||
#中文姓氏词库
|
|
||||||
#单姓
|
|
||||||
王
|
|
||||||
李
|
|
||||||
张
|
|
||||||
刘
|
|
||||||
陈
|
|
||||||
杨
|
|
||||||
周
|
|
||||||
黄
|
|
||||||
孙
|
|
||||||
吴
|
|
||||||
徐
|
|
||||||
赵
|
|
||||||
林
|
|
||||||
胡
|
|
||||||
朱
|
|
||||||
梁
|
|
||||||
郭
|
|
||||||
高
|
|
||||||
何
|
|
||||||
马
|
|
||||||
郑
|
|
||||||
罗
|
|
||||||
宋
|
|
||||||
唐
|
|
||||||
谢
|
|
||||||
叶
|
|
||||||
韩
|
|
||||||
任
|
|
||||||
潘
|
|
||||||
于
|
|
||||||
冯
|
|
||||||
蒋
|
|
||||||
董
|
|
||||||
吕
|
|
||||||
邓
|
|
||||||
许
|
|
||||||
曹
|
|
||||||
曾
|
|
||||||
袁
|
|
||||||
汪
|
|
||||||
程
|
|
||||||
田
|
|
||||||
彭
|
|
||||||
钟
|
|
||||||
蔡
|
|
||||||
魏
|
|
||||||
沈
|
|
||||||
方
|
|
||||||
卢
|
|
||||||
余
|
|
||||||
杜
|
|
||||||
丁
|
|
||||||
苏
|
|
||||||
贾
|
|
||||||
姚
|
|
||||||
姜
|
|
||||||
陆
|
|
||||||
戴
|
|
||||||
傅
|
|
||||||
夏
|
|
||||||
廖
|
|
||||||
萧
|
|
||||||
石
|
|
||||||
江
|
|
||||||
范
|
|
||||||
今
|
|
||||||
谭
|
|
||||||
邹
|
|
||||||
崔
|
|
||||||
薛
|
|
||||||
邱
|
|
||||||
康
|
|
||||||
史
|
|
||||||
侯
|
|
||||||
邵
|
|
||||||
熊
|
|
||||||
秦
|
|
||||||
雷
|
|
||||||
孟
|
|
||||||
庞
|
|
||||||
白
|
|
||||||
毛
|
|
||||||
郝
|
|
||||||
钱
|
|
||||||
段
|
|
||||||
俞
|
|
||||||
洪
|
|
||||||
汤
|
|
||||||
顾
|
|
||||||
贺
|
|
||||||
龚
|
|
||||||
尹
|
|
||||||
万
|
|
||||||
龙
|
|
||||||
赖
|
|
||||||
章
|
|
||||||
孔
|
|
||||||
武
|
|
||||||
邢
|
|
||||||
颜
|
|
||||||
梅
|
|
||||||
阮
|
|
||||||
黎
|
|
||||||
常
|
|
||||||
倪
|
|
||||||
施
|
|
||||||
乔
|
|
||||||
樊
|
|
||||||
严
|
|
||||||
齐
|
|
||||||
陶
|
|
||||||
#向
|
|
||||||
温
|
|
||||||
文
|
|
||||||
易
|
|
||||||
兰
|
|
||||||
闫
|
|
||||||
芦
|
|
||||||
牛
|
|
||||||
尚
|
|
||||||
安
|
|
||||||
管
|
|
||||||
殷
|
|
||||||
霍
|
|
||||||
翟
|
|
||||||
佘
|
|
||||||
葛
|
|
||||||
庄
|
|
||||||
伍
|
|
||||||
辛
|
|
||||||
练
|
|
||||||
申
|
|
||||||
付
|
|
||||||
曲
|
|
||||||
焦
|
|
||||||
项
|
|
||||||
代
|
|
||||||
鲁
|
|
||||||
季
|
|
||||||
覃
|
|
||||||
覃
|
|
||||||
毕
|
|
||||||
麦
|
|
||||||
阳
|
|
||||||
耿
|
|
||||||
舒
|
|
||||||
聂
|
|
||||||
盛
|
|
||||||
童
|
|
||||||
祝
|
|
||||||
柳
|
|
||||||
单
|
|
||||||
单
|
|
||||||
岳
|
|
||||||
骆
|
|
||||||
纪
|
|
||||||
欧
|
|
||||||
房
|
|
||||||
左
|
|
||||||
尤
|
|
||||||
凌
|
|
||||||
韦
|
|
||||||
景
|
|
||||||
詹
|
|
||||||
莫
|
|
||||||
郎
|
|
||||||
路
|
|
||||||
宁
|
|
||||||
宁
|
|
||||||
关
|
|
||||||
丛
|
|
||||||
翁
|
|
||||||
容
|
|
||||||
亢
|
|
||||||
柯
|
|
||||||
鲍
|
|
||||||
蒲
|
|
||||||
苗
|
|
||||||
牟
|
|
||||||
谷
|
|
||||||
裴
|
|
||||||
商
|
|
||||||
初
|
|
||||||
屈
|
|
||||||
成
|
|
||||||
包
|
|
||||||
游
|
|
||||||
司
|
|
||||||
祁
|
|
||||||
强
|
|
||||||
靳
|
|
||||||
甘
|
|
||||||
席
|
|
||||||
瞿
|
|
||||||
卜
|
|
||||||
褚
|
|
||||||
解
|
|
||||||
臧
|
|
||||||
时
|
|
||||||
费
|
|
||||||
班
|
|
||||||
华
|
|
||||||
全
|
|
||||||
涂
|
|
||||||
卓
|
|
||||||
党
|
|
||||||
饶
|
|
||||||
应
|
|
||||||
卫
|
|
||||||
丘
|
|
||||||
隋
|
|
||||||
米
|
|
||||||
闵
|
|
||||||
畅
|
|
||||||
喻
|
|
||||||
冉
|
|
||||||
宫
|
|
||||||
甄
|
|
||||||
宣
|
|
||||||
穆
|
|
||||||
谈
|
|
||||||
匡
|
|
||||||
帅
|
|
||||||
车
|
|
||||||
母
|
|
||||||
查
|
|
||||||
戚
|
|
||||||
符
|
|
||||||
缪
|
|
||||||
昌
|
|
||||||
娄
|
|
||||||
滕
|
|
||||||
位
|
|
||||||
奚
|
|
||||||
边
|
|
||||||
卞
|
|
||||||
桂
|
|
||||||
邝
|
|
||||||
苟
|
|
||||||
柏
|
|
||||||
井
|
|
||||||
冀
|
|
||||||
邬
|
|
||||||
吉
|
|
||||||
敖
|
|
||||||
桑
|
|
||||||
池
|
|
||||||
简
|
|
||||||
蔺
|
|
||||||
连
|
|
||||||
艾
|
|
||||||
蓝
|
|
||||||
窦
|
|
||||||
刚
|
|
||||||
封
|
|
||||||
占
|
|
||||||
迟
|
|
||||||
姬
|
|
||||||
刁
|
|
||||||
栾
|
|
||||||
冷
|
|
||||||
杭
|
|
||||||
植
|
|
||||||
郁
|
|
||||||
晋
|
|
||||||
虞
|
|
||||||
佟
|
|
||||||
苑
|
|
||||||
屠
|
|
||||||
藏
|
|
||||||
蒙
|
|
||||||
占
|
|
||||||
辜
|
|
||||||
廉
|
|
||||||
巩
|
|
||||||
麻
|
|
||||||
晏
|
|
||||||
相
|
|
||||||
师
|
|
||||||
鄢
|
|
||||||
泮
|
|
||||||
燕
|
|
||||||
岑
|
|
||||||
官
|
|
||||||
仲
|
|
||||||
羊
|
|
||||||
揭
|
|
||||||
仇
|
|
||||||
邸
|
|
||||||
宗
|
|
||||||
荆
|
|
||||||
盖
|
|
||||||
盖
|
|
||||||
粱
|
|
||||||
原
|
|
||||||
茅
|
|
||||||
荣
|
|
||||||
沙
|
|
||||||
郜
|
|
||||||
巫
|
|
||||||
鞠
|
|
||||||
罡
|
|
||||||
未
|
|
||||||
来
|
|
||||||
劳
|
|
||||||
诸
|
|
||||||
计
|
|
||||||
乐
|
|
||||||
乐
|
|
||||||
双
|
|
||||||
花
|
|
||||||
冼
|
|
||||||
尉
|
|
||||||
木
|
|
||||||
丰
|
|
||||||
寇
|
|
||||||
栗
|
|
||||||
况
|
|
||||||
干
|
|
||||||
楼
|
|
||||||
满
|
|
||||||
桑
|
|
||||||
湛
|
|
||||||
谌
|
|
||||||
储
|
|
||||||
邦
|
|
||||||
皮
|
|
||||||
楚
|
|
||||||
胥
|
|
||||||
明
|
|
||||||
平
|
|
||||||
腾
|
|
||||||
厉
|
|
||||||
仉
|
|
||||||
励
|
|
||||||
竺
|
|
||||||
闻
|
|
||||||
宇
|
|
||||||
支
|
|
||||||
都
|
|
||||||
折
|
|
||||||
旷
|
|
||||||
南
|
|
||||||
战
|
|
||||||
嵇
|
|
||||||
化
|
|
||||||
糜
|
|
||||||
衣
|
|
||||||
国
|
|
||||||
逄
|
|
||||||
门
|
|
||||||
崇
|
|
||||||
裘
|
|
||||||
薄
|
|
||||||
束
|
|
||||||
宿
|
|
||||||
东
|
|
||||||
降
|
|
||||||
逯
|
|
||||||
伊
|
|
||||||
修
|
|
||||||
粟
|
|
||||||
漆
|
|
||||||
阙
|
|
||||||
禹
|
|
||||||
先
|
|
||||||
银
|
|
||||||
台
|
|
||||||
#和
|
|
||||||
祖
|
|
||||||
惠
|
|
||||||
伦
|
|
||||||
候
|
|
||||||
阚
|
|
||||||
慕
|
|
||||||
戈
|
|
||||||
富
|
|
||||||
伏
|
|
||||||
僧
|
|
||||||
习
|
|
||||||
云
|
|
||||||
元
|
|
||||||
狄
|
|
||||||
危
|
|
||||||
雍
|
|
||||||
蔚
|
|
||||||
索
|
|
||||||
居
|
|
||||||
浦
|
|
||||||
权
|
|
||||||
税
|
|
||||||
谯
|
|
||||||
於
|
|
||||||
芮
|
|
||||||
濮
|
|
||||||
基
|
|
||||||
寿
|
|
||||||
凡
|
|
||||||
卿
|
|
||||||
酆
|
|
||||||
苻
|
|
||||||
保
|
|
||||||
郗
|
|
||||||
渠
|
|
||||||
琚
|
|
||||||
淡
|
|
||||||
由
|
|
||||||
豆
|
|
||||||
扈
|
|
||||||
仁
|
|
||||||
呼
|
|
||||||
矫
|
|
||||||
巢
|
|
||||||
盘
|
|
||||||
敬
|
|
||||||
巴
|
|
||||||
茆
|
|
||||||
鱼
|
|
||||||
戎
|
|
||||||
缠
|
|
||||||
区
|
|
||||||
幸
|
|
||||||
海
|
|
||||||
弓
|
|
||||||
阴
|
|
||||||
住
|
|
||||||
晁
|
|
||||||
菅
|
|
||||||
印
|
|
||||||
汝
|
|
||||||
历
|
|
||||||
么
|
|
||||||
乌
|
|
||||||
贡
|
|
||||||
妙
|
|
||||||
禤
|
|
||||||
荀
|
|
||||||
鹿
|
|
||||||
邰
|
|
||||||
随
|
|
||||||
雒
|
|
||||||
贝
|
|
||||||
录
|
|
||||||
鲜
|
|
||||||
茹
|
|
||||||
种
|
|
||||||
农
|
|
||||||
佐
|
|
||||||
赫
|
|
||||||
字
|
|
||||||
油
|
|
||||||
#但
|
|
||||||
綦
|
|
||||||
美
|
|
||||||
利
|
|
||||||
钮
|
|
||||||
信
|
|
||||||
勾
|
|
||||||
火
|
|
||||||
昝
|
|
||||||
圣
|
|
||||||
颉
|
|
||||||
从
|
|
||||||
靖
|
|
||||||
开
|
|
||||||
公
|
|
||||||
那
|
|
||||||
山
|
|
||||||
智
|
|
||||||
补
|
|
||||||
虎
|
|
||||||
才
|
|
||||||
布
|
|
||||||
亓
|
|
||||||
药
|
|
||||||
造
|
|
||||||
普
|
|
||||||
五
|
|
||||||
仝
|
|
||||||
扆
|
|
||||||
暴
|
|
||||||
咸
|
|
||||||
庚
|
|
||||||
奕
|
|
||||||
锺
|
|
||||||
问
|
|
||||||
招
|
|
||||||
贵
|
|
||||||
巨
|
|
||||||
檀
|
|
||||||
厚
|
|
||||||
恽
|
|
||||||
过
|
|
||||||
达
|
|
||||||
邴
|
|
||||||
洛
|
|
||||||
忻
|
|
||||||
展
|
|
||||||
户
|
|
||||||
毋
|
|
||||||
暨
|
|
||||||
#复姓
|
|
||||||
欧阳
|
|
||||||
上官
|
|
||||||
司徒
|
|
||||||
刘付
|
|
||||||
皇甫
|
|
||||||
长孙
|
|
||||||
相里
|
|
||||||
令狐
|
|
||||||
诸葛
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,54 +0,0 @@
|
||||||
东非/null
|
|
||||||
中华/null
|
|
||||||
中华/null
|
|
||||||
中华人民共和国/null
|
|
||||||
中华民国/null
|
|
||||||
中国/null
|
|
||||||
中國/null
|
|
||||||
中非/null
|
|
||||||
乌克兰/null
|
|
||||||
也门/null
|
|
||||||
以色列/null
|
|
||||||
伊拉克/null
|
|
||||||
伊朗/null
|
|
||||||
俄罗斯/null
|
|
||||||
分类/null
|
|
||||||
加拿大/null
|
|
||||||
南非/null
|
|
||||||
古巴/null
|
|
||||||
台湾/null
|
|
||||||
埃及/null
|
|
||||||
塞尔维亚/null
|
|
||||||
墨西哥/null
|
|
||||||
威尔士/null
|
|
||||||
尼日利亚/null
|
|
||||||
巴比伦/null
|
|
||||||
希腊/null
|
|
||||||
德国/null
|
|
||||||
德意志/null
|
|
||||||
意大利/null
|
|
||||||
捷克/null
|
|
||||||
日本/null
|
|
||||||
朝鲜/null
|
|
||||||
比利时/null
|
|
||||||
法兰西/null
|
|
||||||
法国/null
|
|
||||||
波兰/null
|
|
||||||
波黑/null
|
|
||||||
瑞典/null
|
|
||||||
瑞士/null
|
|
||||||
白俄罗斯/null
|
|
||||||
缅甸/null
|
|
||||||
美利坚/null
|
|
||||||
美利坚合众国/null
|
|
||||||
美国/null
|
|
||||||
老挝/null
|
|
||||||
苏格兰/null
|
|
||||||
苏联/null
|
|
||||||
英国/null
|
|
||||||
英格兰/null
|
|
||||||
葡萄牙/null
|
|
||||||
蒙古/null
|
|
||||||
西班牙/null
|
|
||||||
越南/null
|
|
||||||
韩国/null
|
|
|
@ -1,26 +0,0 @@
|
||||||
油条哥/null
|
|
||||||
活雷锋/null
|
|
||||||
夕阳红/null
|
|
||||||
帮扶村/null
|
|
||||||
后援会/null
|
|
||||||
复炸油/null
|
|
||||||
献血哥/null
|
|
||||||
放心姐/null
|
|
||||||
啃老族/null
|
|
||||||
特训班/null
|
|
||||||
平头男/null
|
|
||||||
爆头哥/null
|
|
||||||
楼主/null
|
|
||||||
有两把刷子/null
|
|
||||||
非典/null
|
|
||||||
微信/null
|
|
||||||
微博/null
|
|
||||||
吊丝/null
|
|
||||||
高富帅/null
|
|
||||||
矮穷挫/null
|
|
||||||
白富美/null
|
|
||||||
狮子的魂/null
|
|
||||||
仓老师/仓井空
|
|
||||||
郭德纲/null
|
|
||||||
单田芳/null
|
|
||||||
李笑笑/null
|
|
|
@ -1,15 +0,0 @@
|
||||||
上海合作组织/null
|
|
||||||
世卫/null
|
|
||||||
世界卫生组织/null
|
|
||||||
世界银行/null
|
|
||||||
东盟/null
|
|
||||||
亚太经合组织/null
|
|
||||||
人权理事会/null
|
|
||||||
六方会谈/null
|
|
||||||
北约/null
|
|
||||||
哈马斯/null
|
|
||||||
安全理事会/null
|
|
||||||
安理会/null
|
|
||||||
欧佩克/null
|
|
||||||
红十字会/null
|
|
||||||
联合国/null
|
|
|
@ -1,207 +0,0 @@
|
||||||
#中文单名词库
|
|
||||||
敏
|
|
||||||
伟
|
|
||||||
勇
|
|
||||||
军
|
|
||||||
斌
|
|
||||||
静
|
|
||||||
丽
|
|
||||||
涛
|
|
||||||
芳
|
|
||||||
杰
|
|
||||||
萍
|
|
||||||
强
|
|
||||||
俊
|
|
||||||
明
|
|
||||||
燕
|
|
||||||
磊
|
|
||||||
玲
|
|
||||||
华
|
|
||||||
平
|
|
||||||
鹏
|
|
||||||
健
|
|
||||||
波
|
|
||||||
红
|
|
||||||
丹
|
|
||||||
辉
|
|
||||||
超
|
|
||||||
艳
|
|
||||||
莉
|
|
||||||
刚
|
|
||||||
娟
|
|
||||||
峰
|
|
||||||
婷
|
|
||||||
亮
|
|
||||||
洁
|
|
||||||
颖
|
|
||||||
琳
|
|
||||||
英
|
|
||||||
慧
|
|
||||||
飞
|
|
||||||
霞
|
|
||||||
浩
|
|
||||||
凯
|
|
||||||
宇
|
|
||||||
毅
|
|
||||||
林
|
|
||||||
佳
|
|
||||||
云
|
|
||||||
莹
|
|
||||||
娜
|
|
||||||
晶
|
|
||||||
洋
|
|
||||||
文
|
|
||||||
鑫
|
|
||||||
欣
|
|
||||||
琴
|
|
||||||
宁
|
|
||||||
琼
|
|
||||||
兵
|
|
||||||
青
|
|
||||||
琦
|
|
||||||
翔
|
|
||||||
彬
|
|
||||||
锋
|
|
||||||
阳
|
|
||||||
璐
|
|
||||||
旭
|
|
||||||
蕾
|
|
||||||
剑
|
|
||||||
虹
|
|
||||||
蓉
|
|
||||||
建
|
|
||||||
倩
|
|
||||||
梅
|
|
||||||
宏
|
|
||||||
威
|
|
||||||
博
|
|
||||||
君
|
|
||||||
力
|
|
||||||
龙
|
|
||||||
晨
|
|
||||||
薇
|
|
||||||
雪
|
|
||||||
琪
|
|
||||||
欢
|
|
||||||
荣
|
|
||||||
江
|
|
||||||
炜
|
|
||||||
成
|
|
||||||
庆
|
|
||||||
冰
|
|
||||||
东
|
|
||||||
帆
|
|
||||||
雷
|
|
||||||
楠
|
|
||||||
锐
|
|
||||||
进
|
|
||||||
海
|
|
||||||
凡
|
|
||||||
巍
|
|
||||||
维
|
|
||||||
迪
|
|
||||||
媛
|
|
||||||
玮
|
|
||||||
杨
|
|
||||||
群
|
|
||||||
瑛
|
|
||||||
悦
|
|
||||||
春
|
|
||||||
瑶
|
|
||||||
婧
|
|
||||||
兰
|
|
||||||
茜
|
|
||||||
松
|
|
||||||
爽
|
|
||||||
立
|
|
||||||
瑜
|
|
||||||
睿
|
|
||||||
晖
|
|
||||||
聪
|
|
||||||
帅
|
|
||||||
瑾
|
|
||||||
骏
|
|
||||||
雯
|
|
||||||
晓
|
|
||||||
昊
|
|
||||||
勤
|
|
||||||
新
|
|
||||||
瑞
|
|
||||||
岩
|
|
||||||
星
|
|
||||||
忠
|
|
||||||
志
|
|
||||||
怡
|
|
||||||
坤
|
|
||||||
康
|
|
||||||
航
|
|
||||||
利
|
|
||||||
畅
|
|
||||||
坚
|
|
||||||
雄
|
|
||||||
智
|
|
||||||
萌
|
|
||||||
哲
|
|
||||||
岚
|
|
||||||
洪
|
|
||||||
捷
|
|
||||||
珊
|
|
||||||
恒
|
|
||||||
靖
|
|
||||||
清
|
|
||||||
扬
|
|
||||||
昕
|
|
||||||
乐
|
|
||||||
武
|
|
||||||
玉
|
|
||||||
诚
|
|
||||||
菲
|
|
||||||
锦
|
|
||||||
凤
|
|
||||||
珍
|
|
||||||
晔
|
|
||||||
妍
|
|
||||||
璇
|
|
||||||
胜
|
|
||||||
菁
|
|
||||||
科
|
|
||||||
芬
|
|
||||||
露
|
|
||||||
越
|
|
||||||
彤
|
|
||||||
曦
|
|
||||||
义
|
|
||||||
良
|
|
||||||
鸣
|
|
||||||
芸
|
|
||||||
方
|
|
||||||
月
|
|
||||||
铭
|
|
||||||
光
|
|
||||||
震
|
|
||||||
冬
|
|
||||||
源
|
|
||||||
政
|
|
||||||
虎
|
|
||||||
莎
|
|
||||||
彪
|
|
||||||
蓓
|
|
||||||
钢
|
|
||||||
凌
|
|
||||||
奇
|
|
||||||
卫
|
|
||||||
彦
|
|
||||||
烨
|
|
||||||
可
|
|
||||||
黎
|
|
||||||
川
|
|
||||||
淼
|
|
||||||
惠
|
|
||||||
祥
|
|
||||||
然
|
|
||||||
三
|
|
||||||
逗
|
|
||||||
高
|
|
||||||
潇
|
|
||||||
正
|
|
||||||
硕
|
|
|
@ -1,887 +0,0 @@
|
||||||
#en-punctuation
|
|
||||||
!
|
|
||||||
"
|
|
||||||
#
|
|
||||||
$
|
|
||||||
%
|
|
||||||
&
|
|
||||||
'
|
|
||||||
(
|
|
||||||
)
|
|
||||||
*
|
|
||||||
+
|
|
||||||
,
|
|
||||||
-
|
|
||||||
.
|
|
||||||
/
|
|
||||||
#0
|
|
||||||
#1
|
|
||||||
#2
|
|
||||||
#3
|
|
||||||
#4
|
|
||||||
#5
|
|
||||||
#6
|
|
||||||
#7
|
|
||||||
#8
|
|
||||||
#9
|
|
||||||
:
|
|
||||||
;
|
|
||||||
<
|
|
||||||
=
|
|
||||||
>
|
|
||||||
?
|
|
||||||
@
|
|
||||||
[
|
|
||||||
\
|
|
||||||
]
|
|
||||||
^
|
|
||||||
_
|
|
||||||
`
|
|
||||||
#a
|
|
||||||
#b
|
|
||||||
#c
|
|
||||||
#d
|
|
||||||
#e
|
|
||||||
#f
|
|
||||||
#g
|
|
||||||
#h
|
|
||||||
#i
|
|
||||||
#j
|
|
||||||
#k
|
|
||||||
#l
|
|
||||||
#m
|
|
||||||
#n
|
|
||||||
#o
|
|
||||||
#p
|
|
||||||
#q
|
|
||||||
#r
|
|
||||||
#s
|
|
||||||
#t
|
|
||||||
#u
|
|
||||||
#v
|
|
||||||
#w
|
|
||||||
#x
|
|
||||||
#y
|
|
||||||
#z
|
|
||||||
{
|
|
||||||
|
|
|
||||||
}
|
|
||||||
~
|
|
||||||
!
|
|
||||||
#fullwidth
|
|
||||||
!
|
|
||||||
"
|
|
||||||
#
|
|
||||||
$
|
|
||||||
%
|
|
||||||
&
|
|
||||||
'
|
|
||||||
(
|
|
||||||
)
|
|
||||||
*
|
|
||||||
+
|
|
||||||
,
|
|
||||||
-
|
|
||||||
.
|
|
||||||
/
|
|
||||||
:
|
|
||||||
;
|
|
||||||
<
|
|
||||||
=
|
|
||||||
>
|
|
||||||
?
|
|
||||||
@
|
|
||||||
[
|
|
||||||
\
|
|
||||||
]
|
|
||||||
^
|
|
||||||
_
|
|
||||||
`
|
|
||||||
{
|
|
||||||
|
|
|
||||||
}
|
|
||||||
~
|
|
||||||
⦅
|
|
||||||
⦆
|
|
||||||
。
|
|
||||||
「
|
|
||||||
」
|
|
||||||
、
|
|
||||||
・
|
|
||||||
#cn-punctuation
|
|
||||||
、
|
|
||||||
。
|
|
||||||
〃
|
|
||||||
〄
|
|
||||||
々
|
|
||||||
〆
|
|
||||||
〇
|
|
||||||
〈
|
|
||||||
〉
|
|
||||||
《
|
|
||||||
》
|
|
||||||
「
|
|
||||||
」
|
|
||||||
『
|
|
||||||
』
|
|
||||||
【
|
|
||||||
】
|
|
||||||
〒
|
|
||||||
〓
|
|
||||||
〔
|
|
||||||
〕
|
|
||||||
〖
|
|
||||||
〗
|
|
||||||
〘
|
|
||||||
〙
|
|
||||||
〚
|
|
||||||
〛
|
|
||||||
〜
|
|
||||||
〝
|
|
||||||
〞
|
|
||||||
〟
|
|
||||||
#中文
|
|
||||||
的
|
|
||||||
吗
|
|
||||||
不
|
|
||||||
我
|
|
||||||
们
|
|
||||||
起
|
|
||||||
就
|
|
||||||
最
|
|
||||||
在
|
|
||||||
人
|
|
||||||
有
|
|
||||||
是
|
|
||||||
为
|
|
||||||
以
|
|
||||||
于
|
|
||||||
上
|
|
||||||
他
|
|
||||||
而
|
|
||||||
后
|
|
||||||
之
|
|
||||||
来
|
|
||||||
由
|
|
||||||
及
|
|
||||||
了
|
|
||||||
下
|
|
||||||
可
|
|
||||||
到
|
|
||||||
这
|
|
||||||
与
|
|
||||||
也
|
|
||||||
因
|
|
||||||
此
|
|
||||||
但
|
|
||||||
并
|
|
||||||
个
|
|
||||||
其
|
|
||||||
已
|
|
||||||
无
|
|
||||||
小
|
|
||||||
今
|
|
||||||
去
|
|
||||||
再
|
|
||||||
好
|
|
||||||
只
|
|
||||||
又
|
|
||||||
或
|
|
||||||
很
|
|
||||||
亦
|
|
||||||
某
|
|
||||||
把
|
|
||||||
那
|
|
||||||
你
|
|
||||||
乃
|
|
||||||
它
|
|
||||||
吧
|
|
||||||
被
|
|
||||||
比
|
|
||||||
别
|
|
||||||
趁
|
|
||||||
当
|
|
||||||
从
|
|
||||||
到
|
|
||||||
得
|
|
||||||
打
|
|
||||||
凡
|
|
||||||
儿
|
|
||||||
尔
|
|
||||||
该
|
|
||||||
各
|
|
||||||
给
|
|
||||||
跟
|
|
||||||
和
|
|
||||||
何
|
|
||||||
还
|
|
||||||
即
|
|
||||||
几
|
|
||||||
既
|
|
||||||
看
|
|
||||||
据
|
|
||||||
距
|
|
||||||
靠
|
|
||||||
啦
|
|
||||||
了
|
|
||||||
另
|
|
||||||
么
|
|
||||||
每
|
|
||||||
们
|
|
||||||
嘛
|
|
||||||
拿
|
|
||||||
哪
|
|
||||||
那
|
|
||||||
您
|
|
||||||
凭
|
|
||||||
且
|
|
||||||
却
|
|
||||||
让
|
|
||||||
仍
|
|
||||||
啥
|
|
||||||
如
|
|
||||||
若
|
|
||||||
使
|
|
||||||
谁
|
|
||||||
虽
|
|
||||||
随
|
|
||||||
同
|
|
||||||
所
|
|
||||||
她
|
|
||||||
哇
|
|
||||||
嗡
|
|
||||||
往
|
|
||||||
哪
|
|
||||||
些
|
|
||||||
向
|
|
||||||
沿
|
|
||||||
哟
|
|
||||||
用
|
|
||||||
于
|
|
||||||
咱
|
|
||||||
则
|
|
||||||
怎
|
|
||||||
曾
|
|
||||||
至
|
|
||||||
致
|
|
||||||
着
|
|
||||||
诸
|
|
||||||
自
|
|
||||||
啊
|
|
||||||
#英文
|
|
||||||
to
|
|
||||||
can
|
|
||||||
could
|
|
||||||
dare
|
|
||||||
do
|
|
||||||
did
|
|
||||||
does
|
|
||||||
may
|
|
||||||
might
|
|
||||||
would
|
|
||||||
should
|
|
||||||
must
|
|
||||||
will
|
|
||||||
ought
|
|
||||||
shall
|
|
||||||
need
|
|
||||||
is
|
|
||||||
a
|
|
||||||
am
|
|
||||||
are
|
|
||||||
about
|
|
||||||
according
|
|
||||||
after
|
|
||||||
against
|
|
||||||
all
|
|
||||||
almost
|
|
||||||
also
|
|
||||||
although
|
|
||||||
among
|
|
||||||
an
|
|
||||||
and
|
|
||||||
another
|
|
||||||
any
|
|
||||||
anything
|
|
||||||
approximately
|
|
||||||
as
|
|
||||||
asked
|
|
||||||
at
|
|
||||||
back
|
|
||||||
because
|
|
||||||
before
|
|
||||||
besides
|
|
||||||
between
|
|
||||||
both
|
|
||||||
but
|
|
||||||
by
|
|
||||||
call
|
|
||||||
called
|
|
||||||
currently
|
|
||||||
despite
|
|
||||||
did
|
|
||||||
do
|
|
||||||
dr
|
|
||||||
during
|
|
||||||
each
|
|
||||||
earlier
|
|
||||||
eight
|
|
||||||
even
|
|
||||||
eventually
|
|
||||||
every
|
|
||||||
everything
|
|
||||||
five
|
|
||||||
for
|
|
||||||
four
|
|
||||||
from
|
|
||||||
he
|
|
||||||
her
|
|
||||||
here
|
|
||||||
his
|
|
||||||
how
|
|
||||||
however
|
|
||||||
i
|
|
||||||
if
|
|
||||||
in
|
|
||||||
indeed
|
|
||||||
instead
|
|
||||||
it
|
|
||||||
its
|
|
||||||
just
|
|
||||||
last
|
|
||||||
like
|
|
||||||
major
|
|
||||||
many
|
|
||||||
may
|
|
||||||
maybe
|
|
||||||
meanwhile
|
|
||||||
more
|
|
||||||
moreover
|
|
||||||
most
|
|
||||||
mr
|
|
||||||
mrs
|
|
||||||
ms
|
|
||||||
much
|
|
||||||
my
|
|
||||||
neither
|
|
||||||
net
|
|
||||||
never
|
|
||||||
nevertheless
|
|
||||||
nine
|
|
||||||
no
|
|
||||||
none
|
|
||||||
not
|
|
||||||
nothing
|
|
||||||
now
|
|
||||||
of
|
|
||||||
on
|
|
||||||
once
|
|
||||||
one
|
|
||||||
only
|
|
||||||
or
|
|
||||||
other
|
|
||||||
our
|
|
||||||
over
|
|
||||||
partly
|
|
||||||
perhaps
|
|
||||||
prior
|
|
||||||
regarding
|
|
||||||
separately
|
|
||||||
seven
|
|
||||||
several
|
|
||||||
she
|
|
||||||
should
|
|
||||||
similarly
|
|
||||||
since
|
|
||||||
six
|
|
||||||
so
|
|
||||||
some
|
|
||||||
somehow
|
|
||||||
still
|
|
||||||
such
|
|
||||||
ten
|
|
||||||
that
|
|
||||||
the
|
|
||||||
their
|
|
||||||
then
|
|
||||||
there
|
|
||||||
therefore
|
|
||||||
these
|
|
||||||
they
|
|
||||||
this
|
|
||||||
those
|
|
||||||
though
|
|
||||||
three
|
|
||||||
to
|
|
||||||
two
|
|
||||||
under
|
|
||||||
unless
|
|
||||||
unlike
|
|
||||||
until
|
|
||||||
volume
|
|
||||||
we
|
|
||||||
what
|
|
||||||
whatever
|
|
||||||
whats
|
|
||||||
when
|
|
||||||
where
|
|
||||||
which
|
|
||||||
while
|
|
||||||
why
|
|
||||||
with
|
|
||||||
without
|
|
||||||
yesterday
|
|
||||||
yet
|
|
||||||
you
|
|
||||||
your
|
|
||||||
aboard
|
|
||||||
about
|
|
||||||
above
|
|
||||||
according to
|
|
||||||
across
|
|
||||||
afore
|
|
||||||
after
|
|
||||||
against
|
|
||||||
agin
|
|
||||||
along
|
|
||||||
alongside
|
|
||||||
amid
|
|
||||||
amidst
|
|
||||||
among
|
|
||||||
amongst
|
|
||||||
anent
|
|
||||||
around
|
|
||||||
as
|
|
||||||
aslant
|
|
||||||
astride
|
|
||||||
at
|
|
||||||
athwart
|
|
||||||
bar
|
|
||||||
because of
|
|
||||||
before
|
|
||||||
behind
|
|
||||||
below
|
|
||||||
beneath
|
|
||||||
beside
|
|
||||||
besides
|
|
||||||
between
|
|
||||||
betwixt
|
|
||||||
beyond
|
|
||||||
but
|
|
||||||
by
|
|
||||||
circa
|
|
||||||
despite
|
|
||||||
down
|
|
||||||
during
|
|
||||||
due to
|
|
||||||
ere
|
|
||||||
except
|
|
||||||
for
|
|
||||||
from
|
|
||||||
in
|
|
||||||
inside
|
|
||||||
into
|
|
||||||
less
|
|
||||||
like
|
|
||||||
mid
|
|
||||||
midst
|
|
||||||
minus
|
|
||||||
near
|
|
||||||
next
|
|
||||||
nigh
|
|
||||||
nigher
|
|
||||||
nighest
|
|
||||||
notwithstanding
|
|
||||||
of
|
|
||||||
off
|
|
||||||
on
|
|
||||||
on to
|
|
||||||
onto
|
|
||||||
out
|
|
||||||
out of
|
|
||||||
outside
|
|
||||||
over
|
|
||||||
past
|
|
||||||
pending
|
|
||||||
per
|
|
||||||
plus
|
|
||||||
qua
|
|
||||||
re
|
|
||||||
round
|
|
||||||
sans
|
|
||||||
save
|
|
||||||
since
|
|
||||||
through
|
|
||||||
throughout
|
|
||||||
thru
|
|
||||||
till
|
|
||||||
to
|
|
||||||
toward
|
|
||||||
towards
|
|
||||||
under
|
|
||||||
underneath
|
|
||||||
unlike
|
|
||||||
until
|
|
||||||
unto
|
|
||||||
up
|
|
||||||
upon
|
|
||||||
versus
|
|
||||||
via
|
|
||||||
vice
|
|
||||||
with
|
|
||||||
within
|
|
||||||
without
|
|
||||||
he
|
|
||||||
her
|
|
||||||
herself
|
|
||||||
hers
|
|
||||||
him
|
|
||||||
himself
|
|
||||||
his
|
|
||||||
I
|
|
||||||
it
|
|
||||||
its
|
|
||||||
itself
|
|
||||||
me
|
|
||||||
mine
|
|
||||||
my
|
|
||||||
myself
|
|
||||||
ours
|
|
||||||
she
|
|
||||||
their
|
|
||||||
theirs
|
|
||||||
them
|
|
||||||
themselves
|
|
||||||
they
|
|
||||||
us
|
|
||||||
we
|
|
||||||
our
|
|
||||||
ourselves
|
|
||||||
you
|
|
||||||
your
|
|
||||||
yours
|
|
||||||
yourselves
|
|
||||||
yourself
|
|
||||||
this
|
|
||||||
that
|
|
||||||
these
|
|
||||||
those
|
|
||||||
a
|
|
||||||
about
|
|
||||||
above
|
|
||||||
across
|
|
||||||
after
|
|
||||||
afterwards
|
|
||||||
again
|
|
||||||
against
|
|
||||||
all
|
|
||||||
almost
|
|
||||||
alone
|
|
||||||
along
|
|
||||||
already
|
|
||||||
also
|
|
||||||
although
|
|
||||||
always
|
|
||||||
am
|
|
||||||
among
|
|
||||||
amongst
|
|
||||||
amoungst
|
|
||||||
amount
|
|
||||||
an
|
|
||||||
and
|
|
||||||
another
|
|
||||||
any
|
|
||||||
anyhow
|
|
||||||
anyone
|
|
||||||
anything
|
|
||||||
anyway
|
|
||||||
anywhere
|
|
||||||
are
|
|
||||||
around
|
|
||||||
as
|
|
||||||
at
|
|
||||||
back
|
|
||||||
be
|
|
||||||
became
|
|
||||||
because
|
|
||||||
become
|
|
||||||
becomes
|
|
||||||
becoming
|
|
||||||
been
|
|
||||||
before
|
|
||||||
beforehand
|
|
||||||
behind
|
|
||||||
being
|
|
||||||
below
|
|
||||||
beside
|
|
||||||
besides
|
|
||||||
between
|
|
||||||
beyond
|
|
||||||
bill
|
|
||||||
both
|
|
||||||
bottom
|
|
||||||
but
|
|
||||||
by
|
|
||||||
call
|
|
||||||
can
|
|
||||||
cannot
|
|
||||||
cant
|
|
||||||
co
|
|
||||||
computer
|
|
||||||
con
|
|
||||||
could
|
|
||||||
couldnt
|
|
||||||
cry
|
|
||||||
de
|
|
||||||
describe
|
|
||||||
detail
|
|
||||||
do
|
|
||||||
done
|
|
||||||
down
|
|
||||||
due
|
|
||||||
during
|
|
||||||
each
|
|
||||||
eg
|
|
||||||
eight
|
|
||||||
either
|
|
||||||
eleven
|
|
||||||
else
|
|
||||||
elsewhere
|
|
||||||
empty
|
|
||||||
enough
|
|
||||||
etc
|
|
||||||
even
|
|
||||||
ever
|
|
||||||
every
|
|
||||||
everyone
|
|
||||||
everything
|
|
||||||
everywhere
|
|
||||||
except
|
|
||||||
few
|
|
||||||
fifteen
|
|
||||||
fify
|
|
||||||
fill
|
|
||||||
find
|
|
||||||
fire
|
|
||||||
first
|
|
||||||
five
|
|
||||||
for
|
|
||||||
former
|
|
||||||
formerly
|
|
||||||
forty
|
|
||||||
found
|
|
||||||
four
|
|
||||||
from
|
|
||||||
front
|
|
||||||
full
|
|
||||||
further
|
|
||||||
get
|
|
||||||
give
|
|
||||||
go
|
|
||||||
had
|
|
||||||
has
|
|
||||||
hasnt
|
|
||||||
have
|
|
||||||
he
|
|
||||||
hence
|
|
||||||
her
|
|
||||||
here
|
|
||||||
hereafter
|
|
||||||
hereby
|
|
||||||
herein
|
|
||||||
hereupon
|
|
||||||
hers
|
|
||||||
herself
|
|
||||||
him
|
|
||||||
himself
|
|
||||||
his
|
|
||||||
how
|
|
||||||
however
|
|
||||||
hundred
|
|
||||||
i
|
|
||||||
ie
|
|
||||||
if
|
|
||||||
in
|
|
||||||
inc
|
|
||||||
indeed
|
|
||||||
interest
|
|
||||||
into
|
|
||||||
is
|
|
||||||
it
|
|
||||||
its
|
|
||||||
itself
|
|
||||||
keep
|
|
||||||
last
|
|
||||||
latter
|
|
||||||
latterly
|
|
||||||
least
|
|
||||||
less
|
|
||||||
ltd
|
|
||||||
made
|
|
||||||
many
|
|
||||||
may
|
|
||||||
me
|
|
||||||
meanwhile
|
|
||||||
might
|
|
||||||
mill
|
|
||||||
mine
|
|
||||||
more
|
|
||||||
moreover
|
|
||||||
most
|
|
||||||
mostly
|
|
||||||
move
|
|
||||||
much
|
|
||||||
must
|
|
||||||
my
|
|
||||||
myself
|
|
||||||
name
|
|
||||||
namely
|
|
||||||
neither
|
|
||||||
never
|
|
||||||
nevertheless
|
|
||||||
next
|
|
||||||
nine
|
|
||||||
no
|
|
||||||
nobody
|
|
||||||
none
|
|
||||||
noone
|
|
||||||
nor
|
|
||||||
not
|
|
||||||
nothing
|
|
||||||
now
|
|
||||||
nowhere
|
|
||||||
of
|
|
||||||
off
|
|
||||||
often
|
|
||||||
on
|
|
||||||
once
|
|
||||||
one
|
|
||||||
only
|
|
||||||
onto
|
|
||||||
or
|
|
||||||
other
|
|
||||||
others
|
|
||||||
otherwise
|
|
||||||
our
|
|
||||||
ours
|
|
||||||
ourselves
|
|
||||||
out
|
|
||||||
over
|
|
||||||
own
|
|
||||||
part
|
|
||||||
per
|
|
||||||
perhaps
|
|
||||||
please
|
|
||||||
put
|
|
||||||
rather
|
|
||||||
re
|
|
||||||
same
|
|
||||||
see
|
|
||||||
seem
|
|
||||||
seemed
|
|
||||||
seeming
|
|
||||||
seems
|
|
||||||
serious
|
|
||||||
several
|
|
||||||
she
|
|
||||||
should
|
|
||||||
show
|
|
||||||
side
|
|
||||||
since
|
|
||||||
sincere
|
|
||||||
six
|
|
||||||
sixty
|
|
||||||
so
|
|
||||||
some
|
|
||||||
somehow
|
|
||||||
someone
|
|
||||||
something
|
|
||||||
sometime
|
|
||||||
sometimes
|
|
||||||
somewhere
|
|
||||||
still
|
|
||||||
such
|
|
||||||
take
|
|
||||||
ten
|
|
||||||
than
|
|
||||||
that
|
|
||||||
the
|
|
||||||
their
|
|
||||||
them
|
|
||||||
themselves
|
|
||||||
then
|
|
||||||
thence
|
|
||||||
there
|
|
||||||
thereafter
|
|
||||||
thereby
|
|
||||||
therefore
|
|
||||||
therein
|
|
||||||
thereupon
|
|
||||||
these
|
|
||||||
they
|
|
||||||
thick
|
|
||||||
thin
|
|
||||||
third
|
|
||||||
this
|
|
||||||
those
|
|
||||||
though
|
|
||||||
three
|
|
||||||
through
|
|
||||||
throughout
|
|
||||||
thru
|
|
||||||
thus
|
|
||||||
to
|
|
||||||
together
|
|
||||||
too
|
|
||||||
top
|
|
||||||
toward
|
|
||||||
towards
|
|
||||||
twelve
|
|
||||||
twenty
|
|
||||||
two
|
|
||||||
un
|
|
||||||
under
|
|
||||||
until
|
|
||||||
up
|
|
||||||
upon
|
|
||||||
us
|
|
||||||
very
|
|
||||||
via
|
|
||||||
was
|
|
||||||
we
|
|
||||||
well
|
|
||||||
were
|
|
||||||
what
|
|
||||||
whatever
|
|
||||||
when
|
|
||||||
whence
|
|
||||||
whenever
|
|
||||||
where
|
|
||||||
whereafter
|
|
||||||
whereas
|
|
||||||
whereby
|
|
||||||
wherein
|
|
||||||
whereupon
|
|
||||||
wherever
|
|
||||||
whether
|
|
||||||
which
|
|
||||||
while
|
|
||||||
whither
|
|
||||||
who
|
|
||||||
whoever
|
|
||||||
whole
|
|
||||||
whom
|
|
||||||
whose
|
|
||||||
why
|
|
||||||
will
|
|
||||||
with
|
|
||||||
within
|
|
||||||
without
|
|
||||||
would
|
|
||||||
yet
|
|
||||||
you
|
|
||||||
your
|
|
||||||
yours
|
|
||||||
yourself
|
|
||||||
yourselves
|
|
||||||
#other number
|
|
|
@ -1,7 +0,0 @@
|
||||||
世博园/null
|
|
||||||
世博会/null
|
|
||||||
长城/null
|
|
||||||
黄山/null
|
|
||||||
衡山/null
|
|
||||||
华山/null
|
|
||||||
泰山/null
|
|
|
@ -1,39 +0,0 @@
|
||||||
#中文单字单位词库
|
|
||||||
#长度
|
|
||||||
米
|
|
||||||
寸
|
|
||||||
尺
|
|
||||||
丈
|
|
||||||
里
|
|
||||||
#时间
|
|
||||||
年
|
|
||||||
月
|
|
||||||
日
|
|
||||||
时
|
|
||||||
#分
|
|
||||||
秒
|
|
||||||
#币
|
|
||||||
元
|
|
||||||
角
|
|
||||||
#容量
|
|
||||||
升
|
|
||||||
斗
|
|
||||||
石
|
|
||||||
瓶
|
|
||||||
袋
|
|
||||||
盒
|
|
||||||
#重量
|
|
||||||
吨
|
|
||||||
克
|
|
||||||
斤
|
|
||||||
两
|
|
||||||
担
|
|
||||||
#地积
|
|
||||||
亩
|
|
||||||
顷
|
|
||||||
#其他
|
|
||||||
折
|
|
||||||
件
|
|
||||||
番
|
|
||||||
℃
|
|
||||||
℉
|
|
|
@ -1,52 +0,0 @@
|
||||||
QT -= gui
|
|
||||||
|
|
||||||
VERSION = 0.0.1
|
|
||||||
TARGET = friso
|
|
||||||
TEMPLATE = lib
|
|
||||||
DEFINES += LIBFRISO_LIBRARY
|
|
||||||
|
|
||||||
CONFIG += c++11
|
|
||||||
|
|
||||||
# The following define makes your compiler emit warnings if you use
|
|
||||||
# any Qt feature that has been marked deprecated (the exact warnings
|
|
||||||
# depend on your compiler). Please consult the documentation of the
|
|
||||||
# deprecated API in order to know how to port your code away from it.
|
|
||||||
DEFINES += QT_DEPRECATED_WARNINGS
|
|
||||||
|
|
||||||
# You can also make your code fail to compile if it uses deprecated APIs.
|
|
||||||
# In order to do so, uncomment the following line.
|
|
||||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
|
||||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
|
||||||
include(friso/friso.pri)
|
|
||||||
|
|
||||||
SOURCES += \
|
|
||||||
friso-interface.c
|
|
||||||
|
|
||||||
HEADERS += \
|
|
||||||
friso-interface.h \
|
|
||||||
|
|
||||||
dict_utf_files.path = /usr/share/ukui-search/res/dict/UTF-8/
|
|
||||||
dict_utf_files.files = $$PWD/friso/vendors/dict/UTF-8/*
|
|
||||||
dict_gbk_files.path = /usr/share/ukui-search/res/dict/GBK/
|
|
||||||
dict_gbk_files.files = $$PWD/friso/vendors/dict/GBK/*
|
|
||||||
|
|
||||||
friso_ini.path = /usr/share/ukui-search/res/
|
|
||||||
friso_ini.files = $$PWD/friso/friso.ini
|
|
||||||
|
|
||||||
INSTALLS += \
|
|
||||||
dict_utf_files \
|
|
||||||
dict_gbk_files \
|
|
||||||
friso_ini
|
|
||||||
|
|
||||||
# Default rules for deployment.
|
|
||||||
unix {
|
|
||||||
target.path = /usr/lib
|
|
||||||
}
|
|
||||||
!isEmpty(target.path): INSTALLS += target
|
|
||||||
|
|
||||||
DISTFILES += \
|
|
||||||
friso/vendors/dict/UTF-8/* \
|
|
||||||
friso/vendors/dict/GBK/* \
|
|
||||||
friso/friso.ini
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue