سؤال

أرى بعض العينة الرئيسية () ل C تطفو حول، على سبيل المثال http://www.antlr.org/wiki/display/aftlr3/five+minute+introduction3antlr+3. و http://www.antlr.org/api/c/index.html.

يبدو أن الديريل هو AST. لا أعرف ما هو، و - يرجى إظهار لي - لا أريد أن أتجنب ذلك.

أعجبني أنحى فقط تعريف Lexer & Grammar (للمودم لدى الأوامر) ولديه الناتج الرئيسي () أو قطع / لصق من مكان ما.

ONS تطور طفيف هو أن معظم الأمثلة تبدو تقرأ من ملف، في حين أنني سأحصل على سلسلة من المدخلات (بالأوامر) كسلاسل، مرت كمعلمات.

هل يمكن لأي شخص أن يوجهني في رئيسي بسيط () يمكنني التكيف (وربما اقتراح HWO لتكييفه؟) الكثير لأطلبه، آسف.

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

المحلول

AST هو "شجرة بناء الجملة مجردة"، وفي أوامر لا تحتاج إلى واحدة.

في الواقع، Antlr هو مبالغة في التحليل في الأوامر. لماذا لا تحقق فقط من أجل "AT"، ثم تحليل الأوامر باليد؟ ربما تكون مجموعة الأوامر المودم بسيطة بما فيه الكفاية بحيث يكون أكثر بساطة للقيام بذلك بدلا من الحصول على Antlr الذهاب إذا لم تكن قد فعلت ذلك من قبل.

إذا كنت تقوم بتنفيذ مجموعة كاملة في مجموعة الأوامر، بما في ذلك تسلسل الهروب "+++"، فإن التوقيت هو أيضا عامل لن تتمكن من تطبيقه باستخدام Antlr بمفرده.

استجابة للتعليقات:

رؤية Antlr كأداة للحد من الأخطاء معقولة. في الإجابة على أسئلتك "هل تفضل قراءتها أو الرمز المصمم؟ وأنت تفضل الحفاظ عليها؟"، الجواب هو "ذلك يعتمد". يمكنني استخدام كل من المحللين من Antlr وترميز اليدين حسب السياق؛ هذا سياق لأني سأختار محللا مشفرة باليد. بعض الأسباب: ربما تطبيق مضمن، ومباشر نسبيا (العديد من الأوامر لا متساوية التعقيد)، بروتوكول Comms. لديك سياق مختلف ووضوح أسبابك التي تشمل "تجربة ذلك".

لذلك، للإجابة على سؤالك الآخر حول الرئيسية: نعم، يمكنك استخدام واحد على Antlr Wiki. للقراءة من قطعة من استخدام الذاكرة antlr3NewAsciiStringInPlaceStream() أو antlr3NewAsciiStringCopyStream() (حسب الاقتضاء) بدلا من antlr3AsciiFileStreamNew().

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