इस उत्तर के बाकी हिस्सों को पढ़ने से पहले, कृपया गो टू स्टेटमेंट को ध्यान में रखते हुए हानिकारक पढ़ें । यदि आप इसे पूर्ण रूप से नहीं पढ़ना चाहते हैं, तो यहां मैं मुख्य बिंदु पर विचार करूंगा:
स्टेटमेंट में जाने के बेलगाम उपयोग का एक तात्कालिक परिणाम यह है कि निर्देशांक का एक सार्थक सेट ढूंढना बहुत कठिन हो जाता है जिसमें प्रक्रिया की प्रगति का वर्णन करना है।
या रीफ़्रेज़ करने के लिए, समस्या gotoयह है कि प्रोग्राम कोड के एक ब्लॉक के बीच में आ सकता है, प्रोग्रामर को उस बिंदु पर प्रोग्राम स्टेट को समझने के बिना। मानक ब्लॉक-ओरिएंटेड कंस्ट्रक्शन को स्पष्ट रूप से स्टेट ट्रांजेक्शन के लिए डिज़ाइन किया गया है, एक लेबल breakका उद्देश्य प्रोग्राम को एक विशिष्ट ज्ञात स्थिति (लेबल वाले ब्लॉक से बाहर) तक ले जाना है।
एक वास्तविक विश्व अनिवार्यता कार्यक्रम में, राज्य स्पष्ट रूप से ब्लॉक सीमाओं से परिसीमित नहीं है, इसलिए यह संदिग्ध है कि क्या लेबल breakएक अच्छा विचार है। यदि ब्लॉक ब्लॉक के बाहर से दिखाई देने वाली स्थिति को बदलता है, और ब्लॉक से बाहर निकलने के लिए कई बिंदु हैं, तो एक लेबल breakआदिम के बराबर है goto। एकमात्र अंतर यह है कि अनिश्चित स्थिति वाले ब्लॉक के बीच में उतरने की संभावना के बजाय, आप अनिश्चित स्थिति वाले एक नए ब्लॉक की शुरुआत करते हैं।
इसलिए, सामान्य तौर पर, मैं एक लेबल breakको खतरनाक मानूंगा। मेरी राय में यह एक संकेत है कि ब्लॉक को एक फ़ंक्शन में परिवर्तित किया जाना चाहिए, जिसमें सीमित दायरे तक पहुंच होगी।
हालांकि, यह उदाहरण कोड स्पष्ट रूप से एक पार्सर जनरेटर का उत्पाद था (ओपी ने टिप्पणी की कि यह एक्सरेसेस सोर्स कोड था)। और पार्सर जनरेटर (या सामान्य रूप में कोड जनरेटर) अक्सर उत्पन्न कोड के साथ स्वतंत्रता लेते हैं, क्योंकि उन्हें राज्य का सही ज्ञान है और मनुष्यों को इसे समझने की आवश्यकता नहीं है।
label913परिभाषित किया गया है?