2010-07-28

llscheme – 3 – interpreter

qhe 同学为 llscheme 加 了一个 interpreter 接口,安装好之后 `llscheme -i’ 即可进入解释器。然而在开发过程中间碰到了一个有趣的问题:我们有个lsrt_error(),调用它会导致进程结束。这对于编译出来的代码是没问题的, 然而对于解释器,大家可能希望它打印错误信息后能继续工作。

解决该问题的办法是在lsrt_error()调用exit(-1)之前插入一个钩子函数,并且该钩子函数式个弱符号(weak symbol),我们只在调用解释器的时候定义该钩子函数:


extern "C" void lsrt_exit_hook() { throw Error(""); }

函数lsrt_exit_hook()假模假式的抛了个异常,避免了对exit(-1)的调用,而解释器只要捕获改异常,然后继续REPL即可。完整补丁:

git diff 1a6bd0..6749de

标签: ,

0 Comments:

发表评论

<< Home