/**
* @file dfa_lookup.c
*
*
* @brief 単語辞書の単語に対応するカテゴリ番号を返す
*
* 実際には文法コンパイラ mkdfa.pl で各単語にカテゴリ番号が既に
* 割り当てられているので,ここでは値のチェックのみ行います.
*
*
*
* @brief Return DFA terminal (category) id to a given word.
*
* Actually the category ids are assigned beforehand by the grammar
* compiler mkdfa.pl. This function only checks the value.
*
*
* @author Akinobu LEE
* @date Tue Feb 15 14:11:41 2005
*
* $Revision: 1.4 $
*
*/
/*
* Copyright (c) 1991-2012 Kawahara Lab., Kyoto University
* Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
* Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology
* All rights reserved
*/
#include
#include
#include
/**
* Return category id corresponding to the given terminal name. Actually they
* are mere strings of ID itself.
*
* @param dinfo [in] DFA grammar information
* @param terminalname [in] name string
*
* @return the category id.
*/
WORD_ID
dfa_symbol_lookup(DFA_INFO *dinfo, char *terminalname)
{
WORD_ID id;
int c;
char *p;
/* check if terminal name is digit */
for(p=terminalname;*p!='\0';p++) {
c = *p;
if (! isdigit(c)) {
jlog("Error: dfa_lookup: terminal number is not digit in dict! [%s]\n", terminalname);
return(WORD_INVALID);
}
}
/* Currently, terminal ID is already assigned by mkdfa in wname,
so this function only returns the ID */
id = atoi(terminalname);
if (id >= dinfo->term_num) return(WORD_INVALID); /* error */
else return(id);
}