9

我想用 s 表达式编写 C 并使用编译时宏。有人知道这样做的吗?它应该将 s 表达式转换为标准 C。

4

5 回答 5

2

你是什​​么意思?类似于以下内容:

(c-表达式
  (int main ((int argc) ((array (pointer char)) argv)
    (堵塞
      (printf "%d 个参数\n" argc)
      (如果 (argc >= 1)
        (printf "第一个参数是 %s\n" (ref argv 1)))
      (返回 0))))
=>
"int main (int argc, char *argv[])
{
  printf("%d 个参数\n", argc);
  如果 (argc >= 1)
    printf(第一个参数是 %s\n", argv[1]);
  返回0;
}

如果是这样,是的,这绝对是可行的。然而,这并不完全是微不足道的。

于 2010-01-14T15:00:51.340 回答
2

也许您想要ECL 之类的东西,它将 Common Lisp 编译为 C。

于 2010-01-14T23:23:07.097 回答
1

看看Tasuku Hiraishi的SC。他在2005 年2007 年的国际 Lisp 会议论文存档在 archive.org。

请参阅他的源代码库,尤其是示例

据我所知,这是将 S-Expression 风格的编码实践应用于一个普通的 C 项目的众多尝试中最好的一次。

于 2015-08-10T13:57:57.513 回答
0

我知道这是一个旧帖子,但为了记录,我认为这是被要求的。

“lispc”项目将以 s-expressions 样式编写的 c 程序翻译成 C。它工作得很好,如果设置正确,甚至可以为您编译代码。

我不知道它目前会产生最易读的 C 代码输出。

于 2019-01-18T05:17:05.063 回答