2011-06-17 22 views
6

मैं अपने खाली समय में आयरनलुआ पर काम करता था। लेक्सिंग और पार्सिंग वर्तमान में किया जाता है। मैंने गंदे थ्रेडिंग हैक का उपयोग किए बिना .NET में लूआ कोरोटाइन को लागू करने के बाद निराशा से बाहर काम करना बंद कर दिया है। यह लूआ फ़ंक्शंस को संकलित करने के तरीके से जुड़ा हुआ है, और यह एक समस्या है जिसे मुझे संकलक को डिजाइन करते समय जल्दी हल करने की आवश्यकता है।कोरआउट कार्यान्वयन के लिए सीपीएस कंपाइलर

मैं कोरआउट कार्यान्वयन का शोध कर रहा हूं, और यह पता चला है कि निरंतरता के बारे में मेरी प्रारंभिक भावनाएं सही थीं।

चूंकि कोरआउट निर्माण, उपज और अन्य परिचालन भाषा कीवर्ड नहीं हैं, लेकिन "कोरआउट" तालिका में कार्य करते हैं, मैं स्थिर रूप से सीपीएस-शैली संकलन पर स्विच नहीं कर सकता क्योंकि कोरआउट तालिका पिछले लिपि द्वारा ओवरराइट की गई हो सकती है। जबकि मैं समझता हूं कि कोरआउट टेबल को ओवरराइट करने वाली स्क्रिप्ट एक दुर्लभ घटना है, मैं सुरक्षित पक्ष पर रहना चाहता हूं और इस मुद्दे को यथासंभव स्वच्छता से संपर्क करना चाहता हूं।

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

पहली जगह में एक कंपाइलर लिखने की स्पष्ट कठिनाई के अलावा, और इसके ऊपर सीपीएस ट्रांसफॉर्म जोड़ने के अलावा, मैं इस डिजाइन के निर्णय और इसके प्रदर्शन के प्रभाव से परेशान हूं।

मैं .NET में लुआ कोरोटाइन कार्यान्वयन के बारे में सलाह ढूंढ रहा हूं।

आपके समय के लिए धन्यवाद।

उत्तर

0

आप .NET पर स्कैला के लिए किए गए काम पर और अधिक देखना चाहते हैं। स्कैला एक कंपाइलर प्लगइन के रूप में निरंतरता का समर्थन करता है।

चेतावनी: मुझे कोई संकेत नहीं है कि निरंतर समर्थन .NET में काम करता है या वास्तव में संकलक पर काम कितना उन्नत है। The Scala Development Team

निम्नलिखित संदर्भ उपयोगी हो सकता है: व्यक्ति इसके लिए जिम्मेदार मिगुएल गार्सिया है, तो आप स्काला लैंग पर अपने संबोधन पा सकते हैं

Scala comes to .Net

The Scala Compiler Corner, for .NET and Mono fans

+0

धन्यवाद, मैं उनके स्रोत पर एक नज़र डालेगा। अपडेट करूंगी। – Raine

1

मैं परिचित नहीं हूँ लुआ सह-दिनचर्या के विवरण के साथ। लेकिन मुझे लगता है कि आप एक ही स्तर पर सह-नियमित समर्थन प्राप्त कर सकते हैं जो लूआ स्वयं ही समर्थन करता है, यह आवश्यक है कि सभी स्थानीय चर किसी रूप में ढेर पर आवंटित किए जाएं।

आपकी समस्या न केवल कोरआउट कार्यों को प्रतिस्थापित किया जा सकता है, लेकिन आपके द्वारा कॉल किए जाने वाले किसी भी लुआ फ़ंक्शन का उत्पादन हो सकता है।

आपको एसिंक सीटीपी में भी देखना चाहिए जो सी # में बहुत समान व्यवहार लागू करता है। मुख्य अंतर यह है कि आपको सभी विधियों को एसिंक बनाने की आवश्यकता है, जबकि सी # सुविधा ऑप्ट-इन है।

यदि आपका .NET एकीकरण अच्छा है (और मैं डीएलआर पर निर्माण करने के लिए अच्छा होने की उम्मीद करता हूं) तो मैं प्रदर्शन के बारे में ज्यादा चिंता नहीं करता। सी # में प्रदर्शन महत्वपूर्ण भागों को लिखना आसान है और गोंद कोड के लिए लुआ का उपयोग करना आसान है।

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