मैंने लगभग हर सामग्री ऑनलाइन खोज की है। लेकिन मैं अभी भी उलझन में हूं क्यों लेक्सर यिलवल की पहचान नहीं कर सकता है।येलल फ्लेक्स और बाइसन के साथ अपरिभाषित
यहाँ मामला है: मैं node.h
में एडीटी के एक झुंड में परिभाषित किया गया है और उन्हें node.c
में एहसास है, मेरा उद्देश्य एक एएसटी उत्पन्न करने के लिए के बाद इन संरचनाओं ठीक से जमा हो जाती है है। लेकिन मैं बाइसन फाइल से फंस गया हूँ।
पहले, मैं union YYSTYPE {...};
और typedef union YYSTYPE YYSTYPE;
को %union
बदलने के लिए, मैं नहीं कारण है कि मैं ऐसा करने की जरूरत है, कुछ अन्य फ़ाइलों को ऑनलाइन पोस्ट %uinion
साथ अच्छी तरह से काम करने लगता है है।
फिर, मैं yylval
चीजों से चिपक गया हूं। मैंने bison -d
चीजें की हैं, और इसे पहले ही parser.c
में चेक किया है (मैंने बाइसन आउटपुट निर्दिष्ट किया है), इसलिए मुझे लगता है कि extern YYSTYPE yylval;
काम करना चाहिए। लेकिन ऐसा नहीं है। तो मुझे आश्चर्य है कि यिलवल अविकसित समस्या को हल करने का कोई और तरीका है या नहीं।
मैं केवल YYSTYPE
struct, int
और char *
के दो प्रकार का उपयोग करें, मैं एएसटी के लिए संघ YYSYTPE
और struct अलग कर सकते हैं? इसका मतलब है, nonterminals कोई संबंधित प्रकार नहीं होगा। क्या आपके पास कोई अन्य विचार है ??
मैं अभी भी आश्चर्य है कि तुम क्या मतलब है "एएसटी के लिए संघ' YYSTYPE' और struct अलग "है, और मैं यह आवश्यक नहीं लगता। बाइसन में '% यूनियन' और '% टाइप' का उपयोग करते समय आपको समस्याएं मिली हैं? – neuront
@ यूरोंट हां, मैं आपसे सहमत हूं। हमें बाइसन में YYSTYPE को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं है। लेकिन बात यह है कि मैं ऐसा करने के बिना इसे प्राप्त नहीं कर सकता।दूसरे शब्दों में, हालांकि '% संघ' और'% संघ YYSTYPE' उसी तरह काम करता है, हालांकि, मेरे मामले में, मुझे बाद वाले को चुनना होगा। मुझे नहीं पता क्यों? '% संघ' और'% प्रकार' के लिए, मैं उनके बीच संबंधों को जानता हूं। मैं बस 'YYSTYPE अपरिभाषित' के साथ त्रुटि को हल करने के बारे में जानता हूं। जब मैंने ऑनलाइन खोज की, तो मुझे यह एक आम समस्या मिली। – chenrui