2012-01-15 18 views
11

मुझे पता है कि इस विषय पर चारों ओर तैरने वाले कुछ प्रश्न हैं, लेकिन मुझे जो कुछ भी है उसके लिए उपयोगी कुछ भी ढूंढना मुश्किल था ...एक साधारण पटकथा भाषा लिखने के लिए ट्यूटोरियल या परिचय?

मुझे यह भी पता है कि यह शायद काफी काम हो रहा है पूरा हो गया है, लेकिन मैं वास्तव में गेमिंग इंजन के लिए एक साधारण पटकथा भाषा बनाना चाहता हूं ... मैं इसे सी ++ और मेरे एंड्रॉइड जावा गेम इंजन में उपयोग करना चाहता हूं ... लेकिन मुझे नहीं पता कि कहां से शुरू करना है ... मैंने कोशिश की है ऑनलाइन ट्यूटोरियल की तलाश में है, लेकिन बहुत से चीजों को बाइट कोड, आभासी मशीनों और इस तरह परिवर्तित करने की आवश्यकता है ...

मैं वास्तव में बस एक साधारण स्क्रिप्टिंग भाषा बनाना चाहता हूं जिसे इंजन से पढ़ा जा सकता है, कुछ सरल "अगर/अन्य "तर्क ... सरल कार्य जिन्हें अन्य स्क्रिप्ट से कहा जा सकता है और इसी तरह ... शायद यहां तक ​​कि एस प्रारंभिक संस्करणों के लिए इम्प्लर ... मुझे वास्तव में नहीं पता कि कहां से शुरू करना है, लेकिन मुझे पता है कि यह कुछ ऐसा है जो मुझे पढ़ना और समझना शुरू करना है।

यदि कोई मुझे सही दिशा में इंगित कर सकता है और कुछ लिंक को "गेम के लिए एक साधारण स्क्रिप्टिंग भाषा बनाना" ट्यूटोरियल बना सकता है या यहां तक ​​कि कुछ महत्वपूर्ण अवधारणाओं को भी इंगित करता है जो मुझे देखना चाहिए ... मैं ' मैं वास्तव में आभारी रहूंगा।

मैं कम से कम सी आधारित स्क्रिप्टिंग भाषा पसंद करूंगा, लेकिन मुझे लगता है कि वास्तव में इसके बारे में अधिक जानने के बाद विनिर्देश इसमें आएंगे।

कोई भी मदद देने के लिए धन्यवाद।

+3

क्या आप वाकई एक नई स्क्रिप्टिंग * भाषा * बनाना चाहते हैं? क्या आप मौजूदा गेम का उपयोग कर अपने गेम इंजन में एक स्क्रिप्टिंग * इंटरफ़ेस * प्रदान नहीं कर सकते? – Thilo

+1

मुझे पता है कि यह "सी-आधारित" नहीं है, लेकिन लुआ लिपि सीखने और लिपि में एक साधारण पर्याप्त भाषा है। – Zack

+0

@ थिलो: तकनीकी रूप से मुझे शायद यह नहीं करना है, लेकिन मुझे लगा कि यह ऐसा कुछ होगा जो बहुत उपयोगी हो सकता है बाद में मेरे एंड्रॉइड और पीसी के काम के बीच क्रॉस संगतता रखने के लिए ... लेकिन अगर मुझे एक स्क्रिप्टिंग भाषा मिल सकती है जो अब मेरे सी ++ संपादकों और मेरे एंड्रॉइड इंजन दोनों में लागू करने के लिए बहुत दर्दनाक नहीं है, तो मुझे लगता है कि मैं देखता हूं यह। – Kalisme

उत्तर

4

मैं ऑनलाइन ट्यूटोरियल की तलाश की कोशिश की है, लेकिन बहुत कुछ बाइट कोड, आभासी मशीनों और इस तरह के

हाँ करने के लिए चीजों को परिवर्तित करने की आवश्यकता है। यह वास्तव में एक मृत सरल भाषा के लिए दृष्टिकोण है। स्रोत कोड को सीधे निष्पादित करना अधिक जटिल होगा, जिस तरह से यह किया जाता है, सबसे पहले आप स्रोत कोड को पार्स करते हैं और इसे बाइट कोड में पचते हैं, फिर वर्चुअल मशीन बाइट कोड की व्याख्या करती है।

