2012-04-23 6 views
6

से कोड का अनुवाद करना मुझे पहले कहना है कि मैं यहां ऑटोमैजिकल समाधान की तलाश नहीं कर रहा हूं। मैं स्मालटाक क्योंकि मैंने देखा है कुछ बहुत ही सरल वाक्य स्वचालित रूप से अनुवाद किया जा सकता अजगर से कोड अनुवाद करना चाहते हैं, उदाहरण:पायथन से स्मॉलटाक

एक मूल्य

करने के लिए वैरिएबल नियत अजगर

i = 1 

स्मॉलटॉक

i := 1. 

पाश के लिए एक वर्ग

का एक नया उदाहरण स्मालटाक

instance := ClassName new. 

एक बनाना अजगर

instance = module.ClassName() 

अजगर

for a in [0,1,2]: 
    print (str(a)+str(a)) 

स्मालटाक

#(0 1 2) do: [: a | Transcript show: a + a; cr ] 

और इतने पर (while लूप, सशर्त, आदि)। मेरा विचार है कि एक ऐसा उपकरण है जो इस बेहद "सरल" मामलों का अनुवाद करता है, और फिर मैं हाथ से नियम प्रणाली को पूरा या पढ़ सकता हूं।

क्या आप कोई प्रोग्रामिंग अनुवाद उपकरण या लाइब्रेरी जानते हैं जो मेरी मदद कर सकता है?

यदि आपने किसी भी उपकरण के बारे में नहीं सुना है, तो आप इस अनुवाद को लागू करने के लिए किस तकनीक/पैटर्न का उपयोग करेंगे? क्या आप एक उदाहरण के लिए एक लिंक प्रदान कर सकते हैं?

धन्यवाद

+0

आपको ट्रांसकंपेलर लिखने की आवश्यकता है। विकिपीडिया सूची कम से कम दो जो पाइथन से अनुवाद करती है -> (सी, जावास्क्रिप्ट) जिसे आप आधार https://en.wikipedia.org/wiki/Source-to-source_compiler – gcb

उत्तर

1

मुझे इस तरह के किसी भी उपकरण से अवगत नहीं है, और सामान्य स्थिति में यह जटिल और/या अक्षम हो सकता है। तो आपका मार्ग आपकी अधिक सटीक आवश्यकता पर निर्भर करेगा: मौजूदा पायथन लाइब्रेरी को पोर्ट करना, इसे छोटे-छोटे से उपयोग करना, या अच्छा साफ स्मॉलटाक कोड बनाना जो कि अजगर के समान होता है।

मार्गों मैं विचार करेंगे:

  • अजगर पुस्तकालय छोड़ने के रूप में है, और ग इंटरफ़ेस
  • के माध्यम से smalltalk से यह कॉल करने में कोई तो पेटिट पार्सर में अजगर पार्सर को लागू करने:
    • लागू smalltalk जनरेटर शायद सहायता प्रदान की उपयोगकर्ता इंटरफ़ेस के माध्यम से
    • छोटे टॉक में पाइथन दुभाषिया

ध्यान दें कि जेनरेटर संस्करण को सामान्य मामलों में कुछ कठिन मुद्दों का सामना करना पड़ सकता है, उदाहरण के लिए स्मॉलटाक ने आवृत्ति चर की संख्या तय की है, जबकि पाइथन में आप तब जा सकते हैं जब आप जाते हैं। आप इसके आसपास काम कर सकते हैं, लेकिन परिणामस्वरूप छोटे-छोटे कोड शायद सुंदर नहीं हो सकते हैं।

छोटे-छोटे के अंदर अजगर को लागू करने के लिए लुकास रेंग्गी से हेल्वेतिया प्रस्तुति पर एक नज़र डालें, यह छोटे-छोटे आईडीई के अंदर अन्य भाषाओं को शामिल करने के विषय पर है।

+1

आप भी (यदि आप अपने जीपीएल लाइसेंस को ध्यान में रखते हैं) ओपनकवाक के पायथन-स्मॉलटॉक पुल का उपयोग कर सकते हैं: http://squeakingalong.wordpress.com/2011/05/04/openqwaq-python-integration/ –

+0

मुझे पता नहीं था यह, महान टिप! –

3

आप, अजगर कोड पार्स सार वाक्य रचना पेड़ कि पार्सर और उत्पादन अपने Smalltalk द्वारा उत्पन्न होता है चलने के लिए की जरूरत है। पाइथन एएसटी के बारे में Eli Bendersky और थोड़ा पुराना एक here द्वारा एक अच्छा लेख है। पायथन इस अपेक्षाकृत सीधे आगे बढ़ता है क्योंकि पाइथन मानक लाइब्रेरी दुभाषिया के आंतरिक टूलिंग का खुलासा करती है और documentation उचित रूप से व्यापक है।

0

ply पर एक नज़र डालें, जो एक लेक्स-यैक पायथन कार्यान्वयन है। मैंने इसे पाइथन बाइट कोड में कुछ अन्य भाषा का अनुवाद करने के लिए ज्यादातर पाइथन एएसटी का निर्माण करके इसका उपयोग किया है, लेकिन इसके विपरीत भी संभव होना चाहिए।

+0

के रूप में उपयोग कर सकते हैं यह एक अच्छा बिंदु है, और पाली है किट का एक प्रभावशाली टुकड़ा है, लेकिन इसका मतलब है खरोंच से एक पार्सर लिखना। मानक लाइब्रेरी से 'अस्थ' का उपयोग करना मतलब है कि ओपी सीपीथॉन पार्सर में गए काम का लाभ उठा सकता है। – snim2

+0

अच्छा बिंदु, लेकिन पाइली के अधिकांश पायथन ग्रामर के साथ एक उदाहरण कार्यान्वयन है। –

+0

धन्यवाद, मुझे यह नहीं पता था! – snim2

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