سمات النحو
سمات النحو (بالإنجليزية: Attribute grammar) تدقيق نحوي سمة لعمليات الإنتاج من النحو الرسمي، اقتران هذه السمات بالقيم. التقييم يحدث في عقد شجرة بنية مجردة، عند اللغة التي تتم معالجتها بواسطة بعض المحلل اللغوي أو المترجم. السمات تنقسم إلى مجموعتين: تلخيص السمات والسمات الموروثة. السمات المركبة هي نتيجة للسمة قواعد التقييم، ويمكن أيضا استخدام قيم السمات الموروثة. يتم تمرير السمات الموروثة إلى أسفل من العقد الأصلي. في بعض المناهج، تستخدم سمات تجميعي لتمرير المعلومات الدلالية أعلى شجرة الظاهر، بينما تساعد السمات الموروثة تمرير المعلومات الدلالية لأسفل وعبرها. على سبيل المثال، عند بناء أداة ترجمة لغة، مثل المحول برمجي، قد تستخدم لتعيين القيم الدلالية للإنشاءات بناء الجملة. أيضا، فمن الممكن للتحقق من صحة الشيكات الدلالي المقترن التدقيق نحوي، تمثل قواعد اللغة لا صراحة تقدمها تعريف بناء الجملة. يمكن أيضا استخدام قواعد النحو سمة ترجمة شجرة بناء الجملة مباشرة في التعليمات البرمجية لبعض آلة معينة، أو إلى بعض من اللغة الوسيطة. قوة واحدة من قواعد النحو السمة أنها يمكن نقل المعلومات من أي مكان في شجرة بنية مجردة إلى أي مكان آخر، بطريقة رسمية والتي تسيطر عليها.
التاريخ
عدلقواعد النحو سمة اخترعت دونالد كانوث وبيتر Wegner في حين أن دونالد كانوث دائنا للمفهوم العام، اخترع بيتر Wegner السمات الموروثة أثناء محادثة مع نث. تتبع بعض الأفكار الجنينية الظهر لعمل ت. إدغار 'نيد' الحديد.[1][2]
الأمثلة
عدلأن القائمة التالية هي بسيطة خالية من السياق النحوي الذي يمكن وصف لغة تتكون من الضرب، وإضافة إعداد صحيحة.
Expr → Expr + Term
Expr → Term
Term → Term * Factor
Term → Factor
Factor → "(" Expr ")"
Factor → integer
يمكن استخدام النحوي السمة التالية لحساب نتيجة تعبير مكتوب في التدقيق النحوي. علما أن هذا التدقيق النحوي فقط يستخدم القيم المركبة.
Expr1 → Expr2 + Term [ Expr1.value = Expr2.value + Term.value ]
Expr → Term [ Expr.value = Term.value ]
Term1 → Term2 * Factor [ Term1.value = Term2.value * Factor.value ]
Term → Factor [ Term.value = Factor.value ]
Factor → "(" Expr ")" [ Factor.value = Expr.value ]
Factor → integer [ Factor.value = strToInt(integer.str) ]
السمات الموروثة
عدليتم تعريف سمة موروثة في عقده في شجرة التوزيع باستخدام قيم السمة في أحد الوالدين أو الأشقاء. السمات الموروثة ملائمة للتعبير عن اعتماد لغة برمجة بناء على الإطار الذي يظهر. على سبيل المثال، يمكن أن نستخدم سمة موروثة لتعقب ما إذا كان معرف يظهر على اليسار أو الجانب الأيمن من الإحالة من أجل أن تقرر ما إذا كانت هناك حاجة إلى العنوان أو قيمة المعرف. على النقيض من سمات المركبة، يمكن أن تتخذ السمات الموروثة القيم من الوالدين أو الأخوة والأخوات. كما هو الحال في إنتاج التالية.
أنواع خاصة من قواعد النحو سمة
عدل- L-attributed grammar: ويمكن تقييم السمات الموروثة في اجتياز اليمين إلى اليسار.
- LR-attributed grammar: السمات الموروثة التي يمكن تقييمها أيضا في التحليل من أسفل إلى أعلى.
- ECLR-attributed grammar: مجموعة فرعية من قواعد النحو LR حيث يمكن استخدام فئات التكافؤ لتحسين تقييم السمات الموروثة.
- S-attributed grammar: استخدام فقط تصنيعه نوع بسيط من السمة النحوي، السمات، ولكن لا السمات الموروثة.
انظر أيضا إلى
عدلالمراجع
عدل- ^ D. E. Knuth: The genesis of attribute grammars. Proceedings of the international conference on Attribute grammars and their applications (1990), LNCS, vol. 461, 1–12. نسخة محفوظة 15 ديسمبر 2019 على موقع واي باك مشين.
- ^ Main نسخة محفوظة 11 سبتمبر 2017 على موقع واي باك مشين.
روابط خارجية
عدل- Why Attribute Grammars Matter, The Monad Reader, Issue 4, July 5, 2005. (This article narrates on how the formalism of attribute grammars brings برمجة جانبية المنحى to برمجة وظيفية by helping writing catamorphisms compositionality. It refers to the Utrecht University Attribute Grammar system as the implementation used in the examples.)
- Attribute grammar in relation to هاسكل (لغة برمجة) and برمجة وظيفية.
- Semantics of context-free languages, by دونالد كانوث, is the original paper introducing attributed grammars
- Jukka Paakki: Attribute grammar paradigms—a high-level methodology in language implementation. ACM Computing Surveys 27:2 (June 1995), 196–255.