GoGPT Best VPN GoSearch

ไอคอน Fav ของ OnWorks

cpphs-hugs - ออนไลน์ใน Cloud

เรียกใช้ cpphs-hugs ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง cpphs-hugs ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


cpphs - ตัวประมวลผลล่วงหน้าที่คล้ายกับ cpp-a-like สำหรับ Haskell

เรื่องย่อ


cpph [ชื่อไฟล์|ทางเลือกที่] ...

DESCRIPTION


cpph เป็นการนำกลับมาใช้ใหม่อย่างเสรีของ ซีพี (1) ตัวประมวลผลล่วงหน้า C ในและสำหรับ
ฮาสเคลล์.

ทำไมต้องใช้ cpp อีกครั้ง ถูกหรือผิด C พรีโปรเซสเซอร์ใช้กันอย่างแพร่หลายใน Haskell
รหัสแหล่งที่มา. เปิดใช้งานการคอมไพล์แบบมีเงื่อนไขสำหรับคอมไพเลอร์ที่แตกต่างกัน, different
คอมไพเลอร์รุ่นเดียวกันและแพลตฟอร์มระบบปฏิบัติการที่แตกต่างกัน นอกจากนี้ยังใช้เป็นครั้งคราว
สำหรับภาษามาโคร ซึ่งสามารถเปิดใช้งานรายละเอียดเฉพาะแพลตฟอร์มบางรูปแบบได้
การเติมเต็ม เช่น การสร้างคำจำกัดความของอินสแตนซ์และ FFI . ต้นแบบที่น่าเบื่อ
ประกาศ อย่างไรก็ตาม มีปัญหาสองประการกับ cpp นอกเหนือจากความสวยงามที่เห็นได้ชัด
คน:

สำหรับระบบ Haskell บางระบบ โดยเฉพาะ Hugs บน Windows ไม่มี cpp จริงโดย
ค่าเริ่มต้น.

แม้แต่สำหรับระบบ Haskell อื่น cpp ทั่วไปที่มีให้โดย gcc 3.x series
กำลังเปลี่ยนแปลงอย่างละเอียดในลักษณะที่ไม่เข้ากันกับไวยากรณ์ของ Haskell มี
มักมีปัญหากับช่องว่างสตริงและอักขระเฉพาะใน
ตัวระบุ ปัญหาเหล่านี้จะยิ่งแย่ลงเท่านั้น

ดังนั้นจึงดูเหมือนถูกต้องที่จะพยายามจัดหาทางเลือกอื่นให้กับ cpp ซึ่งทั้งคู่เข้ากันได้มากกว่า
Haskell และตัวมันเองเขียนด้วย Haskell เพื่อให้สามารถแจกจ่ายด้วยคอมไพเลอร์ได้

cpph ค่อนข้างมีคุณสมบัติครบถ้วนและเข้ากันได้กับ สไตล์ทรง สไตล์ซีพี
มันมีสองโหมด:

การรวบรวมตามเงื่อนไขเท่านั้น (--โนมาโคร),

และการขยายมาโครแบบเต็ม (ค่าเริ่มต้น)

In --โนมาโคร โหมด, cpph ดำเนินการคอมไพล์ตามเงื่อนไขเท่านั้น เช่น #includeของ,
#ถ้า'ทราย #ifdefถูกประมวลผลตามคำจำกัดความการแทนที่ข้อความ (ทั้งคำสั่ง-
บรรทัดและภายใน) แต่ไม่มีการขยายมาโครแบบกำหนดพารามิเตอร์ เต็ม
โหมดความเข้ากันได้ (ค่าเริ่มต้น) การแทนที่ข้อความและการขยายมาโครก็เช่นกัน
ประมวลผลในส่วนที่เหลือของข้อความที่ไม่ใช่ cpp

คุณสมบัติการทำงาน:

#ifdef การรวบรวมเงื่อนไขอย่างง่าย

#ถ้า ภาษาบูลีนเต็มรูปแบบของคำนิยาม (), &&, ||, == เป็นต้น

#เอลิฟ เงื่อนไขที่ถูกล่ามโซ่

#กำหนด
คำจำกัดความในบรรทัด (การแทนที่ข้อความและมาโคร)

