libsent/include/sent/dfa.h

Go to the documentation of this file.
00001 
00034 /*
00035  * Copyright (c) 1991-2006 Kawahara Lab., Kyoto University
00036  * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
00037  * Copyright (c) 2005-2006 Julius project team, Nagoya Institute of Technology
00038  * All rights reserved
00039  */
00040 
00041 #ifndef __SENT_DFA_H__
00042 #define __SENT_DFA_H__
00043 
00044 #include <sent/stddefs.h>
00045 
00046 #define DFA_STATESTEP 1000      
00047 
00048 #define INITIAL_S 0x10000000    
00049 #define ACCEPT_S  0x00000001    
00050 
00052 typedef struct _dfa_arc {
00053   short label;                  
00054   int to_state;                 
00055   struct _dfa_arc *next;        
00056 } DFA_ARC;
00057 
00059 typedef struct {
00060   int           number;         
00061   unsigned int  status;         
00062   DFA_ARC       *arc;           
00063 } DFA_STATE;
00064 
00066 typedef struct {
00067   int term_num;                 
00068   WORD_ID **tw;                 
00069   int *wnum;                    
00070 } TERM_INFO;
00071 
00073 typedef struct {
00074   DFA_STATE *st;                
00075   int maxstatenum;              
00076   int state_num;                
00077   int arc_num;                  
00078   int term_num;                 
00079 
00088   unsigned char **cp;           
00089   unsigned char *cp_begin;      
00090   unsigned char *cp_end;        
00091   unsigned char *cp_root;       
00092   TERM_INFO term;               
00093   boolean *is_sp;               
00094   WORD_ID sp_id;                
00095 } DFA_INFO;
00096 
00097 
00098 DFA_INFO *dfa_info_new();
00099 void dfa_info_free(DFA_INFO *dfa);
00100 void dfa_state_init(DFA_INFO *dinfo);
00101 void dfa_state_expand(DFA_INFO *dinfo, int needed);
00102 boolean rddfa(FILE *fp, DFA_INFO *dinfo);
00103 boolean rddfa_fd(int fd, DFA_INFO *dinfo);
00104 boolean rddfa_sd(int sd, DFA_INFO *dinfo);
00105 boolean rddfa_line(char *line, DFA_INFO *dinfo, int *state_max, int *arc_num, int *terminal_max);
00106 void dfa_append(DFA_INFO *dst, DFA_INFO *src, int soffset, int coffset);
00107 
00108 void init_dfa(DFA_INFO *dinfo, char *filename);
00109 WORD_ID dfa_symbol_lookup(DFA_INFO *dinfo, char *terminalname);
00110 void extract_cpair(DFA_INFO *dinfo);
00111 void cpair_append(DFA_INFO *dst, DFA_INFO *src, int coffset);
00112 void print_dfa_info(DFA_INFO *dinfo);
00113 void print_dfa_cp(DFA_INFO *dinfo);
00114 boolean dfa_cp(DFA_INFO *dfa, int i, int j);
00115 boolean dfa_cp_begin(DFA_INFO *dfa, int i);
00116 boolean dfa_cp_end(DFA_INFO *dfa, int i);
00117 void set_dfa_cp(DFA_INFO *dfa, int i, int j, boolean value);
00118 void set_dfa_cp_begin(DFA_INFO *dfa, int i, boolean value);
00119 void set_dfa_cp_end(DFA_INFO *dfa, int i, boolean value);
00120 void init_dfa_cp(DFA_INFO *dfa);
00121 void malloc_dfa_cp(DFA_INFO *dfa, int term_num);
00122 void realloc_dfa_cp(DFA_INFO *dfa, int old_term_num, int new_term_num);
00123 void free_dfa_cp(DFA_INFO *dfa);
00124 
00125 
00126 
00127 #include <sent/vocabulary.h>
00128 void make_dfa_voca_ref(DFA_INFO *dinfo, WORD_INFO *winfo);
00129 void make_terminfo(TERM_INFO *tinfo, DFA_INFO *dinfo, WORD_INFO *winfo);
00130 void terminfo_append(TERM_INFO *dst, TERM_INFO *src, int coffset, int woffset);
00131 #include <sent/htk_hmm.h>
00132 void dfa_find_pause_word(DFA_INFO *dfa, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo);
00133 void dfa_pause_word_append(DFA_INFO *dst, DFA_INFO *src, int coffset);
00134 
00135 #endif /* __SENT_DFA_H__ */

Generated on Tue Dec 26 16:16:33 2006 for Julius by  doxygen 1.5.0