หนังสือที่ดีเกี่ยวกับทฤษฎี parser?


9

หนึ่งในโปรเจ็กต์ Java ของฉันคือการแยกส่วนของ parboiledและไม่เหมือนกับว่า Antlr หรือ JavaCC ตัวแยกวิเคราะห์จะถูกสร้างขึ้นที่รันไทม์ Grammars ที่สร้างขึ้นคือ Parsing Expression Grammars หรือ PEG (ฉันได้ยินคำศัพท์อื่นสำหรับพวกเขาคือ "packrat")

ในขณะที่การสร้างรันไทม์เพิ่มความซับซ้อน (เกี่ยวข้องกับการสร้าง bytecode) อีกแง่มุมหนึ่งเกี่ยวข้องกับทฤษฎี parser เอง อย่างที่ฉันมีโชคไม่ดีที่วิทยาศาสตร์คอมพิวเตอร์ฉันไม่มีความรู้ทางทฤษฎีในการแมปรหัสที่มีอยู่กับแนวคิดที่มีอยู่ - ในกรณีนี้ตัวแยกวิเคราะห์

มีหนังสืออ้างอิงที่ดีในตัวแยกวิเคราะห์ที่ฉันสามารถซื้อและอ่านหรือแม้กระทั่งลิงก์บนอินเทอร์เน็ตซึ่งสามารถช่วยฉันสร้าง "การแมป" การบัญชีสำหรับความรู้เชิงทฤษฎีของฉันได้หรือไม่?

คำตอบ:



3

หากคุณต้องการเรียนรู้เกี่ยวกับทฤษฎี parsers ฉันขอแนะนำเล่ม 1 ของหนังสือคลาสสิกนี้:

Aho, Alfred V.; Ullman, Jeffrey D. , ทฤษฎีการแยกวิเคราะห์, การแปลและการรวบรวม , Prentice-Hall (1972)


นี่คือสารานุกรมในหัวข้อในเวลาที่เผยแพร่ แต่มีงานวิจัยที่ทำตั้งแต่นั้นมา
babou

1

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


0

ในขณะที่เทคนิคการแยกวิเคราะห์เป็นหนังสือที่ยอดเยี่ยมและฉันได้อ่านบางส่วนมาหลายครั้ง แต่ก็ให้ความสำคัญกับการแยกวิเคราะห์ LR ซึ่งจะไม่น่าสนใจสำหรับคุณ ในกรณีเฉพาะของคุณคุณกำลังดู PEG ที่เรียงลำดับของการแยกวิเคราะห์แบบวนซ้ำจากบนลงล่างโดยใช้การย้อนรอยตามลำดับของทางเลือก

ฉันอยากจะแนะนำให้คุณดูนักวิเคราะห์คำ parser ซึ่งใช้กลยุทธ์เดียวกัน ตัวอย่างเช่นคุณสามารถตรวจสอบกระดาษนี้http://research.microsoft.com/pubs/65201/parsec-paper-letter.pdfซึ่งใช้ Haskell เพื่อสร้างเครื่องมือวิเคราะห์คำ ตรวจสอบส่วนtry ที่พวกเขารวม backtracking (มาตรา 3.4)

ไม่ว่าในกรณีใด ๆ สิ่งที่คุณต้องเรียนรู้คือ:

  • การแยกวิเคราะห์แบบเรียกซ้ำและไวยากรณ์ไวยากรณ์ LL
  • lookahead คงที่เทียบกับ lookahead อนันต์ (ทำผ่าน backtracking)
  • กลยุทธ์การย้อนรอย
  • วิธีจัดการกับกฎการเรียกซ้ำซ้าย
  • การจดจำผลลัพธ์บางส่วนเพื่อหลีกเลี่ยงพฤติกรรมแบบทวีคูณ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.