SphinxBase
0.6
|
00001 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */ 00002 /* ==================================================================== 00003 * Copyright (c) 2007 Carnegie Mellon University. All rights 00004 * reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions 00008 * are met: 00009 * 00010 * 1. Redistributions of source code must retain the above copyright 00011 * notice, this list of conditions and the following disclaimer. 00012 * 00013 * 2. Redistributions in binary form must reproduce the above copyright 00014 * notice, this list of conditions and the following disclaimer in 00015 * the documentation and/or other materials provided with the 00016 * distribution. 00017 * 00018 * This work was supported in part by funding from the Defense Advanced 00019 * Research Projects Agency and the National Science Foundation of the 00020 * United States of America, and the CMU Sphinx Speech Consortium. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 00023 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 00024 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00025 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY 00026 * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00027 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00028 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00029 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00030 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00031 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00032 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 * 00034 * ==================================================================== 00035 * 00036 */ 00037 00038 #ifndef __JSGF_H__ 00039 #define __JSGF_H__ 00040 00048 #include <stdio.h> 00049 00050 /* Win32/WinCE DLL gunk */ 00051 #include <sphinxbase/sphinxbase_export.h> 00052 #include <sphinxbase/hash_table.h> 00053 #include <sphinxbase/fsg_model.h> 00054 #include <sphinxbase/logmath.h> 00055 00056 #ifdef __cplusplus 00057 extern "C" { 00058 #endif 00059 #if 0 00060 /* Fool Emacs. */ 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 00083 SPHINXBASE_EXPORT 00084 jsgf_t *jsgf_parse_file(const char *filename, jsgf_t *parent); 00085 00089 SPHINXBASE_EXPORT 00090 void jsgf_grammar_free(jsgf_t *jsgf); 00091 00095 typedef hash_iter_t jsgf_rule_iter_t; 00096 00100 SPHINXBASE_EXPORT 00101 jsgf_rule_iter_t *jsgf_rule_iter(jsgf_t *grammar); 00102 00106 #define jsgf_rule_iter_next(itor) hash_table_iter_next(itor) 00107 00111 #define jsgf_rule_iter_rule(itor) ((jsgf_rule_t *)(itor)->ent->val) 00112 00116 #define jsgf_rule_iter_free(itor) hash_table_iter_free(itor) 00117 00121 SPHINXBASE_EXPORT 00122 jsgf_rule_t *jsgf_get_rule(jsgf_t *grammar, char const *name); 00123 00127 SPHINXBASE_EXPORT 00128 char const *jsgf_rule_name(jsgf_rule_t *rule); 00129 00133 SPHINXBASE_EXPORT 00134 int jsgf_rule_public(jsgf_rule_t *rule); 00135 00139 SPHINXBASE_EXPORT 00140 fsg_model_t *jsgf_build_fsg(jsgf_t *grammar, jsgf_rule_t *rule, 00141 logmath_t *lmath, float32 lw); 00142 00151 SPHINXBASE_EXPORT 00152 fsg_model_t *jsgf_build_fsg_raw(jsgf_t *grammar, jsgf_rule_t *rule, 00153 logmath_t *lmath, float32 lw); 00154 00161 SPHINXBASE_EXPORT 00162 int jsgf_write_fsg(jsgf_t *grammar, jsgf_rule_t *rule, FILE *outfh); 00163 00164 #ifdef __cplusplus 00165 } 00166 #endif 00167 00168 00169 #endif /* __JSGF_H__ */