2008-10-06 3 views
30

मुझे जावास्क्रिप्ट कनवर्टर के लिए एक अच्छा लुआ खोजने की जरूरत है; luaforge.org पर lua2js पुराना है (3 या उससे अधिक साल पुराना है और ऐसा लगता है कि यह लुआ 5.1 पर काम नहीं करता है) और मुझे अभी तक Google पर कुछ भी नहीं मिला है।क्या जावास्क्रिप्ट कन्वर्टर्स या दुभाषियों के लिए कहीं हालिया लुआ है?

क्या किसी के पास किसी अन्य कनवर्टर्स के साथ कोई अनुभव है? इसे लुआ 5.1 पर काम करना चाहिए और अधिमानतः .NET आधारित होना चाहिए, लेकिन .NET एक आवश्यकता नहीं है। एक जावास्क्रिप्ट लुआ दुभाषिया भी काम करेगा।

उत्तर

8

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

दुर्भाग्य से, ऐसे कई महत्वपूर्ण अंतर हैं जो इतने स्पष्ट नहीं हैं। इसे काम करने के लिए या तो लुआ के बाइटकोड के बजाय जेएस को लक्षित करने वाला एक पूर्ण उड़ा हुआ कंपाइलर या जावास्क्रिप्ट में लुआ वीएम को फिर से लिखना आवश्यक है।

मुझे लुआ 2js के मूल लक्ष्यों को नहीं पता; लेकिन अगर यह केवल सीमित 'अनुवादक' था, तो अनुवाद करने के उद्देश्य से लुआ कोड लिखना लुआ के बारे में अच्छी चीजों के अधिकांश (सभी?) से इंकार करेगा। उदाहरण के लिए, मुझे नहीं लगता कि आप एक फ़ंक्शन का उपयोग टेबल कुंजी के रूप में कर सकते हैं, क्योंकि जावास्क्रिप्ट में कुंजी केवल तार हैं (और संख्याएं? मुझे यकीन नहीं है)।

.NET विकल्प अधिक उचित है, यह मौजूदा लूआ बाइटकोड के बजाय सीएलआर बाइटकोड को उत्सर्जित करने के लिए मौजूदा कंपाइलर को बदल सकता है। यहां तक ​​कि यदि सीएलआर अन्य प्रकार की भाषाओं के लिए डिज़ाइन और अनुकूलित किया गया है, तो यह निश्चित रूप से बहुत अच्छी तरह से चलाने के लिए पर्याप्त सामान्य है। मुख्य बाधा पुस्तकालयों की उपलब्धता होगी।

एक और विकल्प जो मैंने अभी पाया है this paper रॉबर्टो इरसुल्स्स्की और फैबियो मेस्करेनहास द्वारा, जहां वे सीएलआर बाइटकोड में LuaVM बाइटकोड का अनुवाद करने का पता लगाते हैं।

अकादमिक कागजात पर सामान्य रूप से, इस तारीख के बारे में कोई संकेत नहीं है जब लिखा गया था, इसलिए मुझे नहीं पता कि यह नया और क्रांतिकारी या पुराना और भूल गया है।

+0

मुझे आश्चर्य है कि लोगों का असली लक्ष्य क्या है? वे लुआ को जानते हैं, और जावास्क्रिप्ट सीखने के बिना जावास्क्रिप्ट लिखना चाहते हैं? उनके पास लुआ में एक बड़ा आवेदन लिखा गया है, और इसे कम से कम काम के साथ वेबपैप बनना चाहते हैं? इनमें से कोई भी मेरे लिए बहुत संभावना नहीं है – davr

+0

http://www.computerworld.com.au/index.php/id;1028768484 पर साक्षात्कार यह Lua.NET की तरह एक ध्वनि और चल रही परियोजना है। –

+0

ग्रीटिंग्स, कोई जावास्क्रिप्ट में एक टेबल कुंजी के रूप में फ़ंक्शन का उपयोग कर सकता है। आपकी राय सूचित नहीं लगती है। – tomdemuyt

0

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

0

ऐसा करने का एक तरीका LuaSub का उपयोग कर और लुआ आउटपुट के बजाय जावास्क्रिप्ट उत्पन्न कर सकता है। यह उचित प्रयास के साथ किया जा सकता है (वर्तमान में लुआसब ऐसा नहीं करता है)।

स्थान जहां जेएस लुआ की आवश्यकताओं के लिए झुक नहीं सकता है संकलन समय पर खोजा जा सकता है, और एक त्रुटि का कारण बन सकता है।

मैं भविष्य में बहुत सारे जेएस + एसवीजी करने जा रहा हूं और यदि जेएस पक्ष सिरदर्द निकलता है तो यह कोशिश करने की बात हो सकती है। अगर कोई और जाना चाहता है, तो कृपया ऐसा करें। LuaSub स्रोत आपके लिए है।

