41 #include <sphinxbase/fsg_model.h>
46 static const arg_t defn[] = {
50 "Shows the usage of the tool"},
55 "Input grammar in jsgf format (required)"},
60 "Root rule name (optional)"},
65 "Output grammar in fsg format"},
70 "Output grammar in FSM format"},
75 "Output symtab for grammar in FSM format"},
80 "Compute grammar closure to speedup loading"},
82 { NULL, 0, NULL, NULL }
89 E_INFO(
"Usage: %s -jsgf <input.jsgf> -rule <rule name>\\\n", pgm);
90 E_INFOCONT(
"\t[-fsm yes/no] [-compile yes/no]\n");
97 get_fsg(
jsgf_t *grammar,
const char *name)
109 || (name && strlen(rule_name)-2 == strlen(name) &&
110 0 == strncmp(rule_name + 1, name, strlen(rule_name) - 2))) {
122 main(
int argc,
char *argv[])
128 if ((config =
cmd_ln_parse_r(NULL, defn, argc, argv, TRUE)) == NULL)
143 fsg_model_null_trans_closure(fsg, NULL);
151 fsg_model_writefile_fsm(fsg, outfile);
153 fsg_model_write_fsm(fsg, stdout);
155 fsg_model_writefile_symtab(fsg, symfile);
160 fsg_model_writefile(fsg, outfile);
162 fsg_model_write(fsg, stdout);
171 #if defined(_WIN32_WCE)
172 #pragma comment(linker,"/entry:mainWCRTStartup")
176 int wmain(int32 argc,
wchar_t *wargv[]) {
182 argv = malloc(argc*
sizeof(
char*));
183 for (i=0; i<argc; i++){
184 wlen = lstrlenW(wargv[i]);
185 len = wcstombs(NULL, wargv[i], wlen);
186 argv[i] = malloc(len+1);
187 wcstombs(argv[i], wargv[i], wlen);
191 return main(argc, argv);
Miscellaneous useful string functions.
#define jsgf_rule_iter_next(itor)
Advance an iterator to the next rule in the grammar.
#define E_INFO
Print logging information to standard error stream.
SPHINXBASE_EXPORT cmd_ln_t * cmd_ln_parse_r(cmd_ln_t *inout_cmdln, arg_t const *defn, int32 argc, char *argv[], int32 strict)
Parse a list of strings into argumetns.
SPHINXBASE_EXPORT jsgf_t * jsgf_parse_file(const char *filename, jsgf_t *parent)
Parse a JSGF grammar from a file.
#define ARG_STRING
String argument (optional).
SPHINXBASE_EXPORT int logmath_free(logmath_t *lmath)
Free a log table.
SPHINXBASE_EXPORT char const * cmd_ln_str_r(cmd_ln_t *cmdln, char const *name)
Retrieve a string from a command-line object.
#define REQARG_STRING
Required string argument.
SPHINXBASE_EXPORT char const * jsgf_rule_name(jsgf_rule_t *rule)
Get the rule name from a rule.
SPHINXBASE_EXPORT logmath_t * logmath_init(float64 base, int shift, int use_table)
Initialize a log math computation table.
char * outfile
Path to output file.
SPHINXBASE_EXPORT logmath_t * logmath_retain(logmath_t *lmath)
Retain ownership of a log table.
SPHINXBASE_EXPORT 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.
#define E_INFOCONT
Print logging information without header, to standard error stream.
Implementation of logging routines.
SPHINXBASE_EXPORT int jsgf_rule_public(jsgf_rule_t *rule)
Test if a rule is public or not.
#define ARG_BOOLEAN
Boolean (true/false) argument (optional).
Argument definition structure.
#define jsgf_rule_iter_rule(itor)
Get the current rule in a rule iterator.
Opaque structure used to hold the results of command-line parsing.
#define jsgf_rule_iter_free(itor)
Free a rule iterator (if the end hasn't been reached).
#define cmd_ln_boolean_r(c, n)
Retrieve a boolean value from a command-line object.
cmd_ln_t * config
Configuration parameters.
Hash table implementation.
Word level FSG definition.
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.