s3_cfg.h File Reference

#include <stdio.h>
#include <logmath.h>
#include "prim_type.h"
#include "hash_table.h"
#include "s3_arraylist.h"
#include "fsg.h"

Go to the source code of this file.

Classes

struct  s3_cfg_rule_s
struct  s3_cfg_item_t
struct  s3_cfg_entry_s
struct  s3_cfg_state_s
struct  s3_cfg_t

Defines

#define S3_CFG_MAX_RULE_STR_LEN   1023
#define S3_CFG_MAX_ITEM_STR_LEN   40
#define S3_CFG_MAX_ITEM_COUNT   20
#define S3_CFG_INITIAL_RULE_COUNT   1
#define S3_CFG_INITIAL_RULE_SET_COUNT   50
#define S3_CFG_INITIAL_PARSE_SET_COUNT   20
#define S3_CFG_PARSE_HASH_SIZE   251
#define S3_CFG_INITIAL_STATE_SET_COUNT   20
#define S3_CFG_INITIAL_TERM_COUNT   50
#define S3_CFG_NAME_HASH_SIZE   4091
#define S3_CFG_INVALID_SCORE   1.0f
#define S3_CFG_INITIAL_SCORE   0.0f
#define S3_CFG_NONTERM_PREFIX   '$'
#define S3_CFG_TERM_BIT   0x80000000
#define S3_CFG_INDEX_MASK   0x7FFFFFFF
#define S3_CFG_INVALID_ID   0x7FFFFFFF
#define S3_CFG_PSTART_ITEM   0x00000000
#define S3_CFG_PSTART_ITEM_STR   "$PSTART"
#define S3_CFG_START_ITEM   0x00000001
#define S3_CFG_START_ITEM_STR   "$START"
#define S3_CFG_EOR_ITEM   (0x00000002 | S3_CFG_TERM_BIT)
#define S3_CFG_EOR_ITEM_STR   "#EOR#"
#define S3_CFG_EOI_ITEM   (0x00000003 | S3_CFG_TERM_BIT)
#define S3_CFG_EOI_ITEM_STR   "#EOI#"
#define S3_CFG_NIL_ITEM   (0x00000004 | S3_CFG_TERM_BIT)
#define S3_CFG_NIL_ITEM_STR   "#NIL#"
#define S3_CFG_START_RULE   { S3_CFG_PSTART_ITEM, 0.0f, { S3_CFG_START_ITEM, S3_CFG_EOR_ITEM }, 1 }
#define S3_CFG_AUTO_PRUNE_SCORE   0x00000001
#define S3_CFG_AUTO_PRUNE_RANK   0x00000002
#define s3_cfg_is_null_parse(x)   (x->entries.count == 0)
#define s3_cfg_is_terminal(x)   (x & S3_CFG_TERM_BIT)
#define s3_cfg_id2index(x)   (x & S3_CFG_INDEX_MASK)

Typedefs

typedef uint32 s3_cfg_id_t
typedef struct s3_cfg_rule_s s3_cfg_rule_t
typedef struct s3_cfg_entry_s s3_cfg_entry_t
typedef struct s3_cfg_state_s s3_cfg_state_t

Functions

void s3_cfg_init (s3_cfg_t *_cfg)
void s3_cfg_close (s3_cfg_t *_cfg)
S3DECODER_EXPORT s3_cfg_ts3_cfg_read_simple (const char *_fn)
s3_cfg_ts3_cfg_read_srgs (const char *_fn)
void s3_cfg_write_simple (s3_cfg_t *_cfg, const char *_fn)
S3DECODER_EXPORT s2_fsg_ts3_cfg_convert_to_fsg (s3_cfg_t *_cfg, int _max_expansion)
void s3_cfg_rescore (s3_cfg_t *_cfg, logmath_t *logmath)
s3_cfg_item_ts3_cfg_get_term_info (s3_cfg_t *_cfg, s3_cfg_id_t _id)
s3_cfg_state_ts3_cfg_create_parse (s3_cfg_t *_cfg)
void s3_cfg_free_parse (s3_cfg_t *_cfg, s3_cfg_state_t *_parse)
void s3_cfg_free_parse_tree (s3_cfg_t *_cfg, s3_cfg_state_t *_parse)
s3_cfg_state_ts3_cfg_input_term (s3_cfg_t *_cfg, s3_cfg_state_t *_cur, s3_cfg_id_t _term)
s3_cfg_rule_ts3_cfg_add_rule (s3_cfg_t *_cfg, s3_cfg_id_t _src, float32 _fake_score, s3_cfg_id_t *_products)
S3DECODER_EXPORT void s3_cfg_compile_rules (s3_cfg_t *_cfg, logmath_t *logmath)
void s3_cfg_print_rule (s3_cfg_t *_cfg, s3_cfg_rule_t *_rule, FILE *_out)
void s3_cfg_print_entry (s3_cfg_t *_cfg, s3_cfg_entry_t *_entry, FILE *_out)
void s3_cfg_print_parse (s3_cfg_t *_cfg, s3_cfg_entry_t *_parse, FILE *_out)
s3_cfg_id_t s3_cfg_str2id (s3_cfg_t *_cfg, char *_item)
const char * s3_cfg_id2str (s3_cfg_t *_cfg, s3_cfg_id_t _id)

