Inlinec - طريقة جديدة لاستخدام كود C في نصوص بايثون

مشروع inlinec تم اقتراح طريقة جديدة للتكامل المضمّن لرمز C في نصوص Python. يتم تعريف وظائف C مباشرة في نفس ملف تعليمات Python، ويتم تمييزها بواسطة مصمم الديكور "@inlinec". يتم تنفيذ البرنامج النصي التلخيصي كما هو بواسطة مترجم Python ويتم تحليله باستخدام الآلية المتوفرة في Python برامج الترميز، مما يجعل من الممكن توصيل محلل لتحويل البرنامج النصي قبل تحليله بواسطة المترجم (كقاعدة عامة، يتم استخدام وحدة برامج الترميز لتحويل ترميز النص الشفاف، ولكنها تسمح لك أيضًا بتحويل محتويات البرنامج النصي بشكل تعسفي).

يتم توصيل المحلل اللغوي كوحدة نمطية ("من inlinec import inlinec")، والتي تنفذ المعالجة الأولية وتترجم بشكل فوري تعريفات وظائف C المميزة باستخدام التعليقات التوضيحية @inlinec إلى روابط ctypes وتستبدل نص وظيفة C بـ دعوة لهذه الارتباطات. بعد هذا التحويل، يتلقى مترجم بايثون النص المصدر المحول الصحيح للبرنامج النصي، والذي يتم فيه استدعاء وظائف C باستخدام الأنواع. يتم استخدام طريقة مماثلة أيضًا في المشروع بيكسل4والذي يسمح لك بدمج أكواد HTML وPython في ملف واحد.

# الترميز: مضمن
من inlinec استيراد inlinec

@inlinec
اختبار الدفاع ():
#تضمن
اختبار باطل () {
printf("مرحبا بالعالم");
}

يتم تقديم التطوير حتى الآن كنموذج أولي تجريبي، والذي يحتوي على عيوب مثل عدم وجود دعم لتمرير المؤشرات (باستثناء السلاسل) إلى الوظيفة، والحاجة إلى التشغيل
"gcc -E" للمعالجة المسبقة للتعليمات البرمجية، وحفظ الملفات المتوسطة *.so و*.o و*.c في الدليل الحالي، وعدم تخزين النسخة المحولة مؤقتًا وإجراء مراحل تحليل غير ضرورية (تأخيرات طويلة في كل مرة يتم تشغيلها).

المصدر: opennet.ru

إضافة تعليق