本文整理汇总了C++中Condition::Attach方法的典型用法代码示例。如果您正苦于以下问题:C++ Condition::Attach方法的具体用法?C++ Condition::Attach怎么用?C++ Condition::Attach使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Condition
的用法示例。
在下文中一共展示了Condition::Attach方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TryParseExpression
bool IfTagOption::TryParseExpression(ParserContext& context)
{
Token* token,
* lhsToken = NULL,
* rhsToken = NULL,
* unaryToken = NULL;
ConditionalOperator conditionalOperator;
UnaryOperator unaryOperator = UnaryAnd;
// Evaluate the expressions
do
{
// Get the LHS token
if (!context.TryNext(token))
{
context.Error.Description = "unexpected end of file while parsing condition";
return false;
}
// Ensure the type of the LHS
if (!IsValidFragment(token))
return context.Error.Set(token,
"invalid left hand side of expression: " + token->Value);
// Save the LHS token
lhsToken = token;
// Get the operator token
if (!context.TryNext(token))
return context.Error.Set(token,
"unexpected end of file while parsing condition");
// Check the type
if (token->Type & TokenOperator)
{
// Check the operator
if (token->Value == "==")
conditionalOperator = ConditionalEquals;
else if ((token->Value == "!=") ||
(token->Value == "<>"))
conditionalOperator = ConditionalNotEquals;
else if (token->Value == ">")
conditionalOperator = ConditionalGreaterThan;
else if (token->Value == "<")
conditionalOperator = ConditionalLessThan;
else if (token->Value == ">=")
conditionalOperator = ConditionalGreaterThanOrEquals;
else if (token->Value == "<=")
conditionalOperator = ConditionalLessThanOrEquals;
else
return context.Error.Set(token,
"invalid expression operator: " + token->Value);
// Get the RHS token
if (!context.TryNext(token))
return context.Error.Set(token,
"unexpected end of file while parsing condition");
// Check the type
if (!IsValidFragment(token))
return context.Error.Set(token,
"invalid right hand side of expression: " + token->Value);
// Store the RHS token
rhsToken = token;
// Try to get the unary operator
if (!context.TryNext(token))
return context.Error.Set(token,
"unexpected end of file while parsing condition");
}
else
conditionalOperator = ConditionalImplicit;
// Evaluate the unary operator
if (token->Type & TokenIdentifier)
{
// Ensure that this is a unary operator
if (token->Value == "and")
unaryOperator = UnaryAnd;
else if (token->Value == "or")
unaryOperator = UnaryOr;
else
return context.Error.Set(token,
"invalid unary operator: " + token->Value);
// Store the unary operator token
unaryToken = token;
}
else
unaryToken = NULL;
// Construct the condition
Condition* condition = new Condition(lhsToken,
conditionalOperator,
rhsToken);
if (this->_rootCondition)
condition->Attach(this->_rootCondition,
//.........这里部分代码省略.........