1

是否有任何用于测试解析器语法(C/C++、yacc 或其他语法)的特殊示例包,它将涵盖从简单表达式开始的大部分 C/C++ 语法功能,例如:

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 下是开源的,那么你可以使用它。

否则,请尝试查找大型开源项目并通过它提供它 - 您显然必须验证它是否正确,并且由于没有两个编译器产生相同的输出[无论您查看它的哪个阶段],您必须弄清楚自己“应该是什么”。或者写一些东西,可以将中间文件从 GCC 翻译成与你的语法输出相同的格式,然后比较......

于 2013-01-16T09:29:00.170 回答