Есть ли интерпретатор для C?

Мне было интересно, есть ли что-то вроде интерпретатора для C. То есть в терминале Linux я могу ввести «python», а затем написать код в этом интерпретаторе. (Я не уверен, что переводчик правильное слово). Это действительно полезно для тестирования разных вещей, и мне любопытно, существует ли что-то подобное для C. Хотя я сомневаюсь в этом. Единственное, что я могу придумать, это оболочка C ...


person devin    schedule 25.02.2009    source источник
comment
Правильное слово для того, что вы хотите, - это оболочка или приглашение или REPL (Read-Eval-Print-Loop, в отношении 4 команд Лиспа, которые должны быть объединены для создания интерпретатора Лиспа в Лиспе), но интерпретатор будет работать.   -  person Chris Lutz    schedule 25.02.2009
comment
Кроме того, вам нужен термин REPL (Read Evaluate Print Loop).   -  person tsimon    schedule 25.02.2009
comment
дубликат Есть ли REPL для программирования на C?   -  person Janus Troelsen    schedule 31.01.2014
comment
На самом деле предпочтительным словом является интерактивная среда для C. Интерактивная среда открывает оболочку или приглашение, специфичное для языка. REPL тоже хорош.   -  person jcchuks    schedule 02.01.2017
comment
Полный список интерпретаторов и компиляторов для C / C ++ можно найти здесь: thefreecountry.com/compilers/ cpp.shtml   -  person froggsy    schedule 08.05.2018


Ответы (13)


Их много. Если вы сузите объем своего вопроса, мы сможем чтобы предложить что-то конкретное для ваших нужд.

Известный интерпретатор - Ch: Интерпретатор C / C ++ для скриптовых вычислений, подробно описанный у доктора Доббса:

Ch - это полный интерпретатор C, который поддерживает все языковые функции и стандартные библиотеки стандарта ISO C90, но расширяет C многими высокоуровневыми функциями, такими как строковый тип и вычислительные массивы, как объекты первого класса.

Стандарт Ch является бесплатным ПО, но не с открытым исходным кодом. Только Ch professional имеет возможности построения графиков и другие функции, которые могут понадобиться.

Я никогда раньше не смотрел на это, но наличие интерпретатора c под рукой звучит очень полезно, и я, вероятно, добавлю кое-что в свой набор инструментов. Спасибо за вопрос!


Редактировать:

Только что выяснил, что один из моих любимых компиляторов, TCC, будет выполнять сценарии C:

Он также обрабатывает файлы сценария C (просто добавьте строку shebang #! / Usr / local / bin / tcc -run в первую строку файла исходного кода C в Linux, чтобы он выполнялся напрямую.

TCC может читать исходный код C из стандартного ввода, если вместо infile используется "-". Пример:

echo 'main(){puts("hello");}' | tcc -run -
person Adam Davis    schedule 25.02.2009
comment
Я бы хотел, чтобы версия CH была доступна под лицензией, одобренной OSI, чтобы ее можно было распространять. Вы можете создавать действительно хорошие утилиты, используя их интерпретатор, но, к сожалению, их слишком проблематично связать. - person Tim Post♦; 25.02.2009
comment
Это было бы чудесно. Бесплатное программное обеспечение лучше, чем ничего, но пока кто-то это не сделает ... - person Adam Davis; 25.02.2009
comment
Как ни странно, tcc по умолчанию завершает работу со статусом 10. Похоже, вам нужно явно добавить return 0, дающий echo 'main(){puts("hello"); return 0;}' | tcc -run - - person Gregory Nisbet; 24.12.2016

picoc - очень маленький интерпретатор языка Си.

PicoC - очень маленький интерпретатор C для написания сценариев. Первоначально он был написан как язык сценария для бортовой системы полета БПЛА. Он также очень подходит для других роботизированных, встроенных и невстроенных приложений.

person aleroot    schedule 06.04.2012

проект ROOT предоставляет очень функциональный интерпретатор C и C ++ под названием Cint. Мне это очень нравится. Однако нужно немного привыкнуть к интерпретации.

TCC - тоже очень хороший выбор, но я не могу поручиться за его REPL.

person SingleNegationElimination    schedule 25.02.2009
comment
Разве команда ROOT не отказывается от Cint? - person Z boson; 27.04.2015
comment
@Zboson ЦЕРН перешел на новый интерпретатор, цепляюсь. CINT больше не поддерживается CERN - person endolith; 30.11.2017
comment
ROOT заменил cint на cling. Так что цепляние можно рассматривать как обновленную рекомендацию. (хотя - см. другие ответы - cling - это C ++, а не C, если это актуально, хотя iirc cint также сделал некоторые C ++) - person pseyfert; 27.03.2018

Наверное. Для c ++ их несколько. См. Использовали ли вы какой-либо из C ++ интерпретаторы (не компиляторы)? для примеров. Безусловно, cint съест почти любой код c с хорошими результатами и tcc настолько быстр, что вы можете использовать его как интерпретатор.

person dmckee --- ex-moderator kitten    schedule 25.02.2009

Взгляните на Ch Interpreter.

Ch - это встраиваемый интерпретатор C / C ++ для межплатформенного написания сценариев, программирования оболочки, построения 2D / 3D-графиков, численных вычислений и встроенных сценариев.

person Christian C. Salvadó    schedule 25.02.2009

Я знаю, что мы используем CINT в классе. Выглядело неплохо, возможно, вы захотите попробовать!

person Javed Ahamed    schedule 14.03.2009

Ознакомьтесь с iGCC

person Neel Basu    schedule 12.10.2011

cinterp - это для начала.

person Community    schedule 25.02.2009
comment
Вы имеете в виду github.com/danielkeller/cinterp или free-compilers.sharnoff.org/TOOL/C-12.html? Ссылка улучшит этот ответ ... - person f3lix; 08.05.2013

Совсем недавно появился Cling (на основе LLVM / Clang)

http://root.cern.ch/drupal/content/cling

person ideasman42    schedule 27.07.2014
comment
Это для C ++, а не для C. - person acgtyrant; 25.12.2014

Вы можете использовать CompCert. Вот несколько примеров: http://compcert.inria.fr/man/manual004.html

person Janus Troelsen    schedule 31.01.2014

ccons, похоже, удовлетворяет вашим ограничениям:

Цель проекта ccons - создать интерактивную консоль для языка программирования C, подобную «python» и «irb» для Python и Ruby соответственно. Проект построен на основе clang и llvm.

person icktoofay    schedule 07.09.2013

Это было сделано, даже несмотря на то, что большая часть работы на C скомпилирована. Одним из примеров является CH.

person Rob Lachlan    schedule 25.02.2009

В CERN есть инструментарий под названием ROOT, который предназначен в основном для научных целей или анализа данных и т. Д., Но в нем есть интерпретатор C / C ++ на основе Clang под названием Cling.

Они использовали интерпретатор C под названием CINT, прежде чем адаптировали Cling. CINT легок и, кажется, все еще доступен для загрузки.

Я думаю, вы можете получить что-то другое, внимательно просматривая статьи списка Википедии.

person Community    schedule 02.05.2018