मूल रूप से, लुआसब को लुआ 5.1 के लिए सिंटैक्स विस्तारक के रूप में तैयार किया गया था, जो मानक लुआ के साथ संगतता को ब्रेक किए बिना आसानी से उपयोग अवधारणाओं (एसए वृद्धि, प्रकार की जांच) पेश करने के लिए तैयार किया गया था या इसे पैच करने की आवश्यकता थी। यह MetaLua के समान है (जो अधिक आम हो गया है, ऐसा लगता है)।

4

Emscripten में जावास्क्रिप्ट में परिवर्तित लुआ दुभाषिया शामिल है। आप try it in your browser कर सकते हैं।हालांकि आकार 1.5 एमबी है।

0

मैंने ईसीएमएस्क्रिप्ट स्थिर संकलक के लिए आंशिक रूप से पूर्ण लुआ लिखा है।

https://github.com/mherkender/lua2js-experiment

यह अपनी जरूरतों को पूरा नहीं हो सकता है, इस परियोजना के रूप में कई प्रमुख विशेषताएं याद आ रही है और मैं इसे पूरा करने के लिए भागने नहीं कर रहा हूँ, क्योंकि यह एक अंत में मृत्यु है। विवरण के लिए README में और पढ़ें।

इंटरनेट के चारों ओर देखी गई कुछ चिंताओं के बावजूद, केवल कुछ लुआ-विशिष्ट विशेषताएं (जैसे * fenv फ़ंक्शंस, या अधिकांश डीबग लाइब्रेरी) हैं जो जावास्क्रिप्ट वास्तव में समर्थन नहीं कर सकता है। अन्य, फ़ाइल लाइब्रेरी की तरह, वीएम की सुविधाओं तक सीमित हैं।

मैं भी व्यक्तिगत रूप से लुआ + Emscripten विकल्प की कोशिश की, और जब तक यह प्रभावशाली है, यह भी बहुत धीमी है।

4

एलजेएस में जावास्क्रिप्ट में एक लुआ वीएम का कामकाजी डेमो है। स्रोत कोड को लुआ में लिखे गए लुआ दुभाषिया का उपयोग करके ब्राउज़र में भी संकलित किया जा सकता है।

https://github.com/humbletim/ljs

9

एक नई चुनौती प्रकट होता है: Lua.js https://github.com/mherkender/lua.js

अपनी परिपक्वता साबित कुछ कमाल की क़ौम के लिए, https://github.com/ghoulsblade/love-webplayer

Lua.js लुआ कोड सीधे परिवर्तित एकमा स्क्रिप्ट के लिए कर काम करता है (सहित देखना जावास्क्रिप्ट, एक्शनस्क्रिप्ट), जो इसे समाधानों पर एक महत्वपूर्ण गति लाभ प्रदान करता है जो जावास्क्रिप्ट में लुआ वीएम को कार्यान्वित करने का प्रयास करता है।

+0

@Akavel ने कुछ जानकारी जोड़ने के लिए इस उत्तर को संपादित करने का प्रयास किया। संपादन अनुमोदन प्रक्रिया में विफल रहा, लेकिन मुझे लगता है कि यह फिर भी उपयोगी है। मैं बोली: \t "अपनी परिपक्वता साबित कुछ कमाल की क़ौम के लिए देखें: https://github.com/ghoulsblade/love-webplayer Lua.js (सीधे लुआ कोड परिवर्तित एकमा स्क्रिप्ट के लिए कर काम करता है जावास्क्रिप्ट, एक्शनस्क्रिप्ट सहित), जो इसे उन समाधानों पर एक महत्वपूर्ण गति लाभ प्रदान करता है जो जावास्क्रिप्ट में लुआ वीएम को कार्यान्वित करने का प्रयास करते हैं। " – Breton

+0

मुझे लगा कि आप शायद इसके बारे में भूल गए हैं, इसलिए मुझे आशा है कि आप वापस आएं और – SheetJS

2

मैं इस कार्यान्वयन https://github.com/mherkender/lua.js कि पिछले एक जवाब में उल्लेख किया गया था का उपयोग कर रहा है। यह या तो ऑफलाइन और लोड-टाइम पार्सिंग करता है और मुझे इसका उपयोग करना बहुत आसान लगता है।

मेरी लुआ स्क्रिप्ट सी-फ़ंक्शंस के माध्यम से कॉल कर रही थीं, और सी कोड को जावास्क्रिप्ट में परिवर्तित कर रहा था और इसे lua.js के साथ जोड़कर काफी सरल रहा है।

2

मेरे काम को देखने के लिए http://luajs.org पर जाएं।

साइट मेनू पर डेमो और बेंचमार्क हैं।

संपीड़न से पहले केवल 35.5K और संपीड़न के बाद 12.2K है। यह सीधे जावास्क्रिप्ट ऑब्जेक्ट्स/सरणी तक पहुंच सकता है। यह लगभग हर दिन अद्यतन किया जाता है।

यह lua.vm.js. से तेज़ है। (मेटाटेबल कार्यान्वयन के कारण इतना तेज़ नहीं है), और मैं इसे अनुकूलित करना जारी रखता हूं।

+0

अपडेट करें luajs.org का लिंक अब काम नहीं करता है। –

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