1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
#define DEBUGn
#ifdef patDEBUG
#define OI(x) {printf("< %d >\n",x);fflush(stdout);} /* Output Integer */ /*ǥХ*/
#define OS(x) {printf("[ %s ]\n",x);fflush(stdout);} /* Output String */
#define OS2(x) {printf("%s\n",x);fflush(stdout);} /* Output String */
#define OM(x) {printf("Message: " #x "\n");fflush(stdout);} /* Output Message */
#define OL(x) {printf(#x);fflush(stdout);} /* Output Label */
#else
#define OI(x) /* */
#define OS(x) /* */
#define OS2(x) /* */
#define OM(x) /* */
#define OL(x) /* */
#endif
#include <sys/types.h>
#include <sys/stat.h>
#ifndef NO_MMAP
#include <sys/mman.h>
#endif
#ifdef _WIN32
typedef unsigned char * caddr_t;
#endif /* _WIN32 */
#define MAX_DIC_NUMBER 5 /* Ʊ˻Ȥ뼭οξ (ChaSen) */
#define SIKII_BIT 16 /* ʸʸζڤϲӥå? (8 or 16) */
#if !defined(_WIN32)
#define O_BINARY 0
#endif
/* ǥåѤΥꥹȷ */
typedef struct pat_index_list {
struct pat_index_list *next; /* Ĥ */
long index; /* եΥǥå */
} pat_index_list;
/* ΡɤΥǡ¤ */
typedef struct pat_node {
pat_index_list il; /* ǥåΥꥹ */
short checkbit; /* åӥåȤλꡣ(ܤΥӥå?) */
#if 0
char *str; /* ȥ饤ȤƤĤ˺ɬפʸ¸ 960919 */
#endif
struct pat_node *right; /* ؤޤޡ */
struct pat_node *left; /* ؤޤޡ */
} pat_node;
/* MMAPѤΤμ äԤ */
typedef struct _dic_t {
int used;
int fd;
off_t size;
caddr_t addr;
} dic_mmap_info;
/*** ChaSenϢ ***/
extern pat_node tree_top[MAX_DIC_NUMBER]; /* ڤΤͤä οȤ */
extern FILE *dic_file[MAX_DIC_NUMBER]; /* ڤΤȥǡ(ե) */
extern dic_mmap_info dicinfo[MAX_DIC_NUMBER]; /* MMAPΤμ */
extern int number_of_tree; /* Ѥ뼭(ѥ)ο */
/**************************
* ؿΥץȥ *
**************************/
/* pat.c */
extern void pat_init_tree_top(); /* ѥȥꥷڤκν */
extern pat_node *pat_search(); /* ѥȥꥷڤǸ */
extern pat_node *pat_search4insert(); /* Ѹ */
extern void pat_insert(); /* ѥȥꥷڤ */
extern int pat_bits();
/* ʸλꤵ줿֤ΥӥåȤ֤ */
/* 960918 strlrn()Τ̵̤Ǥ뤳ȤȽ */
extern void show_pat(); /* ѥȥꥷڥǡ */
extern char *get_line(); /* ꤵ줿꤫'\n'ޤɤ */
/* patfile.c */
extern void com_s(); /* ִϢ */
extern void com_l(); /* ɴϢ */
extern pat_node *malloc_pat_node(); /* Matomete malloc */
extern pat_index_list *malloc_pat_index_list(); /* Matomete malloc */
/* morph.c */
extern void jisyohiki(); /* */
extern void insert_dic_data(); /* ǡ*/
/************************************************************************
*
* pat --- ѥȥꥷڤõ
*
* : Ĥ(tatuo-y@is.aist-nara.ac.jp)
*
* Ū: ѥȥꥷڤõԤ
*
* ʸ:
* 르ꥺΤʸ[1]ȤCǤμ
* ʸ[2]Υץͤˤ
* [1] R. Sedgewick ʿ顢ƣϡĸ
* 르ꥺ (Algorithms) 2 2 õʸ
* ʳؼ,1992. (B195-2,pp.68-72)
* [2] 졢ͭ߷ʿѡ§ ԽѰ
* 르ꥺ༭ŵ
* Ωdz,1994. (D74,pp.624-625)
*
* :
* 1996/04/09 ư! (ǡκĹ8bit[2])
* 10 ϥ롼Ƶ˲ɡʸǡб(Ĺ̵)
* 30 /ɵǽΡɤΥǡ¤IDֹɲ()
* 5/06 ʬڤǡϽ
* 6/11 ChaSenμѤ˲¤
* 21 ϢƳ(INDEXå夹)
* 7/01 ʣμե(ѥ)鸡Ǥ褦ˤ
*
* : ChaSenμѤ
*
************************************************************************/
|