आप अपने डिजाइन के बारे में जानने के लिए मौजूदा भाषाओं को देखना चाह सकते हैं।

This tutorial फ्लिपकोड से एक साधारण भाषा बनाता है और इसमें सभी कोड शामिल हैं, इसलिए यह उपयोगी हो सकता है।

आप Lua स्रोत कोड पर भी एक नज़र डाल सकते हैं।

4

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

http://www.gamasutra.com/view/feature/1570/reflections_on_building_three_.php

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

सिंटैक्स पार्सिंग और भाषा व्याकरण परिभाषित करने के बारे में सोचने के मानक तरीके हैं। नियमित अभिव्यक्ति यहां आपका मित्र हैं। शुक्र है, सी ++ 11 में <regex> लाइब्रेरी (मूल रूप से बढ़ावा से) शामिल है।यदि आप वास्तव में गहराई से विषय में शामिल होना चाहते हैं, तो यह महत्वपूर्ण अवधारणाओं पर शुरू करने के लिए कंपाइलर्स पर एक पुस्तक लेने में मदद कर सकता है। जब मैं विश्वविद्यालय में एक कंपाइलर्स कोर्स ले रहा था, यह मेरी पाठ्यपुस्तक थी, जिसे मैंने आज तक मेरे साथ रखा है, इसलिए मैं इसकी अनुशंसा करता हूं।

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886/ref=sr_1_2?ie=UTF8&qid=1326618572&sr=8-2

एक भाषा लेखन कंप्यूटर विज्ञान में एक अद्भुत व्यायाम है। हालांकि, अगर यह वास्तविक परियोजना या उत्पाद के लिए है, तो उन लोगों की तरह जिन्होंने पहले से ही टिप्पणी की है, मेरी पेशेवर सलाह है: अगर आपको वास्तव में ऐसा नहीं करना है तो ऐसा न करें। यह एक विशाल संभावित समय निवेश है जिसे आप विचार कर रहे हैं, और आपने खुद से पूछा है: मुझे अपनी भाषा से क्या लाभ मिलेगा जो मुझे लुआ और पायथन जैसे मौजूदा उपयोग में आसान भाषाओं में नहीं मिल पा रहे हैं, और क्या उन लाभों को लागू करने के लिए अतिरिक्त समय के महीनों के लायक हैं?

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

यदि आप चाहते हैं कि फास्ट-प्रोटोटाइप गेम तर्क के लिए एक भाषा है, तो लुआ आपकी आवश्यकताओं के लिए उपयुक्त से अधिक है, और कई मौजूदा दस्तावेज, साहित्य और औजारों के साथ आता है।

3

कुछ पुराने लेख, अभी भी अच्छे पढ़ा रहे हैं अगर तुम उन्हें पा सकते हैं:

  • एम Abrash, डी Illowsky, "मिनी दुभाषिए के साथ अपने स्वयं minilanguages ​​रोल", डॉ डॉब के जर्नल 14 (9) (सितंबर 1 9 8 9) 52-72।
  • जे। बेंटले, "प्रोग्रामिंग मोती: छोटी भाषाएं", एसीएम 2 9 (1 9 86) 711-721 के संचार।
  • डी बेत्ज़, "एम्बेडेड भाषाएं", बाइट 13 # 12 (नवंबर 1 9 88) 40 9-416।
  • डी बेत्ज़, "आपकी अपनी छोटी वस्तु-उन्मुख भाषा", डॉ डॉबब की जर्नल 16 (9) (सितंबर 1 99 1) 26-33।
  • एन फ्रैंक्स, "आपके सॉफ़्टवेयर में एक एक्सटेंशन भाषा जोड़ना", डॉ डॉब के जर्नल 16 (9) (सितंबर 1 99 1) 34-43।
  • आर वाल्डेस, "छोटी भाषाएं, बड़े प्रश्न", डॉ। डॉब के जर्नल 16 (9) (सितंबर 1 99 1) 16-25।

बेत्ज़ द्वारा Bob: A Tiny Object-Oriented Language भी देखें। बीओबी के लिए नवीनतम स्रोत http://www.xlisp.org/ पर उपलब्ध हैं।

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