2009-02-25 9 views
110

Tôi đã tự hỏi nếu có một cái gì đó giống như một thông dịch viên cho C. Đó là, trong một thiết bị đầu cuối Linux tôi có thể gõ "python" và sau đó mã trong thông dịch viên đó. (Tôi không chắc người phiên dịch đúng từ). Điều này thực sự hữu ích để thử nghiệm những thứ khác nhau và tôi tò mò nếu một cái gì đó tương tự tồn tại cho C. Mặc dù tôi nghi ngờ nó. Điều duy nhất tôi có thể nghĩ về điều đó sẽ làm điều đó sẽ là vỏ C ...Có thông dịch viên cho C không?

+5

Từ chính xác cho những gì bạn muốn là "vỏ" hoặc "nhắc nhở" hoặc "REPL" (Read-Eval-Print-Loop, liên quan đến 4 lệnh Lisp phải được kết hợp để tạo một trình thông dịch Lisp trong Lisp), nhưng một trình thông dịch sẽ hoạt động. –

+1

Như một sang một bên, thuật ngữ bạn đang tìm kiếm là REPL (Đọc Đánh giá In Vòng lặp). – Travis

+0

trùng lặp của [Có REPL cho lập trình C không?] (Http://stackoverflow.com/q/10766900/309483) –

Trả lời

72

There are many - nếu bạn thu hẹp phạm vi câu hỏi của mình, chúng tôi có thể đề xuất một số yêu cầu cụ thể cho nhu cầu của bạn.

Một phiên dịch đáng chú ý là "Ch: A C/C++ Interpreter for Script Computing" chi tiết trong TS Dobbs:

Ch là một thông dịch viên C hoàn chỉnh hỗ trợ tất cả các tính năng ngôn ngữ và thư viện chuẩn của tiêu chuẩn ISO C90 , nhưng mở rộng C với nhiều tính năng cấp cao như chuỗi loại và mảng tính toán là đối tượng hạng nhất.

Ch standard is freeware nhưng không phải nguồn mở. Chỉ Ch chuyên nghiệp có khả năng âm mưu và các tính năng khác mà người ta có thể muốn.

Tôi chưa bao giờ xem xét điều này trước đây, nhưng có một thông dịch viên c trên âm thanh bàn tay rất hữu ích, và một cái gì đó tôi có thể sẽ thêm vào bộ công cụ của tôi. Cảm ơn câu hỏi!


Edit:

Chỉ cần phát hiện ra rằng một trong những trình biên dịch yêu thích của tôi, TCC, sẽ thực hiện C kịch bản:

Nó cũng xử lý các file C kịch bản (chỉ thêm dòng công việc "#!/usr/local/bin/tcc -run" vào dòng đầu tiên của tệp mã nguồn C trên Linux để nó được thực thi trực tiếp.

TCC có thể đọc mã nguồn C từ đầu vào tiêu chuẩn khi '-' được sử dụng trong vị trí của 'thông tin'. Ví dụ:

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

Tôi muốn một phiên bản CH có sẵn theo giấy phép được OSI phê chuẩn, vì vậy nó có thể được phân phối. Bạn có thể thiết kế các tiện ích thực sự tốt đẹp bằng cách sử dụng trình thông dịch của họ, tiếc là chúng quá khó để đóng gói. –

+0

Điều đó thật tuyệt. Phần mềm miễn phí tốt hơn là không có gì, nhưng cho đến khi có ai đó ... –

+0

Lạ lùng, 'tcc' thoát với trạng thái' 10' theo mặc định. Có vẻ như bạn phải thêm một 'return 0' cho' echo 'main() {puts ("hello") một cách rõ ràng; return 0;} '| tcc -run -' –

4

cinterp là một khởi đầu.

+7

Bạn đang đề cập đến https://github.com/danielkeller/cinterp hoặc http://free-compilers.sharnoff.org/TOOL/C-12.html? Một liên kết sẽ cải thiện câu trả lời này ... – f3lix

1

Nó đã được thực hiện, mặc dù phần lớn công việc C được biên dịch. Một ví dụ là CH

7

Hãy xem qua số Ch Interpreter.

Ch là một C nhúng/C++ phiên dịch cho cross-platform kịch bản, bao lập trình, 2D/3D âm mưu, số máy tính, và kịch bản nhúng.

9

dự án ROOT cung cấp một thông dịch viên C và C++ rất chức năng được gọi là Cint. Tôi khá thích nó. Phải mất một chút nhận được sử dụng để giải thích, mặc dù.

TCC cũng là một lựa chọn tốt, nhưng tôi không thể chứng minh cho REPL

+1

Không phải nhóm ROOT đang loại bỏ Cint? –

+0

@Zboson "CERN đã chuyển sang một thông dịch viên mới, bám víu. CINT không được CERN hỗ trợ nữa" – endolith

6

Tôi biết chúng tôi sử dụng CINT trong lớp học. Nó có vẻ khá tốt, bạn có thể muốn cho nó một thử!

5

Kiểm tra thực tế iGCC

18

picoc - Một C phiên dịch rất nhỏ

PicoC là một thông dịch viên C rất nhỏ so với kịch bản. Ban đầu nó được viết là được viết dưới dạng ngôn ngữ kịch bản cho hệ thống chuyến bay trên tàu của UAV. Nó cũng rất thích hợp cho các ứng dụng rô bốt, không nhúng khác.

3

ccons xuất hiện để đáp ứng hạn chế của bạn:

Mục tiêu của dự án ccons là tạo ra một giao diện điều khiển tương tác cho các ngôn ngữ lập trình C, tương tự như "trăn" và "IRB" cho Python và Ruby tương ứng. Dự án xây dựng trên đầu trang của clang và llvm.