// file: $isip/class/pr/LanguageModelJSGF/lmihd_00.cc
//

// there is no source code in this file
//

// isip include files
//
#include "LanguageModelJSGF.h"

//-----------------------------------------------------------------------------
//
// we define non-integral constants in the default constructor
//
//-----------------------------------------------------------------------------

// constants: required constants such as the class name
//
const String LanguageModelJSGF::CLASS_NAME(L"LanguageModelJSGF");
const String LanguageModelJSGF::DEF_PARAM(L"");
const String LanguageModelJSGF::PARAM_GRAMMARS(L"grammars");

// start and termination symbols
//
const SearchSymbol LanguageModelJSGF::START_SYMBOL(L"S");
const SearchSymbol LanguageModelJSGF::TERM_SYMBOL(L"T");

const String LanguageModelJSGF::START_SYMBOL_REFERENCE(L"ISIP_JSGF_START");
const String LanguageModelJSGF::TERM_SYMBOL_REFERENCE(L"ISIP_JSGF_TERM");

const String LanguageModelJSGF::PARAM_JSGF_START_SYMBOL(L"ISIP_JSGF_1_0_START");
const String LanguageModelJSGF::PARAM_JSGF_TERM_SYMBOL(L"ISIP_JSGF_1_0_TERM");

// this is the default top-level grammar name
//
const String LanguageModelJSGF::TOP_GRAMMAR_NAME(L"sentence");

// used to comment jsgf language model
//
const String LanguageModelJSGF::COMMENT_GRAMMAR_NAME(L"// Define the grammar name\n  //");
const String LanguageModelJSGF::COMMENT_TERM_SYMBOL(L"// Define the ISIP graph terminal symbol\n  //");
const String LanguageModelJSGF::COMMENT_START_SYMBOL(L"// Define the ISIP graph start symbol\n  //");
const String LanguageModelJSGF::COMMENT_RESERVED_GRAMMAR(L"// Define the ISIP reserved grammar name\n  //");
const String LanguageModelJSGF::COMMENT_SYMBOLS(L"// Define the symbols\n  //");
const String LanguageModelJSGF::COMMENT_RULES(L"// Define the rules\n  //");
const String LanguageModelJSGF::COMMENT_CONTEXT_RULE(L"// Define the context rule\n  //");

// JSGF version tag
//
const String LanguageModelJSGF::PARAM_JSGF_VERSION(L"#JSGF V1.0;");

// base of the rulenames
//
const String LanguageModelJSGF::RULE_NAME_BASE(L"extension");

// grammar definition base
//
const String LanguageModelJSGF::GRAMMAR_DEF_BASE(L"network.grammar.");

// keywords
//
const String LanguageModelJSGF::KEYWORD_GRAMMAR(L"grammar");
const String LanguageModelJSGF::KEYWORD_PUBLIC(L"public");


// used when appending level index to definition parameter
//
const String LanguageModelJSGF::PARAM_UNDERSCORE(L"_");

// operator constants for JSGF syntax
//
const String LanguageModelJSGF::OPERATOR_SEMICOLON(L";");
const String LanguageModelJSGF::OPERATOR_CLOSEPARENS(L")");
const String LanguageModelJSGF::OPERATOR_OPENPARENS(L"(");
const String LanguageModelJSGF::OPERATOR_CLOSEANGLEBRACKET(L">");
const String LanguageModelJSGF::OPERATOR_OPENANGLEBRACKET(L"<");
const String LanguageModelJSGF::OPERATOR_FWDSLASH(L"/");
const String LanguageModelJSGF::OPERATOR_EQUALS(L"=");
const String LanguageModelJSGF::OPERATOR_ALTERNATION(L"|");
const long LanguageModelJSGF::OPERATOR_OPEN_POS = 0;
const long LanguageModelJSGF::OPERATOR_CLOSE_POS = 1;

// prefix for context label used when defining subgraph of context
//
const String LanguageModelJSGF::CONTEXT_LABEL_PREFIX(L"G_");

// static instantiations: memory manager, debug_level, scratch space, etc.
//
MemoryManager LanguageModelJSGF::mgr_d(sizeof(LanguageModelJSGF),
				      LanguageModelJSGF::CLASS_NAME);
