سؤال

أقوم بإنشاء لعبة في XNA وتفكر في إنشاء لغتي البرمجة النصية الخاصة بي (عقلية بسيطة للغاية أنت). أعلم أن هناك طرق أفضل للذهاب حول هذا (وأنني أعيد اختراع العجلة)، لكنني أريد تجربة التعلم أكثر من أن تكون مثمرة وسريعة.

عند مواجهة التعليمات البرمجية في وقت التشغيل، من ما أفهمه، فإن النهج المعتاد هو التحليل في رمز الجهاز أو رمز البايت أو أي شيء آخر هو في الواقع قابل للتنفيذ ثم تنفيذ ذلك، أليس كذلك؟ ولكن على سبيل المثال، عندما خرجت Chrome لأول مرة قالوا إن محرك JavaScript سريعا لأنه يجمع JavaScript إلى رمز الجهاز. هذا يعني أن المحركات الأخرى لم تكن تجميعها في رمز الجهاز.

أفضل عدم تحقيق لغة أقل، وكذلك هناك أي تقنيات حديثة معروفة لتحليل التعليمات البرمجية وتنفيذها دون تجميع إلى مستوى منخفض؟ ربما يكون هناك شيء مثل تحليل التعليمات البرمجية إلى نوع من الأشجار، المتفرعة من خلال الشجرة، ومقارنة كل رمز واستدعاء بعض الوظائف التي تتعامل مع هذا الرمز؟ (التخمين البري والطعن في الظلام)

هل كانت مفيدة؟

المحلول

أنا شخصيا لن تقول المحلل المحلل الخاص بك (تحويل المدخلات إلى الرموز الرموز) أو Lexer (التحقق من رموز الإدخال للحصول على قواعد اللغة الخاصة بك). إلقاء نظرة على antlr. لتحليل / Lexing - إنه إطار رائع ولديه شفرة مصدر كامل إذا كنت ترغب في حفره في الشجاعة منه.

لتنفيذ التعليمات البرمجية التي تحللها، أود أن أنظر إلى تشغيل جهاز ظاهري بسيط أو حتى إلقاء نظرة أفضل llvm ما هو محاولة مفتوحة المصدر (ISH) لتوحيد تنسيق رمز الجهاز الظاهري والآلات الافتراضية وتوفير ميزات لطيفة مثل Jiting (تحويل البرنامج النصي الذي تم تجميعه رمز البايت إلى التجميع).

لن تثبيطك من الخيارات الأكثر تقدما التي تقوم بها آلة مثل تنفيذ رمز الجهاز الأصلي ولكن في الاعتبار أن هذا منطقة متخصصة للغاية ويحصل على مجمع حقيقي، سريع حقيقي!

وأشار إيرلز إلى أن ردي قد يبدو أن "لا تهتم بهذا بنفسك. إعادة قراءة مشاركتي فإنها تبدو قليلا بهذه الطريقة. السبب الذي ذكرته أن Antlr و LLVM هو كلاهما لديه أكوام من التعليمات البرامجية المصدر والبرامج التعليمية، لذلك أشعر أن هذا مصدر مرجعي جيد. خذها كقاعدة ولعب

نصائح أخرى

يمكنك تجربة هذا الإطار لغات البناء (يعمل بشكل جيد مع XNA):http://www.meta-alternative.net/mbase.html.

هناك بعض البرامج التعليمية:http://www.meta-alternative.net/cal.pdf.

http://www.meta-alternative.net/pfront.pdf.

بيثون رائع مثل لغة البرمجة النصية. أود أن أوصي بإنشاء C # ملزمة ل API C واستخدام ذلك. تضمين بيثون سهل. يمكن للتطبيق الخاص بك تحديد الوظائف والأنواع / الفئات والمتغيرات داخل الوحدات النمطية التي يمكن أن يصل إليها مترجم الثعبان. يمكن للتطبيق أيضا الاتصال بوظائف في البرامج النصية Python والحصول على النتيجة. يمنحك هذان الميزات المجتمعة خطة اتصال ثنائية الاتجاه.

في الأساس، تحصل على بناء جملة بيثون والدلالات مجانا. ما ستحتاج إليه هو تطبيق API الخاص بك يكشف عن Python. يمكن أن يكون مثالا الوصول إلى وظائف منطق اللعبة وتقديم الوظائف. ستحدد البرامج النصية Python بعد ذلك الوظائف التي تدعو هذه، وستحصل تطبيق المضيف على وظائف Python (مع المعلمات) للحصول على العمل المنجز.

تحرير: يبدو أن iRonyThon يمكن أن يوفر لك المزيد من العمل. إنه تطبيق C # ل CPYTHON، ولديه API الخاص به: http://www.ironpython.net/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top