ประเภทบันทึกที่สั้นที่สุดใน Modula-2

การบ้าน 1. ยกตัวอย่างประเภทบันทึกที่สั้นที่สุดใน Modula-2 (“สั้นที่สุด” หมายถึง จำนวนคำศัพท์น้อยที่สุด)

คำจำกัดความ EBNF ของ RECORD

RecordType = RECORD FieldListSequence END.

FieldListSequence = FieldList {“;” FieldList}.

FieldList = [IdentList ";" Type | CASE [Ident] ";" 
Qualident OF Variant  {"|" Variant} ELSE FieldListSequence]END].

สิ่งที่ฉันคิดขึ้นมาคือ...ฉันปิดแล้วหรือยัง

RecordType = RECORD, FieldList, END.

person john r    schedule 26.09.2015    source แหล่งที่มา


คำตอบ (1)


นั่นไม่ใช่ไวยากรณ์ M2 ที่ถูกกฎหมายสำหรับภาษา M2 ใดๆ

รายการฟิลด์ที่สั้นที่สุดคือการประกาศฟิลด์เดียว:

field : SomeType

ดังนั้น คำจำกัดความของประเภทเรกคอร์ดที่สั้นที่สุดคือ:

TYPE Foo = RECORD
  bar : Baz
END;

สิ่งนี้ใช้ได้กับทุกภาษา

อัปเดต:

ตามที่กล่าวไว้ในความคิดเห็นของฉันเพื่อเรียนรู้ EBNF ฉันแนะนำให้ศึกษาแผนผังทางรถไฟและเปรียบเทียบกับ EBNF นี่คือลิงก์ไปยังแผนผังไวยากรณ์ของ Modula-2 โดยเฉพาะสำหรับหนังสือ "Programming in Modula-2" ของ Wirth ฉบับที่ 4 หรือที่รู้จักในชื่อ PIM4

http://modula-2.info/m2pim/pmwiki.php/SyntaxDiagrams/PIM4NonTerminals

แผนภาพสำหรับประเภทบันทึกอยู่ที่:

http://modula-2.info/m2pim/pmwiki.php/SyntaxDiagrams/PIM4NonTerminals#recordType

person trijezdci    schedule 29.09.2015
comment
อย่างไรก็ตาม คุณควรทำการบ้านด้วยตัวเองจริงๆ ;-) บางทีคำแนะนำหากคุณมีปัญหากับ EBNF ให้วาดไดอะแกรมทางรถไฟเพื่อให้เห็นภาพไวยากรณ์ คุณสามารถค้นหาสคริปต์สำหรับการวาดไดอะแกรมไวยากรณ์ M2 บน repo bitbucket ของฉัน (ค้นหาด้วยชื่อเล่น) - person trijezdci; 29.09.2015