【发布时间】:2011-06-01 09:24:20
【问题描述】:
我正在开发一个自定义 LISP 解释器。它不支持在 LISP 中定义函数,而是将所有函数映射到 C 函数。当它看到这样的表达式时,
(substr 'input '1 '1)
它知道调用内部substr 函数并返回结果。
现在我计划实现一个message 函数,它支持基本格式并将输出写入stdout。类似的,
(message "Hello, %s" name)
%s 将替换为变量name 中的值。
目前的计划是直接将格式和参数传递给printf 等函数。这样我就可以支持printf支持的所有格式了。但是问题来自可变数量的参数。一种方法是,
if(argcount == 1)
/* call printf with one arg */
else if(argcount == 2)
/* call printf with two arg */
....
这可行,但我想知道是否有更好的方法来实现这一目标?
【问题讨论】:
标签: c lisp interpreter