क्या किसी ने फ्लेक्स और बाइसन पर काम किया ??
मेरे पास उनका एक उदाहरण है। मैं इसे चलाता हूं लेकिन यह बिना बायसन के दिखाता है,
उदाहरण के लिए: फ्लेक्स इन .l फ़ाइल में मैंने id परिभाषित की और इसके लिए printf {"id"} डाला।
और बायसन में मैंने कुछ इस तरह से परिभाषित किया:
id_list : ID {printf("id-list::=idn");}
| id_list "," ID {printf("id-list::=<id-list>,idn");}
लेकिन जब मैं मुख्य। मुझे पता है कि मैं अच्छी तरह से समझा नहीं, अगर कुछ याद आ रही है तो कृपया मुझे कहें या मुझे कोड डालने के लिए कहें।
उत्तर:
उत्तर № 1 के लिए 1कुछ चीजें हैं जो गलत हो सकती हैं। पहला जो गलत है वह है प्रिंटफ। Printf% s गायब है इसलिए यह केवल आपके टेक्स्ट को प्रिंट करेगा। Heres कैसे मैं यह कर सकता हूँ
id_list:
ID { $$ = id_list( 0, $1); }
| id_list "," ID { $$ = id_list($1, $2); }
आपकी सी फ़ाइल में
IdList* id_list(IdList*p, ID*pp) {
//pp == yylval in this case a c-string from strdup
printf("id_list: %X %s", p, pp); //i rather set a breakpoint instead
if(p==0) p=new IdList;
p->deque.push_back(pp);
return p;
}
lex फ़ाइल में
//makes a copy bc yytext will be reused for other things
.... { yylval=strdup(yytext); return ID; }