C语译员的测试用例

时间:2012-07-16 08:53:46

标签: c testing compiler-construction case interpreter

我想测试一点ANSI C解释器。 我的工具解释了我的C程序。它不产生机器代码;执行后我无法访问堆/堆栈! 我正在考虑验证GCC的返回值/输出或类似的东西。

我正在寻找适合我的东西,但我几乎找不到任何免费或开源的东西。

有人有想法/建议如何测试我的口译员吗? 任何人都可以推荐像测试套件这样的东西;或一揽子测试用例?

1 个答案:

答案 0 :(得分:0)

我还写了一个C解释器,主要依靠gcc.c - 酷刑/执行测试用例。此测试套件包含"code fragments which have historically broken easily"。这个测试用例的优点是,必须执行它们以提供结果(而不是,例如,仅编译),然后将结果与预期结果匹配。您不需要将它与由GCC编译的已执行程序的结果进行比较。您基本上只需要将文件包含在目录中并执行它们,这与其他一些测试套件形成对比,您必须从配置文件或类似文件中解析预期结果。您可以从GCC repository下载测试。

您的一个缺点可能是,测试用例通常很广泛,并且还可以包含GNU扩展,例如用于执行汇编程序代码的 asm 语句或有关如何对齐内存内容的属性。它们还包括一些旧的K& C函数样式符号的测试用例,如下例所示(不是从套件中获取):

int func(a)
int a; 
{
    return a + 1;
}

但是,我仍然建议您查看测试用例并查看可以执行的内容,因为它们还会测试ASNI C的许多“正常”极端情况。