a=b & s<9 または単純に a=b などのブール式を比較演算子のみ (|、&、! などの論理演算子なし) で評価したいと考えています。次の AST を使用できます。
            =
           / \
          /   \
          a    b 
また
               &
              / \  
             /   \
            =     <
           / \    /\
          /   \  /  \
          a    b s   9   
葉ノードは値です。Leave ノードの親は常に =、!=、<、>、>=、<= などの比較演算子です。比較ノードの親は、論理演算子 |、&、および ! です。親ノードから値ノード (葉) にアクセスし、これらの値を別の関数 (後で実装されます) に渡したいと思います。解析ステップは問題ありません。
親ノードから値ノード (葉) にアクセスする方法。私は次の例を使用しています: スピリットでブール式を計算する方法
c++ のブール式 (文法) パーサーこれ は、次のリンクから取得した評価コードです。
    struct eval : boost::static_visitor<bool>
{
    eval() {}
    ///
    bool operator()(const var& v) const
    {
        std::cout<<"feuille:\n"<<v<<std::endl;
        true を返します。
    }
    bool operator()(const binop<op_and>& b) const
    {
        再帰 (b.oper1) && 再帰 (b.oper2);
    }
    bool operator()(const binop<op_or>& b) const
    {
        再帰 (b.oper1) || 再帰 (b.oper2);
    }
    bool operator()(const unop<op_not>& u) const
    {
        return !recurse(u.oper1);
    }
    //------------他の演算子の追加--------------------------------
    bool operator()(const binop<op_equal>& u) const
    {
        // 後で実装されます
        true を返します。
    }
    bool operator()(const binop<op_not_equal>& u) const
    {
       // 後で実装されます
        true を返します。
    }
    bool operator()(const binop<op_less>& u) const
    {
        // 後で実装されます
        true を返します。
    }
    bool operator()(const binop<op_less_equal>& u) const
    {
        // 後で実装されます
        true を返します。
    }
    bool operator()(const binop<op_greater>& u) const
    {
        // 後で実装されます
        true を返します。
    }
    bool operator()(const binop<op_greater_equal>& u) const
    {
        // 後で実装されます
        true を返します。
    }
ありがとうございました。どんな提案でも大歓迎です。