Define Documentation

#define S3_CFG_AUTO_PRUNE_RANK   0x00000002
#define S3_CFG_AUTO_PRUNE_SCORE   0x00000001
#define S3_CFG_EOI_ITEM   (0x00000003 | S3_CFG_TERM_BIT)
#define S3_CFG_EOI_ITEM_STR   "#EOI#"
#define S3_CFG_EOR_ITEM   (0x00000002 | S3_CFG_TERM_BIT)
#define S3_CFG_EOR_ITEM_STR   "#EOR#"
#define s3_cfg_id2index (  )     (x & S3_CFG_INDEX_MASK)
#define S3_CFG_INDEX_MASK   0x7FFFFFFF
#define S3_CFG_INITIAL_PARSE_SET_COUNT   20
#define S3_CFG_INITIAL_RULE_COUNT   1
#define S3_CFG_INITIAL_RULE_SET_COUNT   50
#define S3_CFG_INITIAL_SCORE   0.0f
#define S3_CFG_INITIAL_STATE_SET_COUNT   20
#define S3_CFG_INITIAL_TERM_COUNT   50
#define S3_CFG_INVALID_ID   0x7FFFFFFF
#define S3_CFG_INVALID_SCORE   1.0f
#define s3_cfg_is_null_parse (  )     (x->entries.count == 0)
#define s3_cfg_is_terminal (  )     (x & S3_CFG_TERM_BIT)
#define S3_CFG_MAX_ITEM_COUNT   20
#define S3_CFG_MAX_ITEM_STR_LEN   40
#define S3_CFG_MAX_RULE_STR_LEN   1023
#define S3_CFG_NAME_HASH_SIZE   4091
#define S3_CFG_NIL_ITEM   (0x00000004 | S3_CFG_TERM_BIT)
#define S3_CFG_NIL_ITEM_STR   "#NIL#"
#define S3_CFG_NONTERM_PREFIX   '$'
#define S3_CFG_PARSE_HASH_SIZE   251
#define S3_CFG_PSTART_ITEM   0x00000000
#define S3_CFG_PSTART_ITEM_STR   "$PSTART"
#define S3_CFG_START_ITEM   0x00000001
#define S3_CFG_START_ITEM_STR   "$START"
#define S3_CFG_START_RULE   { S3_CFG_PSTART_ITEM, 0.0f, { S3_CFG_START_ITEM, S3_CFG_EOR_ITEM }, 1 }
#define S3_CFG_TERM_BIT   0x80000000

Typedef Documentation

typedef uint32 s3_cfg_id_t
typedef struct s3_cfg_rule_s s3_cfg_rule_t

Function Documentation

s3_cfg_rule_t* s3_cfg_add_rule ( s3_cfg_t _cfg,
s3_cfg_id_t  _src,
float32  _fake_score,
s3_cfg_id_t _products 
)

Add an expansion rule to the CFG parser.

Parameters:
_cfg A CFG parser.
_src The source of the expansion. Must be a non-terminal.
_fake_score Un-normalized transition scores.
_products An array of expansion terms. Terminated by S3_CFG_EOR_ITEM.
Returns:
A CFG expansion rule.
void s3_cfg_close ( s3_cfg_t _cfg  ) 

Close a CFG parser and free its contents. The parser structure is not freed (since it was not allocated by init).

