将C写为s表达式

时间:2010-01-14 12:51:35

标签: c lisp s-expression

我想在s表达式中编写C并使用编译时宏。有人知道有什么事吗?它应该将s表达式转换为标准C。

5 个答案:

答案 0 :(得分:7)

答案 1 :(得分:2)

你是什么意思?有点像:

(c-expression 
  (int main ((int argc) ((array (pointer char)) argv)
    (block
      (printf "%d arguments\n" argc)
      (if (argc >= 1)
        (printf "The first arg is %s\n" (ref argv 1)))
      (return 0))))
=>
"int main (int argc, char *argv[])
{
  printf("%d arguments\n", argc);
  if (argc >= 1)
    printf(The first arg is %s\n", argv[1]);
  return 0;
}

如果是的话,是的,这绝对可行。但是,这并非完全无足轻重。

答案 2 :(得分:2)

也许你想要像ECL这样的东西,它将Common Lisp编译为C。

答案 3 :(得分:1)

看看Tasuku Hiraishi的SC。他的20052007的国际Lisp会议论文存档于archive.org。

查看他的source repo,特别是examples

据我所知,这是将S-Expression风格编码实践纳入其他香草C项目的众多尝试中最好的。

答案 4 :(得分:0)

我知道这是一篇旧文章,但据记录,我认为这是所要的。

This project将以s表达式样式编写的c程序转换为C。如果设置正确,它可以很好地工作,甚至可以为您编译代码。

我不知道目前它产生的可读性最高的C代码输出。