البيسون بناء تحذير: "الخيار -s معين ولكن القاعدة الافتراضية يمكن أن تكون مطابقة"
سؤال
وأحصل على تحذير
warning, -s option given but default rule can be matched
وإذا كنت جوجل "خيار معين ولكن القاعدة الافتراضية يمكن أن تكون مطابقة"، ستجد <لأ href = "http://westes.github.io/flex/manual/Diagnostics.html" يختلط = "نوفولو noreferrer" > الفصل دليل فليكس على تشخيص وهذا دخول في فليكس manpage القديم أ > في قسم التشخيص:
<اقتباس فقرة> والتحذير، 'الخيار -s تعطى ولكن الافتراضي
حكم يمكن أن يقابل "تعني أنه
ممكن (ربما فقط في الخصوص
بدء شرط) أن القاعدة الافتراضية
(تتطابق مع أي حرف واحد) هو
واحد فقط من شأنها أن تتطابق مع خاص
إدخال. منذ أعطيت -s
،
يفترض هذا ليس المقصود.
وليس لديها ملف بناء بلدي خيار -s
. كتبت
bison -y -d calc1.y
flex calc1.l
gcc code...
وكيف يمكنني إصلاح هذا التحذير؟
وهنا هو نسخة صغيرة من ملفي قانونا. هذا الملف يؤدي أيضا التحذير
%{
#include "y.tab.h"
%}
%option noyywrap nodefault yylineno
%%
[0-9]+ {
return INTEGER;
}
[-+()=/*{},;\n] { return *yytext; }
[ \t] /* skip whitespace */
[a-zA-Z0-9_]* { printf("lex Unknown character = '%s'", yytext); yyerror("lex Unknown character"); }
%%
المحلول
و٪ الخيار NODEFAULT ما يعادل -s
نصائح أخرى
وكان من الممكن مستعارة و"المرن" الأمر على النظام أن يكون الأمر المرن مع خيار -s. يمكن أن تحدث في أي من عدة مخطوطات بدء التشغيل.
والتحذير أقول لك أن هناك بعض المدخلات التي لا تقابلها أي من القواعد في ملف الإدخال. تحذير هناك لتحصل على التأكد من أنك قد نظرت في جميع الحالات في التعبيرات العادية.
إذا كنت حقا تريد القاعدة الافتراضية لاستخدامها، ثم إضافته إلى نهاية القواعد في ملف الإدخال. حاول إضافة قواعد
. ECHO;
\n ECHO;
تحديث: ملف الإدخال التي تقدمها يتضمن خيار NODEFAULT٪، وهو نفس تحديد "-s" على سطر الأوامر، لذلك يتم حل هذا اللغز. أيضا، لم يكن لديك ملف قاعدة ل".". هناك بعض الشخصيات التي لا تغطيها، "@" على سبيل المثال.
وأنا أيضا المشبوهة لل"-" رمز في فئة الحرف. ومن المفترض أن يكون المشغل المدى، ولكنها قد تعمل كحرف في المركز الأول لديك ذلك. انا لا اعرف. قد يكون فكرة جيدة لاستخدام "\ -". بدلا من ذلك
هل يمكن تغيير القاعدة الأخيرة إلى
. { printf("lex Unknown character = '%s'", yytext); yyerror("lex Unknown character"); }
وللتخلص من التحذير (ومنع الماسح الضوئي ناتجة عن الاصطدام).
وأيضا، هل يمكن تغيير عنوان السؤال لتكون حول المرن بدلا من البيسون؟