سؤال

كنت أستمتع باستخدام الفناء كثيرا:

http://www.ootl.org/yard/

http://code.google.com/p/yardparser/

http://www.codeproject.com/kb/recipes/yard-tokenizer.aspx.

كنت قادرا على بناء آلة حاسبة وظيفية بالكامل. أقوم بتقييم الفناء للقيام PHP Parser. يرجى التكرم تقديم المشورة بشأن القيود المولدة Grammar & Peger. شكراً جزيلاً!

هل كانت مفيدة؟

المحلول

أعتقد أن "المشكلة" الكبيرة "مع الأوتاد هي أنهم لا يناسبون التصنيف الطبيعي للناسون لأنهم يعملون بطريقة مختلفة بشكل أساسي. النحو العادي "للخلف" بمعنى أنهم يصفون جميع الجمل المحتملة (البرامج) التي يمكن إنشاؤها. وصف الأوتاد كيفية تحليل - أنها تأتي في مشكلة من الطرف الآخر.

في رأيي، هذه طريقة طبيعية أخرى للتفكير في المشكلة، وبالتأكيد من أجل أي محيط مكتوب يدوي (النسب المتراكم) لن أفعل أي شيء آخر.

نصائح أخرى

الحد الرئيسي من قواعد النواة الدوغاء هو أنهم لا يتعاملون مع الغموض على الإطلاق.

بالتأكيد، هذه هي أيضا قوتها منذ التعامل مع الغموض هي واحدة من أكثر الأجزاء ذات الإحباط باستخدام أداة CFG (CONTOT FREE FROUMAR).

مع أوتاد تتعامل مع الغموض بشكل صريح عن طريق طلب القاعدة التي تريد مطابقتها قبل قاعدة أخرى من شأنها أن تتطابق بشكل غامض ولكنك لا تريد ذلك.

المشكلة هي أنك لا تعرف دائما عن بعض أو حتى أي من الغموض في لغة أو مولدات قواعد النحوية، وعلى الأقل التي حاولت، لا تحلل القواعد الغموض لمساعدتك في العثور عليها لهم ثم تصميم وطلب قواعدك للتعامل معهم بالطريقة الصحيحة.

محلل CFG Generators مثل YACC و Bison تحليل قواعد اللغة الخاصة بك والإبلاغ عن جميع الغموض. لسوء الحظ، فإنهم غالبا ما يبلغون عنها بطريقة خفية جميلة يمكن أن يكون من الصعب فهمها. وبالطبع غالبا ما يكون من الصعب إصلاح القواعد للتعامل معها. ولكن على الأقل سوف تكون على علم بأنها موجودة.

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

مع قواعد النحوية CFG، أجبرت على التعامل مع الغموض أثناء التنمية، لكن لن تكون سهلة.


في هذا الحدث، لا أتطلع، إليك مناقشة يبلغ من العمر ست سنوات من قبل Joshua Haberman على لامدا في نهاية المطاف بلوق لغات البرمجة: الأوتاد وتحليل Praprat ليست هي الحل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top