0

我希望能够确定在我的测试中为我正在测试的编译器(scheme -> cisc-assembly)计算的最后一个值。

我已经有一个脚本可以自动执行大多数测试和编译过程,但我想自动比较编译器的输出(存储在寄存器 #0 [R0] 并打印)与chez的(chez 是编译器)输出(不知道如何“获取”最后一个计算的参数,这是我想要比较的)。

有没有办法做到这一点?还是我必须创建重复的测试,其中一个在最后一个参数上带有硬编码打印(“显示”)?

一个简单的测试文件示例:

;---------------------
((lambda (x) x) #t)
;---------------------

这将编译为一个相当复杂且长的 .c 文件,其中包含集成顺式程序集,该程序集将最后一个表达式的结果存储在一个特殊的寄存器中。

有没有办法回显的最后结果

((lambda (x) x) #t)

(即#t)没有基于 chez-scheme 的评估手动修改文件的明显解决方案?

提前感谢任何帮助或线索。

4

1 回答 1

0

如果最后一个“结果”来自 Scheme 表达式,那么您可以使用eval,例如:

> (eval '((lambda (x) x) 'yes) (scheme-report-environment 5))
yes
于 2013-02-28T17:15:38.973 回答