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> -toprule <rule name>\\\n", pgm);
90 E_INFOCONT(
"\t[-fsm yes/no] [-compile yes/no]\n");
97 get_fsg(
jsgf_t *grammar,
const char *name)
107 E_ERROR(
"Start rule %s not found\n", name);
116 E_INFO(
"No -toprule was given; grabbing the first public rule: "
117 "'%s' of the grammar '%s'.\n",
128 main(
int argc,
char *argv[])
135 if ((config =
cmd_ln_parse_r(NULL, defn, argc, argv, TRUE)) == NULL)
148 if (!(fsg = get_fsg(jsgf, rule))) {
149 E_ERROR(
"No fsg was built for the given rule '%s'.\n"
150 "Check rule name; it should be qualified (with grammar name)\n"
151 "and not enclosed in angle brackets (e.g. 'grammar.rulename').",
158 fsg_model_null_trans_closure(fsg, NULL);
166 fsg_model_writefile_fsm(fsg, outfile);
168 fsg_model_write_fsm(fsg, stdout);
170 fsg_model_writefile_symtab(fsg, symfile);
175 fsg_model_writefile(fsg, outfile);
177 fsg_model_write(fsg, stdout);
186 #if defined(_WIN32_WCE)
187 #pragma comment(linker,"/entry:mainWCRTStartup")
191 int wmain(int32 argc,
wchar_t *wargv[]) {
197 argv = malloc(argc*
sizeof(
char*));
198 for (i = 0; i < argc; i++){
199 wlen = lstrlenW(wargv[i]);
200 len = wcstombs(NULL, wargv[i], wlen);
201 argv[i] = malloc(len+1);
202 wcstombs(argv[i], wargv[i], wlen);
206 return main(argc, argv);
Miscellaneous useful string functions.
#define E_INFO(...)
Print logging information to standard error stream.
SPHINXBASE_EXPORT jsgf_rule_t * jsgf_get_rule(jsgf_t *grammar, const char *name)
Get a rule by name from a grammar.
#define E_ERROR(...)
Print error message to error log.
#define E_INFOCONT(...)
Continue printing the 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 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 char const * jsgf_grammar_name(jsgf_t *jsgf)
Get the grammar name from the file.
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.
Implementation of logging routines.
#define ARG_BOOLEAN
Boolean (true/false) argument (optional).
Argument definition structure.
Opaque structure used to hold the results of command-line parsing.
#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_t * jsgf_get_public_rule(jsgf_t *grammar)
Returns the first public rule of the grammar.