यह एक व्यावहारिक से एक "सिद्धांत रूप में" प्रश्न है। वह क्रम है जिसमें Yacc प्रोडक्शंस को कम करता है, और परिभाषित लेक्सर से नए टोकन पढ़ता है। यही कारण है, अगर मैं टोकन के सेट निम्नलिखित था:क्या Yacc में परिभाषित कमी का आदेश है?
INTEGER_BEGIN
INTEGER_VALUE
LESS_THAN
INTEGER_BEGIN
INTEGER_VALUE
Yacc, इसके सिमेंटिक भीतर,, lexer से LESS_THAN
टोकन पढ़ सकते हैं इससे पहले कि यह एक भी बात करने के लिए INTEGER BEGIN INTEGER_VALUE
कम कर देता है, जैसे प्रस्तुतियों का एक सेट दिया:
expr : expr LESS_THAN expr
| integer
integer : INTEGER_BEGIN INTEGER_VALUE
इन परिवर्तनों के नियम क्या हैं यदि इन्हें अर्थपूर्ण कार्रवाइयों के साथ परिभाषित किया गया है?
क्या यह जानने का कोई तरीका है कि यह हुआ है या नहीं? –
http://www.gnu.org/software/bison/manual/html_node/Default-Reductions.html में डिफ़ॉल्ट कटौती के अर्थशास्त्र का पूर्ण विवरण शामिल है, और जैसा कि आपने नोट किया है, लेक्सर के देरी से इनकार करने का कारण बनता है। –
बाइसन के कुछ संस्करणों में, आप यह देखने के लिए कार्रवाई में 'if (yychar == YYEMPTY) 'देख सकते हैं कि आप डिफ़ॉल्ट कमी में हैं (इसलिए कोई लुकहेड पढ़ा नहीं गया है), लेकिन यह बहुत पोर्टेबल नहीं है। –