本文整理汇总了C++中Tokens::GetLiteralValue方法的典型用法代码示例。如果您正苦于以下问题:C++ Tokens::GetLiteralValue方法的具体用法?C++ Tokens::GetLiteralValue怎么用?C++ Tokens::GetLiteralValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tokens
的用法示例。
在下文中一共展示了Tokens::GetLiteralValue方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessArrayDeclaration
bool VdfParser::ProcessArrayDeclaration(Tokens& tokens, VariableSpace& variables)
{
static map<TokenType, int> token_to_array_property{
{TokenKeywordFloat, VariableFloatArray},
{TokenKeywordInt, VariableIntArray},
{TokenKeywordString, VariableStringArray},
{TokenKeywordBool, VariableBoolArray},
{TokenId, VariableStructArray},
};
tokens.AssertToken(TokenKeywordArray, true);
tokens.AssertToken(TokenLessThan, true);
auto type = tokens.GetCurrentToken().type;
auto element_type_id = tokens.GetCurrentToken().text;
auto fq_type_id = ResolveFqId(element_type_id.c_str(), true, tokens);
assert(type == TokenKeywordFloat || type == TokenKeywordInt ||
type == TokenKeywordBool || type == TokenKeywordString ||
type == TokenId);
tokens.Next();
tokens.AssertToken(TokenGreaterThan, true);
auto id = (&variables == _variables.get()) ?
GetFqId(tokens.GetId().c_str()) : tokens.GetId();
if (!tokens.IsTokenOfType(TokenSharp, true))
{
variables.AddArray(fq_type_id.c_str(), id.c_str(), L"");
}
else
{
tokens.AssertToken(TokenLessThan, true);
auto start_index = _wtoi(tokens.GetLiteralValue().c_str());
tokens.AssertToken(TokenComma, true);
auto end_index = _wtoi(tokens.GetLiteralValue().c_str());
tokens.AssertToken(TokenGreaterThan, true);
for (int i = start_index; i <= end_index; ++i)
{
wostringstream output;
output << id << i;
auto variable_id = (&variables == _variables.get()) ?
GetFqId(output.str().c_str()) : output.str();
variables.AddArray(fq_type_id.c_str(), variable_id.c_str(), L"");
}
}
tokens.AssertToken(TokenSemiColon, true);
return true;
}
示例2: ProcessSimpleDeclaration
bool VdfParser::ProcessSimpleDeclaration(Tokens& tokens)
{
assert(_variables);
auto type = tokens.GetCurrentToken().type;
auto type_id = tokens.GetCurrentToken().text;
assert(type == TokenKeywordFloat || type == TokenKeywordInt ||
type == TokenKeywordBool || type == TokenKeywordString ||
type == TokenId);
tokens.Next();
auto id = tokens.GetId();
auto fq_type_id = ResolveFqId(type_id.c_str(), true, tokens);
if (!tokens.IsTokenOfType(TokenSharp, true))
{
_variables->Add(fq_type_id.c_str(), GetFqId(id.c_str()).c_str(), L"");
}
else
{
tokens.AssertToken(TokenLessThan, true);
auto start_index = boost::lexical_cast<int>(tokens.GetLiteralValue());
tokens.AssertToken(TokenComma, true);
auto end_index = boost::lexical_cast<int>(tokens.GetLiteralValue());
tokens.AssertToken(TokenGreaterThan, true);
for (int i = start_index; i <= end_index; ++i)
{
wostringstream output;
output << id << i;
wstring variable_id = GetFqId(output.str().c_str());
_variables->Add(fq_type_id.c_str(), variable_id.c_str(), L"");
}
}
tokens.AssertToken(TokenSemiColon, true);
return true;
}