JSGF grammar compiler. More...
#include <sphinxbase_export.h>
#include <hash_table.h>
#include <glist.h>
#include <stdio.h>
#include <fsg_model.h>
#include <logmath.h>
Go to the source code of this file.
Defines | |
#define | jsgf_rule_iter_next(itor) hash_table_iter_next(itor) |
Advance an iterator to the next rule in the grammar. | |
#define | jsgf_rule_iter_rule(itor) ((jsgf_rule_t *)(itor)->ent->val) |
Get the current rule in a rule iterator. | |
#define | jsgf_rule_iter_free(itor) hash_table_iter_free(itor) |
Free a rule iterator (if the end hasn't been reached). | |
Typedefs | |
typedef struct jsgf_s | jsgf_t |
typedef struct jsgf_rule_s | jsgf_rule_t |
typedef hash_iter_t | jsgf_rule_iter_t |
Iterator over rules in a grammar. | |
Functions | |
SPHINXBASE_EXPORT jsgf_t * | jsgf_grammar_new (jsgf_t *parent) |
Create a new JSGF grammar. | |
SPHINXBASE_EXPORT jsgf_t * | jsgf_parse_file (const char *filename, jsgf_t *parent) |
Parse a JSGF grammar from a file. | |
SPHINXBASE_EXPORT void | jsgf_grammar_free (jsgf_t *jsgf) |
Free a JSGF grammar. | |
SPHINXBASE_EXPORT jsgf_rule_iter_t * | jsgf_rule_iter (jsgf_t *grammar) |
Get an iterator over all rules in a grammar. | |
SPHINXBASE_EXPORT jsgf_rule_t * | jsgf_get_rule (jsgf_t *grammar, char const *name) |
Get a rule by name from a grammar. | |
SPHINXBASE_EXPORT char const * | jsgf_rule_name (jsgf_rule_t *rule) |
Get the rule name from a rule. | |
SPHINXBASE_EXPORT int | jsgf_rule_public (jsgf_rule_t *rule) |
Test if a rule is public or not. | |
SPHINXBASE_EXPORT fsg_model_t * | jsgf_build_fsg (jsgf_t *grammar, jsgf_rule_t *rule, logmath_t *lmath, float32 lw) |
Build a Sphinx FSG object from a JSGF rule. | |
SPHINXBASE_EXPORT int | jsgf_write_fsg (jsgf_t *grammar, jsgf_rule_t *rule, FILE *outfh) |
Convert a JSGF rule to Sphinx FSG text form. |
JSGF grammar compiler.
This file defines the data structures for parsing JSGF grammars into Sphinx finite-state grammars.
Definition in file jsgf.h.
Create a new JSGF grammar.
parent | optional parent grammar for this one (NULL, usually). |
Definition at line 81 of file jsgf.c.
References ckd_calloc, ckd_salloc, glist_add_ptr(), glist_reverse(), hash_table_new(), jsgf_s::imports, jsgf_s::parent, jsgf_s::rules, and jsgf_s::searchpath.
Referenced by jsgf_parse_file().
Parse a JSGF grammar from a file.
filename | the name of the file to parse. | |
parent | optional parent grammar for this one (NULL, usually). |
Definition at line 709 of file jsgf.c.
References jsgf_grammar_free(), and jsgf_grammar_new().
SPHINXBASE_EXPORT int jsgf_write_fsg | ( | jsgf_t * | grammar, | |
jsgf_rule_t * | rule, | |||
FILE * | outfh | |||
) |
Convert a JSGF rule to Sphinx FSG text form.
This does a direct conversion without doing transitive closure on null transitions and so forth.
Definition at line 486 of file jsgf.c.
References jsgf_link_s::atom, ckd_free(), jsgf_rule_s::entry, jsgf_rule_s::exit, jsgf_link_s::from, glist_free(), glist_reverse(), gnode_ptr, jsgf_s::links, jsgf_atom_s::name, jsgf_rule_s::name, jsgf_s::nstate, jsgf_link_s::to, and jsgf_atom_s::weight.