当前位置: 首页>>代码示例>>C++>>正文


C++ Condition::Attach方法代码示例

本文整理汇总了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,
//.........这里部分代码省略.........
开发者ID:23,项目名称:openliquid,代码行数:101,代码来源:IfTagOption.cpp


注:本文中的Condition::Attach方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。