Parameters:
_cfg A (pre-allocated) CFG parser.
S3DECODER_EXPORT void s3_cfg_compile_rules ( s3_cfg_t _cfg,
logmath_t *  logmath 
)

The consistency of the rule scores must be compiled before the parser can be used.

Parameters:
_cfg A CFG parser.

Referenced by main().

S3DECODER_EXPORT s2_fsg_t* s3_cfg_convert_to_fsg ( s3_cfg_t _cfg,
int  _max_expansion 
)

Heuristically convert a CFG to a FSG by limiting non-terminal expansions.

Parameters:
_cfg A CFG parser.
Returns:
A FSG.

Referenced by main().

s3_cfg_state_t* s3_cfg_create_parse ( s3_cfg_t _cfg  ) 

Start a CFG parse session.

Parameters:
_cfg A CFG parser.
Returns:
A parse session.
void s3_cfg_free_parse ( s3_cfg_t _cfg,
s3_cfg_state_t _parse 
)

Free a CFG parse session.

Parameters:
_cfg A CFG parser.
_parse A parse session.
void s3_cfg_free_parse_tree ( s3_cfg_t _cfg,
s3_cfg_state_t _parse 
)
s3_cfg_item_t* s3_cfg_get_term_info ( s3_cfg_t _cfg,
s3_cfg_id_t  _id 
)

Fetch information on a term.

Parameters:
_cfg A CFG parser.
_id A term id.
Returns:
Term information.
const char* s3_cfg_id2str ( s3_cfg_t _cfg,
s3_cfg_id_t  _id 
)

Convert a term id to its original string representation.

Parameters:
_cfg A CFG parser.
_id A term id.
Returns:
A string representation of the term.
void s3_cfg_init ( s3_cfg_t _cfg  ) 

Initialize a CFG parser. The parser structure must be allocated outside the function.

Parameters:
_cfg A (pre-allocated) CFG parser.
s3_cfg_state_t* s3_cfg_input_term ( s3_cfg_t _cfg,
s3_cfg_state_t _cur,
s3_cfg_id_t  _term 
)

Continue a parse session by feeding it an input term.

Parameters:
_cfg A CFG parser.
_cur A parse session.
_term An input term. Must be a terminal.
void s3_cfg_print_entry ( s3_cfg_t _cfg,
s3_cfg_entry_t _entry,
FILE *  _out 
)

Print a CFG parse entry. It is a single stage of a single rule expansion. For reference, lookup chart parsers.

Parameters:
_cfg A CFG parser.
_entry A CFG parse entry.
_out An output stream.
void s3_cfg_print_parse ( s3_cfg_t _cfg,
s3_cfg_entry_t _parse,
FILE *  _out 
)

Print a parse session. This will print all active entries in the parse, including unfinished parses.

Parameters:
_cfg A CFG parser.
_parse A parse session.
_out An output stream.
void s3_cfg_print_rule ( s3_cfg_t _cfg,
s3_cfg_rule_t _rule,
FILE *  _out 
)

Print a CFG expansion rule.

Parameters:
_cfg A CFG parser.
_rule A CFG expansion rule.
_out An output stream.
S3DECODER_EXPORT s3_cfg_t* s3_cfg_read_simple ( const char *  _fn  ) 

Read a CFG from a plain-text file. The parser structure must be freed afterwards.

Parameters:
_fn Plain-text file.
Returns:
A CFG parser.

Referenced by main().

s3_cfg_t* s3_cfg_read_srgs ( const char *  _fn  ) 

Read a CFG from a XML-based SRGS file. The parser structure must be freed afterwards. For more information on SRGS, visit http://www.w3.org/TR/speech-grammar/.

Parameters:
_fn XML-based SRGS file.
Returns:
A CFG parser.
void s3_cfg_rescore ( s3_cfg_t _cfg,
logmath_t *  logmath 
)
s3_cfg_id_t s3_cfg_str2id ( s3_cfg_t _cfg,
char *  _item 
)

Convert a term string representation to a term id. If the term does not already exist, assign it a new id.

Parameters:
_cfg A CFG parser.
_item A term string representation.
Returns:
A term id.
void s3_cfg_write_simple ( s3_cfg_t _cfg,
const char *  _fn 
)

Write the CFG to a plain-text file.

Parameters:
_cfg A CFG parser.
_fn An output filename.
Returns:
0 for success. -1 for failure.

Generated on 7 Mar 2010 by  doxygen 1.6.1