ในบทที่ 1 ของมูลนิธิการปฏิบัติสำหรับการเขียนโปรแกรมภาษาที่ผู้เขียนกล่าวว่าไวยากรณ์นามธรรมต้นไม้ที่เกี่ยวข้องกับทุกประเภท
โดยสังเขปประเภทต่าง ๆ เหมือน แต่ฉันอยากจะรู้ว่าพวกเขามีคำจำกัดความที่แม่นยำหรือไม่ ฉันจะดีใจถ้ามีการอ้างอิงบางอย่างเช่นกัน
ในบทที่ 1 ของมูลนิธิการปฏิบัติสำหรับการเขียนโปรแกรมภาษาที่ผู้เขียนกล่าวว่าไวยากรณ์นามธรรมต้นไม้ที่เกี่ยวข้องกับทุกประเภท
โดยสังเขปประเภทต่าง ๆ เหมือน แต่ฉันอยากจะรู้ว่าพวกเขามีคำจำกัดความที่แม่นยำหรือไม่ ฉันจะดีใจถ้ามีการอ้างอิงบางอย่างเช่นกัน
คำตอบ:
ขึ้นอยู่กับความหมายที่เราจะใช้สำหรับประเภทและประเภท - อย่างไรก็ตามสั้น - เล็ก ๆ น้อย ๆ ที่ไม่เป็นทางการ - คำจำกัดความอาจจะเป็น - ประเภทชั้นเรียนของ asts และประเภทชั้นเรียนของค่า
จริง ๆ แล้วมีความคล้ายคลึงกันมากระหว่างการเรียงลำดับสำหรับไวยากรณ์ที่เป็นนามธรรมและชนิดที่มักจะเข้าใจ แต่ทุกประเภทเป็นแนวคิดที่ประโยคที่เป็นทางการและต้นไม้ตามที่มีไวยากรณ์เกินไปในขณะที่ประเภทที่มีแนวคิดความหมาย
คำศัพท์ที่มาจากการจีบราคำ (ที่เรียกว่าจีบราส์ฟรี ) และพีชคณิตสากล เหล่านี้เป็นทฤษฎีเกี่ยวกับวากยสัมพันธ์ของโครงสร้างเชิงพีชคณิตวิเคราะห์โดยอิสระจากการตีความใด ๆ พวกเขาได้รับการพัฒนาในช่วงครึ่งแรกของศตวรรษที่ 20
คำอาจถูกมองว่าเป็นต้นไม้ที่โหนดจะมีข้อความจากชุด จำกัด ของผู้ประกอบการผู้ประกอบการแต่ละคนมี arity คงที่ที่ระบุจำนวนของลูกสาวในต้นไม้ Arity 0 ใช้สำหรับใบไม้ ในalgebras แบบเรียงหลายอันนี้ถูกขัดเกลาด้วยการเรียงลำดับดังนั้นตัวดำเนินการแต่ละตัวจะอยู่ในประเภทและ arities จะถูกแทนที่ด้วยรายการเรียงลำดับที่เรียงลำดับ การเรียงลำดับของโอเปอเรเตอร์พร้อมกับรายการประเภทของลูกสาวเรียกว่าลายเซ็นของโอเปอเรเตอร์
ในพีชคณิตสากลนี่คือการกลั่นเพิ่มเติมโดยการแนะนำความสัมพันธ์ที่เท่าเทียมกันที่กำหนดไว้อย่างเท่าเทียมกันระหว่างข้อตกลง
แม้ว่าดูเหมือนว่าจะจางหายไปเล็กน้อย แต่แนวคิดเหล่านี้ค่อนข้างเป็นที่นิยมและได้รับการศึกษาในสาขาวิทยาการคอมพิวเตอร์ในปลายศตวรรษที่ 20 ซึ่งเป็น algebras เชิงนามธรรมที่ถูกมองว่าเป็นพื้นฐานสำหรับประเภทข้อมูลนามธรรมซึ่งเป็นส่วนหนึ่งของสิ่งที่เป็น คลาส nos ในการเขียนโปรแกรมเชิงวัตถุ
Universal algebras เกี่ยวข้องกับการพัฒนาทฤษฎีหมวดหมู่ซึ่งเป็นรากฐานในการมองเห็นในปัจจุบันของประเภทและภาษาการเขียนโปรแกรม
Algebras เป็นวัตถุประโยคและมีวัตถุประสงค์เพื่อใช้กับการตีความในโดเมนความหมายบางประเภทที่สอดคล้องกับประเภท การตีความคือโฮโมมอร์ฟิซึมที่แมปประเภทของโดเมนค่า (ประเภท)และตัวดำเนินการเข้าสู่การทำงานระหว่างโดเมนเหล่านั้นเพื่อให้มีการเคารพลายเซ็นและสมการในกรณีของพีชคณิตเชิงเส้น นี่คือวิธีที่คุณสามารถใช้ผลลัพธ์ของทฤษฎีกลุ่มกับโดเมนใด ๆ ที่มีการดำเนินการที่เคารพข้อกำหนดของกลุ่ม
องค์กรนี้ได้รับการพิจารณาว่าสะดวกมากโดยนักวิจัยยุคแรก ๆ ในการเขียนโปรแกรมภาษาโดยเฉพาะอย่างยิ่งผู้ที่เกี่ยวข้องกับการใช้ภาษาโปรแกรม มันมีข้อดีของการแยกวากยสัมพันธ์และความหมายและมีความเข้าใจทางคณิตศาสตร์เป็นอย่างดี
อีกเหตุผลสำหรับการนำไปใช้เป็นความกังวลกับการพัฒนาเครื่องมือเพื่อจัดการโปรแกรมไม่ว่าในสภาพแวดล้อมการพัฒนาหรือในระบบที่เป็นทางการเพื่อพิสูจน์คุณสมบัติของโปรแกรม (ซึ่งกลายเป็นปัญหาแฝดมากขึ้น)
สิ่งนี้นำไปสู่การเกิดขึ้นของแนวคิดของต้นไม้ไวยากรณ์นามธรรม (AST)สำหรับการเขียนโปรแกรมภาษาซึ่งเป็นหลักเงื่อนไขของพีชคณิตหลายเรียง (บางครั้งการกลั่นด้วยการใช้การจัดเรียงสหภาพในบางระบบ) AST เป็นไวยากรณ์การอ้างอิงสำหรับภาษาซึ่งซีแมนทิกส์สามารถกำหนดได้โดยโฮโมมอร์ฟิซึมในความหมายเชิง Denotational
ไม่เพียง แต่จะสะดวกในการศึกษาความหมายของภาษา แต่ต้นไม้มีโครงสร้างที่ดีกว่าสตริงดังนั้นจึงเป็นพื้นฐานที่ดีกว่าสำหรับการพัฒนาเครื่องมือการเขียนโปรแกรมและสภาพแวดล้อมการเขียนโปรแกรม
อนุญาตให้แยกการแยกซึ่งเป็นส่วนที่ยุ่งเหยิงเป็นข้อ จำกัด ของเทคโนโลยีการแยกวิเคราะห์บังคับให้ใช้ไวยากรณ์ที่บิดเบี้ยว นอกจากนี้ยังรวมถึงประเด็นปัญหาการนำเสนอ
อนุญาตให้มีการแสดงหลาย ๆ รูปแบบ (สตริงหรือกราฟิก) ของโปรแกรมซึ่งบางครั้งอาจสะดวก (ไม่มีเหตุผลว่าทำไมการใช้เครื่องหมายวรรคตอนแทนที่จะใช้แท็บหรือการสนทนาในรูปแบบโปรแกรมควรถูกบังคับใช้กับคน)
มันทำให้ง่ายต่อการกำหนดการตีความหลายอย่างของโปรแกรมและเรียงลำดับเพื่อวิเคราะห์การทดสอบโปรแกรมด้วยการตีความเชิงนามธรรม
สะดวกสำหรับการเขียน (กึ่ง) เครื่องมือจัดการโปรแกรมอัตโนมัติเช่นการแปลงโปรแกรมอัตโนมัติหรือการแปลระหว่างภาษา
บางครั้งสิ่งต่าง ๆ อาจมีความซับซ้อนมากขึ้นในทางปฏิบัติเนื่องจากบางรูปแบบของไวยากรณ์นามธรรมทำให้ผู้ปฏิบัติงานบางคนสามารถสร้างต้นไม้ (การแสดงออก) ที่อยู่ในประเภทต่าง ๆ (เป็นวิธีที่ดูไม่เป็นทางการ) ตัวอย่างเช่นอาจมีการเรียงลำดับสำหรับโครงสร้างวากยสัมพันธ์ที่แสดงถึงตัวแปร (เอนทิตีที่กำหนดได้) และอีกอันสำหรับนิพจน์ แต่ตัวแปรใด ๆ สามารถใช้เป็นการแสดงออกถึงการสนทนาที่เป็นเท็จ
เอกสารเบื้องต้นเกี่ยวกับเรื่องนี้สำหรับภาษาการเขียนโปรแกรมวันที่กลับไปที่อายุเจ็ดสิบกลาง แนวความคิดในเวลานั้นมีจุดประสงค์เพื่อการผลิตของการใส่ใจกับไวยากรณ์ (คำว่า "กำกับ" ถูกนำมาใช้) สภาพแวดล้อมการเขียนโปรแกรม มองหาที่ปรึกษาและเซนทอร์ในยุโรปและค้นหาโปรแกรมคอร์เนลในสหรัฐอเมริกา พวกเขาเป็นระบบสองระบบแรกที่ใช้แนวคิดดังกล่าวในทางปฏิบัติ คนอื่น ๆ อีกหลายคนถูกพัฒนาในภายหลัง
แต่ไวยากรณ์ที่เป็นนามธรรมมาก่อนระบบเหล่านี้ ภาษา Lisp (1958) มีรูปแบบนามธรรมซึ่งไม่น่าแปลกใจเพราะถูกพัฒนาขึ้นโดยนักตรรกวิทยาและเพื่อจุดประสงค์ในการสร้างโปรแกรมที่จัดการโปรแกรม (ดู ML และ LCF ... ที่มาภายหลัง) แต่เสียงกระเพื่อมไม่ได้ถูกจัดเรียง: ทุกอย่างเป็นรายการไวยากรณ์และโครงสร้างที่ละเอียดกว่านั้นขึ้นอยู่กับความหมาย สิ่งนี้ทำให้บางคนต้องพิจารณาอย่างไม่ถูกต้องว่า Lisp ไม่มีไวยากรณ์
ปรากฏในบทที่สี่ที่มีไว้สำหรับไวยากรณ์และประเภทที่มีความหมาย
แผนภูมิไวยากรณ์ตัวอย่างในหน้า 40 เกี่ยวข้องกับการเรียงลำดับในภาษา L {num str} เห็นได้ชัดว่าการเรียงลำดับเป็นหมวดหมู่ในไวยากรณ์ของภาษา
โดยเฉพาะ "บวก" มีการเรียงลำดับซึ่งเป็นหมวดหมู่ประโยคของผลลัพธ์ การเรียงลำดับของโอเปอเรเตอร์ "บวก" มีชื่อว่า "Exp" นั่นแสดงให้เห็นถึงความจริงที่ว่า syntactically การอุทธรณ์ของผู้ประกอบการ "บวก" คือการแสดงออก การภาวนาของโอเปอเรเตอร์ "บวก" สามารถเติมตำแหน่งในทรีไวยากรณ์ที่เป็นนามธรรมซึ่งอนุญาตให้แสดงออก นั่นคือสิ่งที่ชนิดของการก่อสร้าง "บวก" คือ นั่นเป็นวิธีที่มันเหมาะกับโครงสร้างของข้อความที่แสดงถึงโปรแกรม
ระบบประเภทในหน้า 41 เกี่ยวกับประเภทภาษา L {num str} ชนิดของโอเปอเรเตอร์ "บวก" เนื่องจากตัวถูกดำเนินการมีประเภท "num" คือ "num" การตัดสินนี้เป็นคำอธิบายบางส่วนของซีแมนติกส์ของโอเปอเรเตอร์ "plus" นั่นคือส่วนหนึ่งของความหมายของโอเปอเรเตอร์ "บวก" คือการรวมกันของตัวเลขสองตัวเพื่อสร้างตัวเลข ความหมายนี้แตกต่าง "บวก" จากการแสดงออกอื่น ๆ
นอกจากนี้ยังมีการเรียงลำดับชื่อ "Typ" ที่มีสองประเภทคือ "num" และ "str"
ในตอนต้นของบทที่ 1 ฮาร์เปอร์ให้คำใบ้ว่าเขาหมายถึงอะไรโดยเรียงลำดับคำว่า:
ไวยากรณ์ของภาษาระบุวิธีการที่วลีประเภท ต่างๆ(การแสดงออกคำสั่งการประกาศและอื่น ๆ )อาจถูกนำมารวมเข้ากับโปรแกรมรูปแบบ
เขากำหนดวลีคำว่าเป็นต้นไม้ไวยากรณ์นามธรรมซึ่งเขากล่าวถึง