سؤال

أنا أعمل على برنامج التحويل البرمجي مشروع تصميم في جاوة.تحليل المفردات يتم (باستخدام jflex) وأنا أتساءل التي yacc مثل أداة سيكون أفضل(أكثر كفاءة وأسهل للاستخدام ، إلخ.) للقيام النحوية تحليل و لماذا.

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

المحلول

إذا كنت تريد تحديدا YACC مثل السلوك (الجدولية)، وهو الوحيد الذي أعرفه هو <وأ href = "http://www2.cs.tum.edu/projects/cup/" يختلط = "noreferrer" > CUP .

في العالم جافا، ويبدو أن أكثر الناس تميل نحو الترميز التكراري النموذجي مثل ANTLR أو <أ href ل = "https://javacc.java.net/" يختلط = "noreferrer"> JavaCC .

والكفاءة نادرا ما تكون سببا لاختيار مولد محلل.

نصائح أخرى

في الماضي، لقد استعملت ANLTR لكل lexer ومحلل، وزيارة JFlex يقول أنه يمكن التعامل مع ANTLR. لن أقول أن الوثائق ANTLR على الإنترنت هي أن عظيم. انتهى بي الأمر الاستثمار في "المرجع ANTLR النهائية" ، التي ساعد إلى حد كبير.

وGNU بيسون لديه واجهة جافا،

http://www.gnu.org /software/bison/manual/html_node/Java-Bison-Interface.html

ويمكنك استخدامها الذهاب توليد كود جافا.

هناك أيضا jacc.

Jacc هو أقرب إلى yacc كما يمكنك الحصول عليها ، لكن تنفيذه في النقي جافا ويولد جافا محلل.

أنها واجهات جيدا مع jFlex

http://web.cecs.pdx.edu/~mpj/jacc/

وثمة خيار آخر سيكون GOLD محلل .

وخلافا للعديد من البدائل، محلل GOLD يولد الجداول الاعراب عن قواعد اللغة ويضعها في ملف ثنائي وغير قابل للتنفيذ. كل لغة معتمدة لها بعد ذلك المحرك الذي يقرأ الجداول الثنائية ويوزع ملف المصدر.

وأنا لم تستخدم تنفيذ جافا على وجه التحديد، ولكن قد استخدمت محرك دلفي مع نتائج جيدة إلى حد ما.

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