Чи є перекладач для C? [зачинено]


111

Мені було цікаво, чи є щось на зразок інтерпретатора для C. Тобто, в терміналі Linux я можу набрати "python", а потім код у цьому інтерпретаторі. (Я не впевнений, що тлумачить правильне слово). Це дуже корисно для тестування різних речей, і мені цікаво, чи існує щось подібне для C. Хоча я сумніваюся в цьому. Єдине, про що я можу це зробити, - це оболонка C ...


5
Правильне слово для того, що ви хочете, - "оболонка" або "підказка" або "REPL" (Read-Eval-Print-Loop, посилаючись на 4 команди Lisp, які необхідно з'єднати, щоб зробити інтерпретатора Lisp в Lisp), але Перекладач працював би.
Кріс Лутц,

1
Крім того, термін, який ви шукаєте, це REPL (Прочитайте оцінку циклу друку).
цимон


Краще слово - це фактично "інтерактивне" середовище для C. Інтерактивне середовище відкриває оболонку або підказку, специфічну для мови. REPL також хороший.
jcchuks

Вичерпний список перекладачів та компіляторів для C / C ++ можна знайти тут: thefreecountry.com/compilers/cpp.shtml
froggsy

Відповіді:


71

Є багато - якщо ви звузите сферу свого питання, ми можемо запропонувати певні конкретні ваші потреби.

Помітним перекладачем є " Ch: AC / C ++ Interpreter for Script Computing ", детально описаний у доктора Доббса:

Ch - це повноцінний інтерпретатор C, який підтримує всі мовні функції та стандартні бібліотеки стандарту ISO C90, але розширює C багатьма функціями високого рівня, такими як рядковий тип та обчислювальні масиви як об'єкти першого класу.

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

Я ніколи цього не переглядав, але мати перекладач змінного струму під рукою звучить дуже корисно, і я, швидше за все, додам свій набір інструментів. Дякую за запитання!


Редагувати:

Щойно з’ясував, що один з моїх улюблених компіляторів, TCC , виконує C-скрипти:

Він також обробляє файли скриптів C (просто додайте рядок shebang "#! / Usr / local / bin / tcc -run" до першого рядка вашого файлу вихідного коду C в Linux, щоб він безпосередньо виконувався.

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

echo 'main(){puts("hello");}' | tcc -run -

2
Я хочу, щоб версія CH була доступна за ліцензією, затвердженою OSI, щоб її можна було поширювати. Ви можете спроектувати справді приємні утиліти, використовуючи їх інтерпретатор, на жаль, вони занадто проблематичні для комплектування.
Tim Post

Це було б чудово. Безкоштовно краще, ніж нічого, але поки хтось не зробить це ...
Адам Девіс,

Дивно, tccвиходить зі статусом 10за замовчуванням. Схоже, вам потрібно явно додати return 0подачуecho 'main(){puts("hello"); return 0;}' | tcc -run -
Григорій Нісбет

18

picoc - Дуже маленький перекладач С

PicoC - дуже невеликий інтерпретатор С для сценаріїв. Спочатку він був написаний як мова сценарію для бортової польотної системи БПЛА. Він також дуже підходить для інших роботизованих, вбудованих та не вбудованих додатків.


9

проект ROOT пропонує дуже функціональний інтерпретатор C і C ++ під назвою Cint . Мені це дуже подобається. Хоча трохи звикнути, але інтерпретаційно.

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


1
Чи не команда ROOT припиняє роботу Cint?
Z бозон

@Zboson "CERN перейшов на нового перекладача, чіпляйтеся. CINT більше не підтримується CERN"
endolith

ROOT замінив cint на чіпляння. Тому чіпляти можна сприймати як оновлену рекомендацію. (хоча - дивіться інші відповіді - чіпляйте C ++, а не C, якщо це доречно, хоча iirc cint також робив деякі C ++)
pseyfert

8

Ймовірно. Є кілька для c ++. Див. Чи використовували ви будь-який інтерпретатор C ++ (а не компілятори)? для прикладів. Безумовно, cint з'їсть майже будь-який код c з хорошими результатами, а tcc настільки швидкий, що ви можете використовувати його як перекладач.


7

Подивіться на перекладача Ch .

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


6

Я знаю, що ми використовуємо CINT на уроці. Здавалося, дуже добре, що ви можете спробувати!




3

ccons з'являєтьсящоб задовольнити ваші обмеження:

Мета проекту ccons - створити інтерактивну консоль для мови програмування C, подібну до "python" та "irb" для Python та Ruby відповідно. Проект будується на вершині clang та llvm.




1

Це було зроблено, навіть якщо переважна більшість робіт зі С складена. Одним із прикладів є СН


0

CERN має набір інструментів під назвою ROOT, який призначений, головним чином, для наукових цілей чи аналізу даних тощо, але він має кланг-перекладач C / C ++ на основі Clang Cling.

Перед адаптацією вони використовували перекладач C, який називався CINTCling . CINT легкий і все ще здається доступний для завантаження.

Я думаю, ви можете отримати інший, ретельно провівши статті зі списку Вікіпедії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.