2009-05-11 25 views

उत्तर

27

पर विचार करें:

A ::= A B 

बराबर कोड

boolean A() { 
    if (A()) { 
     return B(); 
    } 
    return false; 
} 

अनंत प्रत्यावर्तन देखना है?

16

जो कोई भी के लिए रुचि रखता है

A ::= A B | A C | D | E 

के रूप में लिखा जा सकता है:

A ::= (D | E) (B | C)* 

परिवर्तन के सामान्य रूप है: बाईं के किसी भी संख्या के बाद गैर बाईं पुनरावर्ती disjuncts में से किसी एक पहले तत्व के बिना पुनरावर्ती disjuncts।

एक्शन कोड को सुधारना एक छोटी सी चाल है लेकिन मुझे लगता है कि प्लग-एन-चुग भी हो सकता है।

+0

पहली बार मैंने यह देखा है, मैंने हमेशा एक नया गैर-टर्मिनल का उपयोग करने के लिए सलाह देखी, जिसे आम तौर पर ए ' –

+0

कहा जाता है, ठीक है कुछ बीएनएफ आधारित उपकरण() समूह को अनुमति नहीं देंगे ताकि आप नए नियम समाधान के साथ अटक जाएंगे । मैं प्रपत्र के आंशिक रूप से आंशिक हूं क्योंकि मैंने प्रस्तावित किया है क्योंकि मेरे पार्सर जेनरेटर को एक्शन ट्रांसफॉर्मेशन भी करना है, इसलिए इसे नए नियम के बिना काम करना बहुत आसान है। – BCS

+1

यह वास्तव में प्रश्न का उत्तर नहीं देता है। एक टिप्पणी के रूप में बेहतर होगा। –

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