Напишите C как s-выражения - PullRequest
9 голосов
/ 14 января 2010

Я хочу написать C в s-выражениях и использовать макросы времени компиляции. Кто-нибудь знает что-нибудь, что делает это? Следует перевести s-выражения в стандартную C.

Ответы [ 5 ]

2 голосов
/ 15 января 2010

Возможно, вам нужно что-то вроде ECL , которое компилирует Common Lisp в C.

2 голосов
/ 14 января 2010

Как ты имеешь в виду? Что-то вроде:

(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;
}

Если так, то да, это определенно выполнимо. Тем не менее, это не совсем тривиально.

1 голос
/ 10 августа 2015

Посмотрите на Тасуку Хираиши. Его документы Международной конференции по Лиспу от 2005 и 2007 заархивированы на archive.org.

См. Его репозиторий , в частности примеры .

Насколько мне известно, это лучшая из многих попыток применить методы кодирования в стиле S-Expression к другому ванильному проекту С.

0 голосов
/ 18 января 2019

Я знаю, что это старый пост, но для протокола, я думаю, что это то, что просят.

Этот проект переводит c-программы, написанные в стиле s-выражений, в C. Он отлично работает и даже компилирует код для вас, если вы правильно его настроите.

Я не знаю, что он производит наиболее читаемый вывод кода C на данный момент.

...