Julius 4.2
libsent/include/sent/dfa.h
説明を見る。
00001 
00035 /*
00036  * Copyright (c) 1991-2011 Kawahara Lab., Kyoto University
00037  * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
00038  * Copyright (c) 2005-2011 Julius project team, Nagoya Institute of Technology
00039  * All rights reserved
00040  */
00041 
00042 #ifndef __SENT_DFA_H__
00043 #define __SENT_DFA_H__
00044 
00045 #include <sent/stddefs.h>
00046 
00047 #define DFA_STATESTEP 1000      ///< Allocation step of DFA state
00048 
00049 #define DFA_CP_MINSTEP 20       ///< Minimum initial CP data size per category
00050 
00051 #define INITIAL_S 0x10000000    ///< Status flag mask specifying an initial state
00052 #define ACCEPT_S  0x00000001    ///< Status flag mask specifying an accept state
00053 
00055 typedef struct _dfa_arc {
00056   short label;                  
00057   int to_state;                 
00058   struct _dfa_arc *next;        
00059 } DFA_ARC;
00060 
00062 typedef struct {
00063   int           number;         
00064   unsigned int  status;         
00065   DFA_ARC       *arc;           
00066 } DFA_STATE;
00067 
00069 typedef struct {
00070   int term_num;                 
00071   WORD_ID **tw;                 
00072   int *wnum;                    
00073 } TERM_INFO;
00074 
00076 typedef struct {
00077   DFA_STATE *st;                
00078   int maxstatenum;              
00079   int state_num;                
00080   int arc_num;                  
00081   int term_num;                 
00082   int **cp;           
00083   int *cplen;                   
00084   int *cpalloclen;              
00085   int *cp_begin;      
00086   int cp_begin_len;             
00087   int cp_begin_alloclen;                
00088   int *cp_end;  
00089   int cp_end_len;               
00090   int cp_end_alloclen;          
00091   TERM_INFO term;               
00092   boolean *is_sp;               
00093   WORD_ID sp_id;                
00094 } DFA_INFO;
00095 
00096 #ifdef __cplusplus
00097 extern "C" {
00098 #endif
00099 
00100 DFA_INFO *dfa_info_new();
00101 void dfa_info_free(DFA_INFO *dfa);
00102 void dfa_state_init(DFA_INFO *dinfo);
00103 void dfa_state_expand(DFA_INFO *dinfo, int needed);
00104 boolean rddfa(FILE *fp, DFA_INFO *dinfo);
00105 boolean rddfa_fp(FILE *fp, DFA_INFO *dinfo);
00106 boolean rddfa_line(char *line, DFA_INFO *dinfo, int *state_max, int *arc_num, int *terminal_max);
00107 void dfa_append(DFA_INFO *dst, DFA_INFO *src, int soffset, int coffset);
00108 
00109 boolean init_dfa(DFA_INFO *dinfo, char *filename);
00110 WORD_ID dfa_symbol_lookup(DFA_INFO *dinfo, char *terminalname);
00111 boolean extract_cpair(DFA_INFO *dinfo);
00112 boolean cpair_append(DFA_INFO *dst, DFA_INFO *src, int coffset);
00113 void print_dfa_info(FILE *fp, DFA_INFO *dinfo);
00114 void print_dfa_cp(FILE *fp, DFA_INFO *dinfo);
00115 boolean dfa_cp(DFA_INFO *dfa, int i, int j);
00116 boolean dfa_cp_begin(DFA_INFO *dfa, int i);
00117 boolean dfa_cp_end(DFA_INFO *dfa, int i);
00118 void set_dfa_cp(DFA_INFO *dfa, int i, int j, boolean value);
00119 void set_dfa_cp_begin(DFA_INFO *dfa, int i, boolean value);
00120 void set_dfa_cp_end(DFA_INFO *dfa, int i, boolean value);
00121 void init_dfa_cp(DFA_INFO *dfa);
00122 void malloc_dfa_cp(DFA_INFO *dfa, int term_num, int size);
00123 void realloc_dfa_cp(DFA_INFO *dfa, int old_term_num, int new_term_num);
00124 void free_dfa_cp(DFA_INFO *dfa);
00125 void dfa_cp_output_rawdata(FILE *fp, DFA_INFO *dfa);
00126 void dfa_cp_count_size(DFA_INFO *dfa, unsigned long *size_ret, unsigned long *allocsize_ret);
00127 boolean dfa_cp_append(DFA_INFO *dfa, DFA_INFO *src, int offset);
00128 
00129 #include <sent/vocabulary.h>
00130 boolean make_dfa_voca_ref(DFA_INFO *dinfo, WORD_INFO *winfo);
00131 void make_terminfo(TERM_INFO *tinfo, DFA_INFO *dinfo, WORD_INFO *winfo);
00132 void free_terminfo(TERM_INFO *tinfo);
00133 void terminfo_append(TERM_INFO *dst, TERM_INFO *src, int coffset, int woffset);
00134 #include <sent/htk_hmm.h>
00135 void dfa_find_pause_word(DFA_INFO *dfa, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo);
00136 boolean dfa_pause_word_append(DFA_INFO *dst, DFA_INFO *src, int coffset);
00137 
00138 #ifdef __cplusplus
00139 }
00140 #endif
00141 
00142 #endif /* __SENT_DFA_H__ */