मेरे पास निम्न बयान हैं जो सही तरीके से पार्स करते हैं:
ifStatement: 'IF' अभिव्यक्ति 'फिर' बयान (विकल्प {लालची = सच;}: 'ELSE' कथन अवरोधित)? ; अब, मैं इसे एक एएसटी में पार्स करना चाहता हूं। इस तरह मैंने इसे किया है:
ifStatement: 'IF' ^ अभिव्यक्ति 'THEN'! बयान (विकल्प {लालची = सच;}: 'ELSE'! वक्तव्य बॉल)? ; जोड़ा गया ! और ^ , जैसा कि - & gt; बिल्डिंग निर्देश काम करने में प्रतीत नहीं हुआ। मेरा परिणाम 3 बच्चों के साथ एक एएसटी है: 1 सशर्त है, 2 और 3 कथन ब्लॉकों हैं दूसरा हिस्सा वैकल्पिक है: यदि कोई दूसरा नहीं है, तो नोड 3 अनुपलब्ध है।
समस्या यह है कि बयान ब्लॉक हमेशा खाली होते हैं यह कैसे तय किया जाए?
निम्नलिखित में मूल रूप से यह कैसे कार्यान्वित किया है I ध्यान दें कि 'IF', 'THEN', और 'ELSE' को 'टोकन' अनुभाग में घोषित किया गया है
ifStatement: यदि अभिव्यक्ति है तो ifStat = statementBlock (ELSE elseStat = statementBlock - & gt; ^ ( अगर अभिव्यक्ति $ ifStat $ elseStat) | - & gt; ^ (यदि अभिव्यक्ति $ ifStat)); [संपादित करें] या आप अधिक स्पष्ट हो सकते हैं जो कि काम करना चाहिए
ifStatement: यदि अभिव्यक्ति होती है तो ifStat = statementBlock ELSE elseStat = statementBlock - & gt; ^ (यदि अभिव्यक्ति $ यदि स्ट्रैट $ दूसरा स्थान) | यदि अभिव्यक्ति होती है तो ifStat = statementBlock - & gt; ^ (यदि अभिव्यक्ति $ ifStat);
Comments
Post a Comment