سؤال

أنا أحاول الحصول على محلل ECMASCRIPT الأساسي ، ووجدت قواعد ANTLR كاملة ل ecmascript 3, ، والذي يبدو أنه يجمع موافق وينتج ملفات Lexer/Parser/Walker Java المناسبة.
(الجري من الداخل antlr ide plugin ل Eclipse 3.5)

ومع ذلك ، عند محاولة استخدامه بالفعل مع بعض رمز الاختبار البسيط (التالي دليل على Antlr Wiki) ، إنه معلق فقط عند محاولة إنشاء المحلل:

CharStream MyChars = new ANTLRFileStream(FileName); // FileName is valid
ES3Lexer MyLexer = new ES3Lexer(MyChars);
CommonTokenStream MyTokens = new CommonTokenStream(MyLexer);
MyTokens.setTokenSource(MyLexer);
ES3Parser MyParser = new ES3Parser( MyTokens ); // hangs here
ES3Parser.program_return MyReturn = MyParser.program();

لقد تتبعت المشكلة إلى داخل ES3Parser مُنشئ ، حيث يدعو الوظيفة proxy.handshake() - قبل هذا الخط يمكنني القيام بنجاح System.out.println("text") لكن بعد ذلك لا أحصل على شيء.

لذا ، كيف يمكنني معرفة سبب معلقها ، وإيقافها - أو حتى تجاوز هذا القسم (هل يمكنني/يجب أن أقوم بتعطيل التصحيح؟) - طالما يتيح ذلك العمل ويسمح لي بالاستمرار في القيام بأشياء مفيدة .

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

المحلول 2

لقد قمت بحل هذا عن طريق تعطيل توليد رمز التصحيح داخل المكون الإضافي antlr IDE.

الإعداد لهذا هو ضمن Windows> تفضيلات> antlr> توليد الكود.

قم بتوسيع القسم العام وقم بإلغاء تحديد خيار التصحيح:

https://www.bpsite.net/misc/eclipse-antlr-debug.png
(مصدر: bpsite.net)

نصائح أخرى

هناك خيار -Debug في AntlR يتسبب في توليد رمز إضافي مما يسمح بإجراء تصحيح عن بُعد. عندما يتوقف الكود على

dbg.Handshake();

اتصل ، إنه ينتظر اتصال الأخطاء عن بُعد. في Antlrworks ، يمكنك استخدام خيار Run -> Debug عن بُعد للاتصال به والتخطي عبر الكود.

إذا كنت لا ترغب في استخدام وظيفة تصحيح الأخطاء عن بُعد ، فقم بإزالة خيار -debug من مربع نص خيارات AntlR.

ملف -> تفضيلات -> خيارات عامة -> antlr

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