本文整理汇总了C++中Lexer::LoadFile方法的典型用法代码示例。如果您正苦于以下问题:C++ Lexer::LoadFile方法的具体用法?C++ Lexer::LoadFile怎么用?C++ Lexer::LoadFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lexer
的用法示例。
在下文中一共展示了Lexer::LoadFile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LexFile
/*
================
XDeclParser::LexFile
================
*/
bool XDeclParser::LexFile( const char *filename ) {
Lexer lexer;
if ( !lexer.LoadFile( filename ) )
return false;
try {
Parse(lexer);
return true;
}
catch( LexerError err ) {
String errStr;
err.ToString( errStr );
User::Error( ERR_LEXER_FAILURE, errStr.c_str(), filename );
return false;
}
}
示例2: MakeBinary
/*
================
DeclParser::MakeBinary
================
*/
bool DeclParser::MakeBinary( const char *filename ) {
if ( commonFS == OG_NULL )
return false;
Lexer lexer;
if ( !lexer.LoadFile( filename ) )
return false;
File *f = commonFS->OpenWrite( Format( "$*.bin" ) << filename );
if ( !f )
return false;
try {
f->Write( DECL_DESCRIPTOR_STR, DECL_DESCRIPTOR_LENGTH );
Dict dict;
bool getKeyValue = false;
const Token *token;
String key, value;
String str;
const char *p;
while ( (token = lexer.ReadToken()) != OG_NULL ) {
//! @todo maybe token should be stored as String, so we don't have to recalc len/bytelen
p = token->GetString();
if ( p ) {
if ( *p == '\0' ) {
lexer.Error("Unexpected Empty Token");
return false;
}
if ( !getKeyValue ) {
str = p;
str.WriteToFile( f );
value = lexer.ReadString();
if ( value.IsEmpty() ) {
lexer.Error("Empty name!");
return false;
}
value.WriteToFile( f );
lexer.ExpectToken("{");
getKeyValue = true;
} else {
if ( *p == '}' ) {
getKeyValue = false;
dict.WriteToFile( f );
dict.Clear();
}
else {
key = p;
dict.Set( key.c_str(), lexer.ReadString() );
}
}
}
}
if ( getKeyValue ) {
lexer.Error("Unexpected End Of File");
return false;
}
return true;
}
catch( FileReadWriteError &err ) {
f->Close();
User::Error( ERR_FILE_WRITEFAIL, Format("Binary Decl: $*.bin" ) << err.ToString(), filename );
return false;
}
catch( LexerError &err ) {
f->Close();
String errStr;
err.ToString( errStr );
User::Error( ERR_LEXER_FAILURE, errStr.c_str(), filename );
return false;
}
}