LINUX.ORG.RU
ФорумTalks

СПМ выпуск 1: LISP/c - транслятор Common Lisp в C/C++

 ,


0

2

Этим тредом я открываю новую рубрику СПМ (Спокойной ночи, малыши).

Увидел свет транслятор LISP/c. Инструмент ставит целью объединение выразительной силы языка Common Lisp и скорости языков C/C++, что позволяет воспользоваться мощным механизмом Lisp-макросов для генерации текста программ на C. В трансляторе реализована поддержка pthreads, MPI и CUDA. Поддерживается создание классов и шаблонов C++. В данный момент реализация LISP/c протестирована и может работать с использованием CLISP.

https://github.com/eratosthenesia/lispc

Например из

 (header stdio)
   (main
     (@printf (str "Hello, world!"))
     (return 0))

Получим:
 #include ‹stdio.h›

   int main(int argc,char **argv)
   {
      printf("Hello, world!");
      return 0;
   }


Поздравим наших любимых персонажей с возможностью применить свои теоретические, отточенные мибибайтами срачей, навыки на практике, во славу технологического прогресса и человеколюбия.

P.S. У нас нет тега Си?!!

★★☆

Последнее исправление: Stahl (всего исправлений: 2)

Ваш лисп явно не является ни одним из стандартных лиспов. Придётся писать подробную документацию по языку, кроме самой реалиации.

Gentooshnik ★★★★★
()
Ответ на: комментарий от maxan

Ну а ты что хотел? Думал, что если в говно добавить арахиса, то получится трюфельный торт?

Stahl ★★☆
() автор топика
Ответ на: комментарий от maxan

Да ну, учитывая цели проекта, норм. Костылей много из-за си, да, но этого наверно никак не избежать, если задача сделать транслятор в си.

ТС, а макросы и функции могут использовать друг друга и при компиляции и в рантайме, как в CL? А макросы могут иметь побочные эффекты и при компиляции устанавливать значения переменных?

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

ТС,

Увы, но я лишь грузчик. Принёс, оставил, распишитесь. Я сишник/плюсовик, но ничего не знаю про лисп.

Stahl ★★☆
() автор топика
Ответ на: комментарий от Deleted

СПокойно, Малыши, без паники...

Stahl ★★☆
() автор топика
Ответ на: комментарий от Gentooshnik

Про Common Lisp там настолько ни в одном месте, что даже не совсем понятно почему Вы его здесь упоминаете.

Про Common Lisp тут в заголовке этой темы, так что я убеждён, что мой вопрос остаётся в силе.

theNamelessOne ★★★★★
()
Ответ на: комментарий от Gentooshnik

ТС, а макросы и функции могут использовать друг друга и при компиляции и в рантайме

Макросы либо пишутся на CL (а не на C/C++), либо являются формой template. На CL они могут использовать только функции CL, а template вообще не подразумевает явного вызова функции — это подстановка.

А макросы могут иметь побочные эффекты и при компиляции устанавливать значения переменных?

Макросы (lispmacro ...) могут.

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.