มีล่ามภาษา C หรือไม่? [ปิด]


111

ฉันสงสัยว่ามีบางอย่างเช่นล่ามสำหรับ C นั่นคือในเทอร์มินัล Linux ฉันสามารถพิมพ์ "python" แล้วโค้ดในล่ามนั้น (ฉันไม่แน่ใจว่าแปลคำถูกไหม) นี่เป็นประโยชน์มากสำหรับการทดสอบสิ่งต่างๆและฉันก็สงสัยว่ามีสิ่งที่คล้ายกันสำหรับ C หรือไม่แม้ว่าฉันจะสงสัยก็ตาม สิ่งเดียวที่ฉันคิดได้ก็คือเปลือก C ...


5
คำที่ถูกต้องสำหรับสิ่งที่คุณต้องการคือ "shell" หรือ "prompt" หรือ "REPL" (Read-Eval-Print-Loop อ้างอิงถึงคำสั่ง Lisp 4 คำที่ต้องเข้าร่วมเพื่อสร้างล่าม Lisp ใน Lisp) แต่ ล่ามจะทำงานได้
Chris Lutz

1
นอกจากนี้คำที่คุณกำลังมองหาคือ REPL (อ่านการประเมินการพิมพ์วนซ้ำ)
tsimon


คำที่ต้องการคือสภาพแวดล้อมแบบ "โต้ตอบ" สำหรับ C. สภาพแวดล้อมแบบโต้ตอบจะเปิดเชลล์หรือพร้อมต์เฉพาะสำหรับภาษา REPL ก็ดีเช่นกัน
jcchuks

คุณสามารถดูรายการล่ามและคอมไพเลอร์สำหรับ 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 เท่านั้นที่มีความสามารถในการวางแผนและคุณสมบัติอื่น ๆ ที่อาจต้องการ

ฉันไม่เคยดูเรื่องนี้มาก่อน แต่การมีล่ามแปลภาษาในมือฟังดูมีประโยชน์มากและมีบางอย่างที่ฉันน่าจะเพิ่มเข้าไปในชุดเครื่องมือของฉัน ขอบคุณสำหรับคำถาม!


แก้ไข:

เพิ่งพบว่าหนึ่งในคอมไพเลอร์ที่ฉันชอบคือ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

คงจะดีไม่น้อย ฟรีแวร์ดีกว่าไม่มีอะไรเลย แต่จนกว่าจะมีคนทำ ...
Adam Davis

วิจิตรพิสดาร, tccออกจากที่มีสถานะ10เป็นค่าเริ่มต้น ดูเหมือนว่าคุณจะต้องเพิ่มการreturn 0ให้อย่างชัดเจนecho 'main(){puts("hello"); return 0;}' | tcc -run -
Gregory Nisbet

18

picoc - ล่าม C ตัวเล็กมาก

PicoC เป็นล่ามภาษา C ขนาดเล็กมากสำหรับการเขียนสคริปต์ เดิมเขียนเป็นภาษาสคริปต์สำหรับระบบการบินบนเครื่องบินของ UAV นอกจากนี้ยังเหมาะอย่างยิ่งสำหรับแอปพลิเคชันหุ่นยนต์ฝังตัวและไม่ฝังตัวอื่น ๆ


9

โครงการ ROOT ให้ทำงานมาก C และ C ++ ล่ามเรียกว่าCint ฉันค่อนข้างชอบมัน แม้ว่าจะต้องใช้เวลาเล็กน้อยในการตีความหมาย

TCC เป็นตัวเลือกที่ดีมากเช่นกัน แต่ฉันไม่สามารถรับรอง REPL ได้


1
ทีม ROOT กำลังเลิกใช้ Cint หรือไม่?
Z boson

@Zboson "CERN เปลี่ยนไปใช้ล่ามคนใหม่ยึด CINT ไม่รองรับ CERN อีกต่อไป"
endolith

ROOT แทนที่ cint โดยยึด ดังนั้นจึงสามารถยึดเป็นคำแนะนำที่อัปเดตได้ (แม้ว่า - ดูคำตอบอื่น ๆ - การยึดติดคือ C ++ ไม่ใช่ C หากมีความเกี่ยวข้องแม้ว่า iirc cint จะทำ C ++ ด้วย
ก็ตาม

8

อาจ. มีหลายอย่างสำหรับ c ++ ดูคุณใช้ล่าม C ++ (ไม่ใช่คอมไพเลอร์) หรือไม่? ตัวอย่าง. แน่นอนว่าcintจะกินโค้ด c เกือบทุกตัวด้วยผลลัพธ์ที่ดีและtccนั้นเร็วมากจนคุณสามารถใช้มันเหมือนล่าม


7

ให้ดูล่ามแปลภาษา .

Ch เป็นตัวแปล C / C ++ แบบฝังได้สำหรับการเขียนสคริปต์ข้ามแพลตฟอร์มการเขียนโปรแกรมเชลล์การพล็อต 2D / 3D การคำนวณเชิงตัวเลขและการเขียนสคริปต์แบบฝัง





3

cconsดูเหมือนจะตรงตามข้อ จำกัด ของคุณ:

เป้าหมายของโครงการ ccons คือการสร้างคอนโซลแบบโต้ตอบสำหรับภาษาโปรแกรม C ซึ่งคล้ายกับ "python" และ "irb" สำหรับ Python และ Ruby ตามลำดับ โครงการสร้างขึ้นด้านบนของเสียงดังและ llvm




1

ได้ดำเนินการแล้วแม้ว่างาน C ส่วนใหญ่จะรวบรวม ตัวอย่างหนึ่งคือCH


0

เซิร์นมีเครื่องมือที่เรียกว่ารากที่มีความหมายเป็นหลักสำหรับการวิเคราะห์ทางวิทยาศาสตร์หรือข้อมูลวัตถุประสงค์ ฯลฯ .. แต่ก็มีเสียงดังกราว - ตาม C / C ++ Clingล่ามเรียกว่า

พวกเขากำลังใช้ C ล่ามเรียกว่าCIntClingก่อนที่พวกเขาดัดแปลง CINT มีน้ำหนักเบาและยังคงมีให้ดาวน์โหลด

ฉันคิดว่าคุณอาจได้ประโยชน์จากการค้นหาบทความในรายการ Wikipedia อย่างรอบคอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.