Есть ли интерпретатор для C? [закрыто]

111

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

Devin
источник
5
Правильное слово для того, что вы хотите, - это «оболочка», или «приглашение», или «REPL» (Read-Eval-Print-Loop, в отношении 4 команд Лиспа, которые должны быть объединены для создания интерпретатора Лиспа в Лиспе), но переводчик будет работать.
Крис Лутц,
1
Кроме того, вам нужен термин REPL (Read Evaluate Print Loop).
tsimon
На самом деле предпочтительным словом является «интерактивная» среда для C. Интерактивная среда открывает оболочку или приглашение, специфичное для языка. REPL тоже хорош.
jcchuks 02
Полный список интерпретаторов и компиляторов для C / C ++ можно найти здесь: thefreecountry.com/compilers/cpp.shtml
froggsy

Ответы:

71

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

Известный интерпретатор - « Ch: AC / C ++ Interpreter for Script Computing », подробно описанный в Dr. Dobbs:

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

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

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


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

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

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

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

echo 'main(){puts("hello");}' | tcc -run -
Адам Дэвис
источник
2
Я бы хотел, чтобы версия CH была доступна под лицензией, утвержденной OSI, чтобы ее можно было распространять. Вы можете создавать действительно хорошие утилиты, используя их интерпретатор, но, к сожалению, их сложно связать.
Тим Пост
Это было бы чудесно. Бесплатное программное обеспечение лучше, чем ничего, но пока кто-то его не сделает ...
Адам Дэвис,
Как ни странно, по умолчанию tccвыходит со статусом 10. Похоже, вы должны явно добавить return 0пожертвованиеecho 'main(){puts("hello"); return 0;}' | tcc -run -
Грегори Нисбет
18

picoc - очень маленький интерпретатор C

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

aleroot
источник
9

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

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

SingleNegationElimination
источник
1
Разве команда ROOT не отказывается от Cint?
Z-бозон
@Zboson «CERN имеет переключатель на новый интерпретатор, цепляться CINT не поддерживается ЦЕРН больше.»
эндолиты
ROOT заменил cint на cling. Так что цепляние можно рассматривать как обновленную рекомендацию. (хотя - см. другие ответы - cling - это C ++, а не C, если это уместно, хотя iirc cint также использовал C ++)
pseyfert
8

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

dmckee --- котенок экс-модератора
источник
7

Посмотрите на Ch Interpreter .

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

CMS
источник
6

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

Джавед Ахамед
источник
3

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

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

icktoofay
источник
1

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

Роб Лахлан
источник
0

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

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

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

пользователь9600383
источник