मुझे पुरानी आत्म-कल्पना वाली स्क्रिप्टिंग भाषा में विरासत कोड का एक बड़ा समूह मिला है जिसे हम जावास्क्रिप्ट में संकलित/अनुवाद करते हैं।पुन: लिखने के लिए एल्गोरिदम संशोधित गोटो अर्थशास्त्र
उस भाषा में एक सशर्त कूद है, जो एक लेबल पर कूद रहा है। आम गोटो स्टेटमेंट में अंतर यह है कि कोई पिछड़ा कूद संभव नहीं है। अगर उस भाषा में बयान और न ही लूप हो तो कोई घोंसला नहीं है।
जैसा कि जावा जावास्क्रिप्ट में मौजूद नहीं है, मैं एक एल्गोरिदम खोज रहा हूं जो goto mylabel
और mylabel:
को अर्थात् समकक्ष संरचना में परिवर्तित करता है।
मैंने ifs
का उपयोग करने के बारे में सोचा लेकिन गोटो लेबल के मनमाने ढंग से घोंसले के कारण यह मामूली नहीं पाया।
उदाहरण:
if cond1 goto a
do something1
if cond2 goto b
do something2
a:
do something3
if cond3 goto c
do something4
c:
do something5
b:
फिर से लिखा जा सकता है के रूप में:
lbl_b=false;
lbl_c=false;
lbl_a = cond1;
if (!cond1) {
do something1;
lbl_b = cond2;
if (!lbl_b) {
do something2;
}
}
if (!lbl_b) {
do something3;
lbl_c = cond3;
if (!lbl_c) {
do something4;
}
do something5;
}
हालांकि, मैं नहीं है कि से एक सामान्य एल्गोरिथ्म प्राप्त करने में सक्षम था।
सामान्य गोटो हटाने का समाधान यहां दिए गए "टमिंग कंट्रोल फ्लो" पेपर में प्रदान किया गया है: http://stackoverflow.com/questions/14061856/automated-goto-removal-algorithm –