توضيح وتحسين طريقة الاستخدام من خلال الطرفية
MuhammadSawalhy opened this issue · 16 comments
يُرجى أن يتم توضيح طريقة استخدام المترجم في ملف اقرأني، كما يرجي أيضا أن يتم تحسينه من حيث:
1. الوسائط args التي يتم إرسالها
من العُرف المتبع أن يستخدم -
واحدة إذا كان الأمر عبارة عن حرف واحد اختصارا، فأرى أن يستخدم alif -h
بدلا من alif --h
> alif -h # --h بدلا من
> alif --help # طريقة أخرى
2. أن يتم إخراج نتائج البناء وإظهار الأخطاء
يجب استخدام أكواد الخروج المناسبة والتي تعطي وصفا لما حدث أثناء عملية الترجمة، فمثلا كود الخروج 0
يدل على أنه لم يحصل أخطاء، و 1
يدل أنه حصل خطأ (دون تحديد وصف الخطأ)
وها هي بعض أكواد الخروج المستخدمة كثيرا من هنا.
عندما أردت أن أترجم من خلال الطرفية حصل خطأ، فلم تظهر الملفات. لكن الخطأ لم يظهر في الطرفية.
ها هو إصدار مترجم ألف:
❯ alif --v
Alif Compiler v3.0.17 (Beta)
ها هو محتوى New_Alif_File.alif.log
.
----------- The Alif Standard Library -------------
--- TOKENS PREDEFINITION START ---
10: [#ALIF]
12: 13: 14:
--- TOKENS PREDEFINITION END ---
----------- DEBUGING START -----------
10: [#ALIF]
12: [GLOBAL-FUNCTION] [اطبع] ( [STRING الجملة])
13: {_س_ START} { std::cout << } {@} [C++ Local STRING (الجملة)] {@} { ; } {_س_ END}
14: [END GLOBAL-FUNCTION] {اطبع}
----------- DEBUGING FINISH -------------
----------- Standard Library FINISH ---------------
--- TOKENS PREDEFINITION START ---
2: [#ALIF]
4: 6: 8: 9: 11: 13: 15:
----------- DEBUGING ERROR -------------
Namespace :
Class :
Fun :
الملف : /home/ms/myp/alif/hello-world/New_Alif_File.alif
السطر : 15
الخطأ : أمر غير معروف : ' نافذة '
New_Alif-File.alif
:
#ألف
نافذة رئيسية
دالة رئيسية
عدد ن = 6 + 4
نص م = "مرحبا، ن = " + ن
رسالة (م)
نهاية دالة
نهاية نافذة
- الوسائط
التعامل مع ARG إستخدمت
Boost.Program_options
بشكل مفترض يكون --help
، فإن وجدت طريقة تغييره إلى -h
يمكنك التعديل على شيفرة
- إخراج
حاليا ألف تستخدم 0 و 1 ليعرف IDE هل تمة الترجمة أم لا
0 تمة الترجمة - IDE يمكنه تنفيذ البرنامج
1 توجد أخطاء - IDE يقرأ رسائل الأخطاء من STDOUT
إدا أمكنه التعامل مع العربية، وإلا فيقرأ ملف .log
أفضل البقاء على هدا الشكل لأن IDE هدا كل ما يحتاجه
ألف 3
في ألف 3 تخلينا عن جعل المترجم يدعم الواجهة أي نافذة
، وتحول الأمر لمكتبة WebUI، حصل هذا في تصويت جماعي عبر تلغرام، يمكنك الإنضمام إلينا في أي وقت تحب، سنحتاج خبرتك في JS لإجاد طريقة دمج WebUI مع Node.js
بالنسبة لألف ستوديو تخلينا عليه هو الآخر، وقررنا تطوير ألف ستوديو جديد مكتوب بلغة ألف كاملا !
عموما، يمكنك ستعمال ألف ستوديو للتحير فقط، لكن الترجمة فقط عبر سطر الأوامر حاليا
لتجربة ألف 3 إستخدم فقط أمثلة في مجلد examples
شكرا لك أخي على تعاونك ودعمك
هذا مثال جيد، نريد شيئا مثل --include-path
، والذي يمكن استخدامه كـ -I
:
int opt;
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("optimization", po::value<int>(&opt)->default_value(10),
"optimization level")
("include-path,I", po::value< vector<string> >(),
"include path")
("input-file", po::value< vector<string> >(), "input file")
;
$ bin/gcc/debug/options_description --help
Usage: options_description [options]
Allowed options:
--help : produce help message
--optimization arg : optimization level
-I [ --include-path ] arg : include path
--input-file arg : input file
نعم، من المفترض أن يرجع ١
سأبحث عن السبب
لا تزال مشكلة كود الخروج بصفر عند حدوث خطأ، والمتوقع أن تكون بواحد مثلا في الإصدار v3.0.20 (Beta)
شكرا على التبليغ
تم حل مشكلة كود الخروج والحمد لله، بقي بعض التحسينات على الوسائط args التي ترسل من الطرفية مثل --h
في هذه الإشكالية التي فتحتها #12، تحدثت عن تعريب واجهة السطر الأمري (و.س.أ CLI)
موجود mltrm، وtilix يدعم اعربية كذلك، وwindows terminal يدعمها
نحتاج أن نجد برنامج واجهة سطر أمري يدعم العربية، أو نصمم واحدا بأنفسنا
انا مستعد للعمل على تصميم واجهة سطر أمري يدعم العربية
لماذا لا يتم طباعة الناتج للطرفية وإعطاء خيار من خلال الأَسناد args لكي يتم كتابة الخطأ في ملف بامتداد .log مثلا، أرى أنه يوجد سَنَد --log
والذي يعمل كما هو متوقع، لكن أرى أن الطباعة بدون وجود --log
أو --log-json
أن تكون في الطرفية "STDOUT"
لماذا لا يتم طباعة الناتج للطرفية وإعطاء خيار من خلال الأَسناد args لكي يتم كتابة الخطأ في ملف بامتداد .log مثلا، أرى أنه يوجد سَنَد
--log
والذي يعمل كما هو متوقع، لكن أرى أن الطباعة بدون وجود--log
أو--log-json
أن تكون في الطرفية "STDOUT"
--debug-screen