1

次のような単純な式から始まる C/C++ 文法機能のほとんどをカバーする、パーサー文法 (C/C++、yacc、またはその他の文法) をテストするための特別なサンプル パックはありますか?

int a;
int b;
b=a+a+b-a+b;
printf("hello");

また

template<class R, class T,
    class B1, class B2,
    class A1, class A2, class A3>
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
{
    typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
}

定義付きで、それがどのタイプのテストであるか(「このテストは、ポインターの動作をチェックするためのものです」など)。

4

1 に答える 1

3

GCCのソースには多くのテストケースがあるため、文法がGPLの下でオープンソースである場合は、それを使用できます。

それ以外の場合は、大規模なオープンソースプロジェクトを見つけて、それをフィードしてみてください。明らかに、それが正しいことを確認する必要があります。2つのコンパイラが同じ出力を生成することはないため、[どの段階を見ても]理解する必要があります。自分で「本来あるべき姿」を出します。または、中間ファイルをGCCから文法出力と同じ形式に変換できるものを記述し、比較します...

于 2013-01-16T09:29:00.170 に答える