การสร้างตัวแยกวิเคราะห์แผนผังไวยากรณ์เชิงนามธรรมสำหรับภาษาเฉพาะโดเมนของคุณเอง
pyastbuilder
เป็นเฟรมเวิร์ก Python สำหรับการสร้างพาร์เซอร์ที่สร้าง แผนผังวัตถุ ที่สะท้อนถึง แผนผังไวยากรณ์เชิงนามธรรม (AST) ของภาษา ซึ่งสามารถนำทาง ค้นหา และแก้ไขโดยใช้ภาษาไพโธนิกได้ สิ่งที่รวมอยู่ในแพ็คเกจเป็นตัวอย่างหนึ่งที่แสดงให้เห็น: parser สำหรับภาษา W3C SPARQL เช่น sparqlparser.py
ซึ่งใช้งาน Sparql v1.1 อย่างไรก็ตาม สามารถอำนวยความสะดวกในภาษาอื่นๆ ที่ระบุโดย BNF ได้
มี parser เฉพาะหรือทั่วไปอยู่มากมาย อย่างไรก็ตาม เหตุผลในการพัฒนา pyastbuilder
ก็คือ บ่อยครั้งที่การแยกวิเคราะห์นั้นถือเป็นกระบวนการสตรีมมิ่งและไดนามิกซึ่งมี hook หลายอันอยู่ซึ่งใคร ๆ ก็สามารถแนบโค้ดของตัวเองได้ ตรงข้ามกับการสร้างไวยากรณ์นามธรรมแบบคงที่ แผนผังของ "เอกสาร" อิเล็กทรอนิกส์ พร้อมด้วย API สำหรับการเข้าถึงสำหรับการประมวลผลหลังการแยกวิเคราะห์
การยกภาระหนักเกี่ยวกับการแยกวิเคราะห์จริงนั้นเหลือเพียงการแยกวิเคราะห์ซึ่งมีการรวมและใช้อย่างกว้างขวาง
เราติดตามของเราต่อไป
หลักการออกแบบ: จงคาดการณ์ กำหนดหลักเกณฑ์สถานที่จัดเก็บเอกสารให้ชัดเจน ส่วนใดของเอกสารที่ใส่ไว้ในไฟล์ README ส่วนใดที่สามารถพบได้บนหน้าวิกิ และข้อมูลใดที่คุณใส่ในโค้ดเป็นความคิดเห็น กำหนดและจัดทำเอกสารเกณฑ์เอกสารของคุณ โดยเฉพาะอย่างยิ่งในส่วนหลักของเอกสารที่ผู้ใช้หรือนักพัฒนาของคุณจะได้รับการดำเนินการ ซึ่งอาจเป็นไฟล์ README.md ของโครงการ
ดังนั้นเราจึงปฏิบัติตามเกณฑ์ต่อไปนี้เกี่ยวกับเอกสาร:
pyastparser
จะถูกบันทึกเป็นไฟล์ README.md ในทุกโฟลเดอร์ของแผนผังซอร์สpyastbuilder
รวมถึง เอกสารประกอบโค้ดเฉพาะ โดยละเอียดทั้งหมดมีอยู่ในซอร์สโค้ดในรูปแบบไวยากรณ์มาร์กอัป reStructuredText (reST) เนื่องจากเอกสารประเภทนี้เป็นไปตามระเบียบของ python pydoc จึงสามารถสร้างหน้า HTML ที่เกี่ยวข้องได้ เอกสารประกอบจะพร้อมใช้งานหลังจากสร้าง HTML โดยการชี้เบราว์เซอร์ไปที่ไฟล์ Doc/build/html/index.html
( TODO )สิ่งเหล่านี้จะประกอบด้วยส่วนหนึ่งของเอกสารที่เกี่ยวข้องกับการออกแบบทั่วไปเกี่ยวกับซอร์สโค้ดที่มีอยู่ในส่วนใดส่วนหนึ่งของแผนผัง เอกสารนี้มุ่งเป้าไปที่ผู้พัฒนาโครงการโดยมีวัตถุประสงค์เพื่อให้พวกเขาเข้าใจอย่างถ่องแท้เกี่ยวกับ:
ภาพรวมทั้งหมดของเอกสารวิกิสามารถพบได้ที่หน้าแรกของวิกิ เราสามารถอธิบายรายการต่อไปนี้:
sparqlparser
เป็นไลบรารีในโค้ด python ของคุณเอง รวมถึง xxxparser
นอกกรอบอื่นๆ ที่อาจมีให้ในอนาคตของสิ่งนี้ โครงการ. เนื่องจาก xxxparser
อื่นๆ จะขึ้นอยู่กับโปรเจ็กต์เดียวกันนี้ เราจึงสามารถคาดเดาได้อย่างปลอดภัยว่าจะค้นหาการอ้างอิงจำนวนมากไปยังกรณีการใช้งานที่คล้ายกันมากหรือเหมือนกันจาก sparqlparser
xxxparser
ของคุณเอง โปรดแบ่งปันสิ่งนี้กับโปรเจ็กต์นี้ และจัดเตรียมบทของคุณเองในคู่มือผู้ใช้ของเราเกี่ยวกับการใช้ parser นี้ อย่างไรก็ตาม: อย่าทำเอกสารซ้ำ แต่ใช้คู่มือ sparqlparser
เป็นคู่มืออ้างอิงแทน โปรดอ่าน CONTRIBUTING.md เพื่อดูรายละเอียดเกี่ยวกับจรรยาบรรณของเรา และขั้นตอนในการส่งคำขอดึงถึงเรา
เราใช้ SemVer สำหรับการกำหนดเวอร์ชัน สำหรับเวอร์ชันที่มี โปรดดูแท็กบนที่เก็บนี้
โปรดดูรายชื่อผู้ร่วมให้ข้อมูลที่เข้าร่วม (ง) ในโครงการนี้ด้วย
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ LICENSE.md