SphinxBase  0.6
jsgf.c File Reference

This file implements the data structures for parsing JSGF grammars into Sphinx finite-state grammars. More...

#include <string.h>
#include <assert.h>
#include "sphinxbase/ckd_alloc.h"
#include "sphinxbase/strfuncs.h"
#include "sphinxbase/hash_table.h"
#include "sphinxbase/err.h"
#include "jsgf_internal.h"
#include "jsgf_parser.h"
#include "jsgf_scanner.h"

Go to the source code of this file.

Functions

int yyparse (yyscan_t yyscanner, jsgf_t *jsgf)
jsgf_atom_tjsgf_atom_new (char *name, float weight)
int jsgf_atom_free (jsgf_atom_t *atom)
jsgf_tjsgf_grammar_new (jsgf_t *parent)
 Create a new JSGF grammar.
void jsgf_grammar_free (jsgf_t *jsgf)
 Free a JSGF grammar.
jsgf_atom_tjsgf_kleene_new (jsgf_t *jsgf, jsgf_atom_t *atom, int plus)
jsgf_rule_tjsgf_optional_new (jsgf_t *jsgf, jsgf_rhs_t *exp)
void jsgf_add_link (jsgf_t *grammar, jsgf_atom_t *atom, int from, int to)
jsgf_rule_iter_tjsgf_rule_iter (jsgf_t *grammar)
 Get an iterator over all rules in a grammar.
jsgf_rule_tjsgf_get_rule (jsgf_t *grammar, char const *name)
 Get a rule by name from a grammar.
char const * jsgf_rule_name (jsgf_rule_t *rule)
 Get the rule name from a rule.
int jsgf_rule_public (jsgf_rule_t *rule)
 Test if a rule is public or not.
fsg_model_tjsgf_build_fsg (jsgf_t *grammar, jsgf_rule_t *rule, logmath_t *lmath, float32 lw)
 Build a Sphinx FSG object from a JSGF rule.
fsg_model_tjsgf_build_fsg_raw (jsgf_t *grammar, jsgf_rule_t *rule, logmath_t *lmath, float32 lw)
 Build a Sphinx FSG object from a JSGF rule.
int jsgf_write_fsg (jsgf_t *grammar, jsgf_rule_t *rule, FILE *outfh)
 Convert a JSGF rule to Sphinx FSG text form.
jsgf_rule_tjsgf_define_rule (jsgf_t *jsgf, char *name, jsgf_rhs_t *rhs, int public)
jsgf_rule_tjsgf_rule_retain (jsgf_rule_t *rule)
int jsgf_rule_free (jsgf_rule_t *rule)
jsgf_rule_tjsgf_import_rule (jsgf_t *jsgf, char *name)
jsgf_tjsgf_parse_file (const char *filename, jsgf_t *parent)
 Parse a JSGF grammar from a file.

Detailed Description

This file implements the data structures for parsing JSGF grammars into Sphinx finite-state grammars.

Definition in file jsgf.c.

Function Documentation

fsg_model_t* jsgf_build_fsg_raw ( jsgf_t grammar,
jsgf_rule_t rule,
logmath_t lmath,
float32  lw 
)

Build a Sphinx FSG object from a JSGF rule.

This differs from jsgf_build_fsg() in that it does not do closure on epsilon transitions or any other postprocessing. For the time being this is necessary in order to write it to a file - the FSG code will be fixed soon.

Definition at line 500 of file jsgf.c.

Referenced by jsgf_write_fsg().

jsgf_t* jsgf_grammar_new ( jsgf_t parent)

Create a new JSGF grammar.

Parameters
parentoptional parent grammar for this one (NULL, usually).
Returns
new JSGF grammar object, or NULL on failure.

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().

jsgf_t* jsgf_parse_file ( const char *  filename,
jsgf_t parent 
)

Parse a JSGF grammar from a file.

Parameters
filenamethe name of the file to parse.
parentoptional parent grammar for this one (NULL, usually).
Returns
new JSGF grammar object, or NULL on failure.

Definition at line 699 of file jsgf.c.

References jsgf_grammar_free(), and jsgf_grammar_new().

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 507 of file jsgf.c.

References jsgf_build_fsg_raw(), logmath_free(), and logmath_init().