ตัวอย่างเช่นฉันต้องการจ่ายคนเพื่อสร้างภาษาโปรแกรมหรือภาษาสคริปต์สำหรับฉัน พวกเขาต้องการเอกสารประเภทใดเพื่อให้เข้าใจอย่างถ่องแท้ว่าฉันต้องการอะไร
ฉันหมายถึงมีเอกสารมาตรฐานที่อธิบายภาษาการเขียนโปรแกรม / สคริปต์ใหม่หรือไม่?
ตัวอย่างเช่นฉันต้องการจ่ายคนเพื่อสร้างภาษาโปรแกรมหรือภาษาสคริปต์สำหรับฉัน พวกเขาต้องการเอกสารประเภทใดเพื่อให้เข้าใจอย่างถ่องแท้ว่าฉันต้องการอะไร
ฉันหมายถึงมีเอกสารมาตรฐานที่อธิบายภาษาการเขียนโปรแกรม / สคริปต์ใหม่หรือไม่?
คำตอบ:
สิ่งที่คุณต้องเขียนเรียกว่าสเปคภาษา
มันควรจะมีคำอธิบายของไวยากรณ์ของภาษา (โดยเฉพาะอย่างยิ่งในExtended Backus-Naur-Form ) และความหมายของมัน
สำหรับส่วนหลังคุณอาจจะเขียนคำอธิบายในคำพูดของคุณเอง ( แต่ดูแลจะแม่นยำ) หรือความหมายอย่างเป็นทางการ
คุณจะต้องต่อไปนี้:
ภาษาของคุณจะแตกต่างกันอย่างไร ภารกิจของมันคืออะไร? มันใช้งานได้ไหม มันเป็นวัตถุที่มุ่งเน้น? มันเป็นภาษาเมตาหรือไม่? ฟีเจอร์พิเศษของมันคืออะไร? มันจะให้อะไรกับโลกที่ไม่มีอยู่จริง (หรือมีอยู่อย่างน่าเกลียด)? คุณต้องการเปลี่ยนสิ่งต่าง ๆ อย่างไร มันรวบรวมหรือตีความ? DSL หรือภาษาที่ใช้งานทั่วไป? นี่คือปรัชญาของคุณและสั่งการมากมายเกี่ยวกับการออกแบบภาษาของคุณ
จากนั้นทำงานบนรอยขีดข่วนของไวยากรณ์และความหมายบนกระดาษ นี่จะเป็นนิยามของความหมายของคุณ... การเขียนโค้ดปลอมเป็นวิธีที่ดีในการพัฒนาความคิดของคุณ อ่าน "ภาษาการเขียนโปรแกรม C" เพื่อดูตัวอย่างที่ยอดเยี่ยมเกี่ยวกับวิธีการทำสิ่งนี้ เล่นกับมัน.
จากนั้นคุณจะต้องกำหนดโทเค็นและไวยากรณ์ของคุณในบางวิธี จากนั้นโปรแกรมจะประมวลผลสิ่งเหล่านี้ลงในออโตมาตะที่มีความสามารถในการอ่านสตริงและประมวลผลไวยากรณ์ Yacc และ Bison ใช้นิพจน์ทั่วไปและไวยากรณ์สไตล์ BNF สำหรับการวิเคราะห์คำและไวยากรณ์ตามลำดับ นอกจากนี้ยังมี Yacc และ Bison เช่นเครื่องมือในภาษาอื่น ๆ
คุณจะต้องมีพื้นฐานทางทฤษฎี / ผู้เรียบเรียงภาษาเพื่อที่จะรู้ว่าจะไม่ทำอะไร ตัวอย่าง ได้แก่ ไวยากรณ์ที่ไม่ชัดเจนการสร้าง AST และปัญหาการจัดการและโดยทั่วไปจะทำให้ชีวิตง่ายขึ้นสำหรับตัวคุณเอง การรู้ทฤษฎีนั้นสำคัญมาก ฉันจะลองพิจารณาสิ่งต่อไปนี้เพื่อเริ่มต้น:
Compilers: หลักการเทคนิคและเครื่องมือ (Dragon Book)
การใช้งานคอมไพเลอร์สมัยใหม่ใน Cหรือการใช้งานคอมไพเลอร์สมัยใหม่ใน Java
99.9% ของเวลาที่สร้างภาษาใหม่นั้นไม่จำเป็นเลย ผลตอบแทนจากการลงทุนน่าจะน้อยมากและคุณจะเสียเวลา
เป็นไปได้มากว่าคุณสามารถใช้ Javascript เป็นภาษาสคริปต์ที่ไวต่อความรู้สึกและมี parsers สำหรับภาษาส่วนใหญ่อยู่แล้ว คุณยังสามารถใช้ภาษาสคริปต์อื่น ๆ ที่คุณชอบหากคุณสามารถค้นหาโปรแกรมแยกวิเคราะห์ที่เหมาะสมสำหรับพวกเขา การนำไปใช้ในโปรแกรมของคุณจะต้องใช้งานน้อยลงและมีผลตอบแทนที่มากขึ้น ผู้คนไม่ต้องเรียนรู้ภาษาอื่นพวกเขาเพียงแค่ต้องเรียนรู้ API ของคุณ มันเป็นทางออกที่ดีกว่ามาก
การสร้างภาษาใหม่เกือบจะไม่ดีเสมอไป