Netbeans و EOF
سؤال
Java ، Antlr و Netbeans Newbie هنا.
لقد قمت بتثبيت JDK و NetBeans. لقد بدأت مشروعًا جديدًا على NetBeans 6.8 وقد أضفت Antlr-3.2.jar كمكتبة. قمت أيضًا بإنشاء فئة Lexer و Larser باستخدام Antlrworks. تتم تسمية هذه الفئات exprparser.java و exprlexer.java. لقد قمت بنسخها إلى دليل يدعى Path-to-Netbeans-Project/SRC/Parsers.
لدي ملف رئيسي:
package javaapplication2; import org.antlr.runtime.*; import parsers.*; public class Main { public static void main(String[] args) throws Exception{ ANTLRInputStream input = new ANTLRInputStream(System.in); ExprLexer lexer = new ExprLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ExprParser parser = new ExprParser(tokens); parser.prog(); } }
التطبيق يبني بشكل جيد. يقول الكتاب الذي أقرأه إنه يجب علي تشغيل البرنامج وأكتب بعض الأشياء ثم اضغط على CTRL+Z (أنا على Windows) لإرسال EOF إلى وحدة التحكم. المشكلة هي أنه لا شيء يحدث عندما أضغط على Ctrl+Z في وحدة التحكم NetBeans. عندما أركض من سطر الأوامر ، يعمل Ctrl+Z بشكل جيد.
ربما تكون هذه هي الكثير من المعلومات ، لكن لا يمكنني معرفة ذلك. آسف. ربما ليست فكرة جيدة لتعلم 3 تقنيات جديدة في وقت واحد.
المحلول
بدلاً من:
ANTLRInputStream input = new ANTLRInputStream(System.in);
يمكنك القيام فقط:
ANTLRStringStream input = new ANTLRStringStream(args[0]);
أين args[0]
هي المعلمة سطر الأوامر الأولى.
أو فقط:
ANTLRStringStream input = new ANTLRStringStream("your source here");