parsing - How to implement a left recursion eliminator? -


मैं इसके लिए एक एलाइमिनेटर कैसे लागू करूं?

  ए: = एबी | एसी | डी | ई;  

यह तथाकथित तत्काल बाएं पुनरावर्तन का एक उदाहरण है , और इसे इस तरह हटा दिया गया है:

  ए: = डीए '| ईए '; ए ': = ε | बीए '| सीए' ;  

मूल विचार यह है कि पहली बार ध्यान दें कि जब को पार्स करते हैं तो आप जरूरी एक D या डी या एक के बाद आप या तो समाप्त हो जाएंगे (पूंछ ε है) या जारी रहें (अगर हम एक AB या एसी निर्माण)।

वास्तविक एल्गोरिथ्म इस तरह से काम करता है:

किसी भी बाएं-पुनरावर्ती उत्पादन के लिए इस तरह: ए - & gt; ए 1 | ... | ए एसी | बी 1 | बी 2 | ... | बीएम को ए - & gt; बी 1 ए '| बी 2 ए '| ... | बीएम ए ' और उत्पादन जोड़ें ए' - & gt; Ε | ए 1 ए '| ... | एके ए '

उन्मूलन एल्गोरिदम पर अधिक जानकारी के लिए देखें (अप्रत्यक्ष बाएं रिकर्सन को खत्म करने सहित)।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -