00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef __JSGF_H__
00039 #define __JSGF_H__
00040
00048
00049 #include <sphinxbase_export.h>
00050 #include <hash_table.h>
00051 #include <glist.h>
00052 #include <stdio.h>
00053 #include <fsg_model.h>
00054 #include <logmath.h>
00055
00056 #ifdef __cplusplus
00057 extern "C" {
00058 #endif
00059 #if 0
00060
00061 }
00062 #endif
00063
00064 typedef struct jsgf_s jsgf_t;
00065 typedef struct jsgf_rule_s jsgf_rule_t;
00066
00073 SPHINXBASE_EXPORT
00074 jsgf_t *jsgf_grammar_new(jsgf_t *parent);
00075
00082 SPHINXBASE_EXPORT
00083 jsgf_t *jsgf_parse_file(const char *filename, jsgf_t *parent);
00084
00088 SPHINXBASE_EXPORT
00089 void jsgf_grammar_free(jsgf_t *jsgf);
00090
00094 typedef hash_iter_t jsgf_rule_iter_t;
00095
00099 SPHINXBASE_EXPORT
00100 jsgf_rule_iter_t *jsgf_rule_iter(jsgf_t *grammar);
00101
00105 #define jsgf_rule_iter_next(itor) hash_table_iter_next(itor)
00106
00110 #define jsgf_rule_iter_rule(itor) ((jsgf_rule_t *)(itor)->ent->val)
00111
00115 #define jsgf_rule_iter_free(itor) hash_table_iter_free(itor)
00116
00120 SPHINXBASE_EXPORT
00121 jsgf_rule_t *jsgf_get_rule(jsgf_t *grammar, char const *name);
00122
00126 SPHINXBASE_EXPORT
00127 char const *jsgf_rule_name(jsgf_rule_t *rule);
00128
00132 SPHINXBASE_EXPORT
00133 int jsgf_rule_public(jsgf_rule_t *rule);
00134
00138 SPHINXBASE_EXPORT
00139 fsg_model_t *jsgf_build_fsg(jsgf_t *grammar, jsgf_rule_t *rule,
00140 logmath_t *lmath, float32 lw);
00141
00148 SPHINXBASE_EXPORT
00149 int jsgf_write_fsg(jsgf_t *grammar, jsgf_rule_t *rule, FILE *outfh);
00150
00151 #ifdef __cplusplus
00152 }
00153 #endif
00154
00155
00156 #endif