BNF قواعد النحو وشغل المشغل
-
27-09-2019 - |
سؤال
(بادئ ذي بدء ، هذا ليس HW ، لدي كل الإجابات)
لدي قواعد BNF بسيطة
<UNIT> ::= ( <CLAUSE> ) | a | b | c
<ITEM> ::= not <UNIT> | <UNIT>
<CLAUSE> ::= <CLAUSE> and <PHRASE> | <PHRASE>
<PHRASE> ::= <ITEM> | <ITEM> or <PHRASE>
and
يتم ترك المشغل ترابطًا (عودية يسارية)or
المشغل مرتبط صحيح (هذه المرة ، إنه متكرر يميني)
تعبير معين c and b or not a and ( not b or c )
, ، لماذا أكثر صواب "و" أعلى في شجرة التحليل؟
الطريق ، أرى c **and** b or not a and ( not b or c )
يجب أن يكون معظمهم أعلى في شجرة التحليل.
قدم أستاذنا هذه الإجابة:
ها هي شجرة التحليل في تدوين ملتوية.
(clause (clause (clause (phrase (item (unit 'c'))))
'and'
(phrase (item (unit 'b'))
'or'
(phrase (item 'not'
(unit 'a')))))
**'and'** // is higher in parse tree
(phrase (item (unit '('
(clause (phrase (item 'not’(unit 'b'))
'or'
(phrase (item (unit 'c')))))
')' ))))
المحلول
تبدو قواعد BNF المعطاة متسقة مع شجرة التحليل ، ومتسقة مع الادعاء بأنه "و" من المفترض أن يكونا يسارًا. إذا كنت ترغب في إنتاج "A و B و C" باستخدام هذه القواعد ، بدءًا من "جملة" ، تبدأ بهذه الطريقة:
- بند
- بند و عبارة
عند هذه النقطة ، لا يمكن أن تصبح العبارة "B و C" (بدون أقواس) لأن الجمل فقط يمكن أن تنتج "و". يجب أن تتطور العبارة إلى "C" ، ويمكن أن يصبح البند الموجود على السطر الثاني "A و B". هذا سوف يجبر أقصى اليمين "و" أن يكون أعلى في شجرة التحليل.
نظرًا لتقييم العناصر العليا في شجرة Parse في آخر مرة ، فإن هذا يتفق مع الادعاء بأن المشغل "و" ترك نقابيًا.