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 |
标签: programming, scheme
0 Comments:
发表评论
<< Home