Чи є перекладач для 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.