سمات النحو

**سمات النحو**  تدقيق نحوي سمة لعمليات الإنتاج من **النحو الرسمي**، اقتران هذه السمات بالقيم. التقييم يحدث في عقد شجرة بنية مجردة، عند اللغة التي تتم معالجتها بواسطة بعض المحلل اللغوي أو المترجم. السمات تنقسم إلى مجموعتين: تلخيص السمات والسمات الموروثة. السمات المركبة هي نتيجة للسمة قواعد التقييم، ويمكن أيضا استخدام قيم السمات الموروثة. يتم تمرير السمات الموروثة إلى أسفل من العقد الأصلي. في بعض المناهج، تستخدم سمات تجميعي لتمرير المعلومات الدلالية أعلى شجرة الظاهر، بينما تساعد السمات الموروثة تمرير المعلومات الدلالية لأسفل وعبرها. على سبيل المثال، عند بناء أداة ترجمة لغة، مثل المحول برمجي، قد تستخدم لتعيين القيم الدلالية للإنشاءات بناء الجملة. أيضا، فمن الممكن للتحقق من صحة الشيكات الدلالي المقترن التدقيق نحوي، تمثل قواعد اللغة لا صراحة تقدمها تعريف بناء الجملة. يمكن أيضا استخدام قواعد النحو سمة ترجمة شجرة بناء الجملة مباشرة في التعليمات البرمجية لبعض آلة معينة، أو إلى بعض من اللغة الوسيطة. قوة واحدة من قواعد النحو السمة أنها يمكن نقل المعلومات من أي مكان في شجرة بنية مجردة إلى أي مكان آخر، بطريقة رسمية والتي تسيطر عليها.

## التاريخ
قواعد النحو سمة اخترعت دونالد كانوث وبيتر Wegner في حين أن دونالد كانوث دائنا للمفهوم العام، اخترع بيتر Wegner السمات الموروثة أثناء محادثة مع نث. تتبع بعض الأفكار الجنينية الظهر لعمل ت. إدغار 'نيد' الحديد.
## الأمثلة

أن القائمة التالية هي بسيطة خالية من السياق النحوي الذي يمكن وصف لغة تتكون من الضرب، وإضافة إعداد صحيحة.
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: استخدام فقط تصنيعه نوع بسيط من السمة النحوي، السمات، ولكن لا السمات الموروثة.

## انظر أيضا إلى
 
* Affix grammar
* Van Wijngaarden grammar
* Syntax-directed translation
## المراجع

## روابط خارجية
* 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 برمجة وظيفية.
* *[https://www.csee.umbc.edu/courses/331/fall16/01/resources/papers/Knuth67AG.pdf 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.

تصنيف:تجزئة
تصنيف:لغات شكلية
تصنيف:بناء المصرفات