2009-11-15 4 views
14

मैंने पहले से ही एक स्कैनर बनाया है, अब मुझे एक पार्सर बनाना है। क्या फर्क पड़ता है?पार्सर और स्कैनर के बीच क्या अंतर है?

+2

मैंने 'फ्लेक्स' टैग निकाला और इसे अधिक सामान्य 'लेक्सिकल-एनालिसर' टैग के साथ बदल दिया क्योंकि स्टैक ओवरव्लो पर 'फ्लेक्स' टैग एडोब फ्लेक्स फ्रेमवर्क संदर्भित करता है। –

उत्तर

17

एक स्कैनर टोकन की सूची में इनपुट स्ट्रिंग (फ़ाइल कहें) को बदल देता है। ये टोकन पहचानकर्ताओं, कोष्ठक, ऑपरेटरों इत्यादि जैसी चीजों का प्रतिनिधित्व करते हैं

एक पार्सर टोकन की इस सूची को ट्री-जैसी ऑब्जेक्ट में परिवर्तित करता है यह दर्शाता है कि कैसे टोकन एक समेकित पूरे (कभी-कभी वाक्य के रूप में संदर्भित) बनाने के लिए फिट होते हैं।

प्रोग्रामिंग भाषा पार्सर्स के संदर्भ में, आउटपुट को आमतौर पर एक सार सिंटेक्स ट्री (एएसटी) के रूप में जाना जाता है। एएसटी में प्रत्येक नोड भाषा के एक अलग निर्माण का प्रतिनिधित्व करता है, उदाहरण के लिए एक आईएफ कथन 2 या 3 उप नोड्स, एक कंडीशन नोड, एक फिर नोड और संभावित रूप से एक ईएलएसई नोड के साथ एक नोड होगा।

एक पार्सर नोड्स को स्ट्रक्चरल समेकन से परे किसी भी अर्थ नहीं देता है। करने के लिए अगली बात इस संरचना से अर्थ निकालना है (कभी-कभी प्रासंगिक विश्लेषण भी कहा जाता है)।

2

पार्सिंग (सामान्य अर्थ में) प्रतीकों (वर्ण, अंक, बाएं पैर, आदि) को अपने व्याकरण के वाक्यों में बदलने के बारे में है।

शब्दावली विश्लेषक ("लेक्सर") स्रोत कोड फ़ाइल से टोकन में व्यक्तिगत प्रतीकों को पार करता है। वहां से, "पार्सर" उचित रूप से उन पूरे टोकन को आपके व्याकरण के वाक्यों में बदल देता है।

एक और तरीका रखो, लेक्सर प्रतीकों को टोकन में जोड़ता है, और पार्सर वाक्य बनाने के लिए टोकन को जोड़ता है।

संबंधित मुद्दे