#อันเดฟ การเพิกถอนคำจำกัดความในบรรทัด

#include
รวมไฟล์

#ไลน์ คำสั่งหมายเลขบรรทัด

\n ความต่อเนื่องของบรรทัดภายใน # directives ทั้งหมด

/ ** / token catenation ภายในคำจำกัดความของมาโคร

## Catenation โทเค็นสไตล์ ANSI

# การแปลงสตริงโทเค็นสไตล์ ANSI

__ไฟล์__
การแทนที่ข้อความพิเศษสำหรับข้อความแสดงข้อผิดพลาด DIY

__ไลน์__
การแทนที่ข้อความพิเศษสำหรับข้อความแสดงข้อผิดพลาด DIY

__วันที่__
การแทนที่ข้อความพิเศษ

__เวลา__
การแทนที่ข้อความพิเศษ

การขยายมาโครเป็นแบบเรียกซ้ำ การกำหนดชื่อแมโครใหม่จะไม่สร้างคำเตือน
สามารถกำหนดมาโครบนบรรทัดคำสั่งด้วย -D เช่นเดียวกับการเปลี่ยนข้อความ มาโคร
ชื่อได้รับอนุญาตให้เป็นตัวระบุ Haskell เช่น เฉพาะ ` และ backtick ´
อักขระซึ่งหลวมกว่าภาษา C เล็กน้อย แต่ยังไม่รวมตัวดำเนินการ
สัญลักษณ์

จำนวนบรรทัดในเอาต์พุตถูกรักษาไว้เพื่อให้ตัวประมวลผลในภายหลังสามารถให้
ข้อความแสดงข้อผิดพลาดที่มีความหมาย เมื่อไฟล์เป็น #include'NS, cpph แทรก #ไลน์ คำสั่งสำหรับ
เหตุผลเดียวกัน การกำหนดหมายเลขควรถูกต้องแม้ในกรณีที่มีการต่อบรรทัด
ถ้าคุณไม่ต้องการ #ไลน์ คำสั่งในผลลัพธ์สุดท้าย ใช้ --โนลีน ตัวเลือก

ข้อผิดพลาดทางไวยากรณ์ในคำสั่ง cpp จะส่งข้อความถึง stderr และหยุดโปรแกรม
ความล้มเหลวในการค้นหาไฟล์ #include'd ทำให้เกิดคำเตือนถึง stderr แต่การประมวลผลจะดำเนินต่อไป

คุณสามารถระบุชื่อไฟล์จำนวนเท่าใดก็ได้บนบรรทัดคำสั่ง ผลลัพธ์ขึ้นอยู่กับ
เอาต์พุตมาตรฐาน

-Dซิม กำหนดข้อความแทนที่ (ค่าเริ่มต้นคือ 1)

-ดีซิม=คลื่น
กำหนดข้อความแทนที่ด้วยค่าเฉพาะ

-Iเส้นทาง เพิ่มไดเร็กทอรีในเส้นทางการค้นหาสำหรับ #include's

-Oไฟล์ ระบุไฟล์สำหรับเอาต์พุต (ค่าเริ่มต้นคือ stdout)

--โนมาโคร
ประมวลผลเฉพาะ #ifdef's และ #include's
อย่าขยายมาโคร

--โนลีน
ลบ #line drops ออกจากเอาต์พุต

--สตริป
แปลงความคิดเห็นสไตล์ C เป็นช่องว่างแม้อยู่ภายนอก
คำสั่ง cpp

--แฮช
รู้จักตัวดำเนินการ stringise ของ ANSI # และ ## สำหรับ
token catenation ภายในมาโคร

--ข้อความ ถือว่าอินพุตเป็นข้อความธรรมดา ไม่ใช่รหัส Haskell

--เค้าโครง
รักษาบรรทัดใหม่ภายในการขยายมาโคร

--ไม่สว่าง
ลบความคิดเห็นแบบผู้รู้หนังสือ

--รุ่น
รายงานหมายเลขเวอร์ชันของ cpphs และหยุด

ไม่มีการแทนที่ข้อความที่กำหนดไว้โดยค่าเริ่มต้น (cpp ปกติมักจะมีคำจำกัดความ
สำหรับเครื่อง ระบบปฏิบัติการ ฯลฯ คุณสามารถเพิ่มสิ่งเหล่านี้ลงในซอร์สโค้ด cpph ได้อย่างง่ายดาย หากคุณต้องการ)
ค้นหาเส้นทางการค้นหาตามลำดับของ -I ยกเว้นว่าไดเร็กทอรีของ
ไฟล์การเรียก จากนั้นไดเร็กทอรีปัจจุบันจะถูกค้นหาก่อนเสมอ อีกครั้งไม่มี
เส้นทางการค้นหาเริ่มต้น (และอีกครั้ง นี้สามารถเปลี่ยนแปลงได้อย่างง่ายดาย)

ความแตกต่าง จาก CPP


โดยทั่วไป cpphs ขึ้นอยู่กับ สไตล์ทรง พฤติกรรม ไม่ใช่ ANSI C และมี
ตามความแตกต่างหลักจาก cpp มาตรฐาน

ทั่วไป

การขอ # ที่แนะนำคำสั่ง cpp ใด ๆ จะต้องอยู่ในคอลัมน์แรกของบรรทัด (ในขณะที่
ANSI อนุญาตช่องว่างก่อน # ).

สร้าง #ไลน์ n "ชื่อไฟล์" ไวยากรณ์ ไม่ใช่ # n "ชื่อไฟล์" ตัวแปร

ความคิดเห็น C จะถูกลบออกจากภายในคำสั่ง cpp เท่านั้น ไม่พรากจากผู้อื่น
ข้อความ. พิจารณาตัวอย่างเช่นใน Haskell สิ่งต่อไปนี้ทั้งหมดเป็นตัวดำเนินการที่ถูกต้อง
สัญลักษณ์: /* */ * / * อย่างไรก็ตาม คุณสามารถเปิดการลบความคิดเห็น C ด้วยปุ่ม --สตริป ตัวเลือก

แมโคร language

ยอมรับ / ** / สำหรับการวางโทเค็นในคำจำกัดความของมาโคร อย่างไรก็ตาม, /* */ (มีข้อความใด ๆ
ระหว่างความคิดเห็นเปิด/ปิด) แทรกช่องว่าง

ANSI ## ตัวดำเนินการวางโทเค็นสามารถใช้ได้กับ --แฮช ธง. นี่คือการหลีกเลี่ยง
ตีความโอเปอเรเตอร์ Haskell ที่ถูกต้องที่มีชื่อเดียวกันผิด

แทนที่พารามิเตอร์ที่เป็นทางการของมาโครด้วยค่าจริง แม้จะอยู่ภายในสตริง (double หรือ single
ยกมา) นี่เป็นพฤติกรรมดั้งเดิม ไม่รองรับใน ANSI

ตระหนักถึง # ตัวดำเนินการ stringisation ในคำจำกัดความของมาโครก็ต่อเมื่อคุณใช้ --แฮช
ตัวเลือก. (เป็นส่วนเพิ่มเติมของ ANSI เท่านั้น เนื่องจากสตริงที่ยกมา (ด้านบน) is
ห้ามโดย ANSI)

รักษาช่องว่างภายในคำจำกัดความการแทนที่ข้อความ (การขึ้นบรรทัดใหม่แบบโมดูล)
แต่พื้นที่นำหน้าและต่อท้ายถูกตัดออก

รักษาช่องว่างภายในคำจำกัดความของมาโคร (และต่อท้าย) ทุกประการ (modulo
ขึ้นบรรทัดใหม่) แต่พื้นที่นำหน้าจะถูกตัดออก

รักษาช่องว่างภายในอาร์กิวเมนต์การเรียกแมโครทุกประการ (รวมถึงการขึ้นบรรทัดใหม่) แต่นำหน้า
และช่องว่างต่อท้ายจะถูกตัดออก

กับ --เค้าโครง ตัวเลือก ความต่อเนื่องของบรรทัดในการแทนที่ข้อความหรือคำจำกัดความของมาโคร
จะถูกเก็บไว้เป็นการขึ้นบรรทัดใหม่ในการเรียกมาโคร (มีประโยชน์สำหรับโค้ดที่ไวต่อเลย์เอาต์ใน
ฮาสเคลล์)

ใช้ cpphs-hugs ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี