compiler icon indicating copy to clipboard operation
compiler copied to clipboard

توضيح وتحسين طريقة الاستخدام من خلال الطرفية

Open MuhammadSawalhy opened this issue 3 years ago • 16 comments

يُرجى أن يتم توضيح طريقة استخدام المترجم في ملف اقرأني، كما يرجي أيضا أن يتم تحسينه من حيث:

1. الوسائط args التي يتم إرسالها

من العُرف المتبع أن يستخدم - واحدة إذا كان الأمر عبارة عن حرف واحد اختصارا، فأرى أن يستخدم alif -h بدلا من alif --h

> alif -h # --h بدلا من
> alif --help # طريقة أخرى

2. أن يتم إخراج نتائج البناء وإظهار الأخطاء

يجب استخدام أكواد الخروج المناسبة والتي تعطي وصفا لما حدث أثناء عملية الترجمة، فمثلا كود الخروج 0 يدل على أنه لم يحصل أخطاء، و 1 يدل أنه حصل خطأ (دون تحديد وصف الخطأ)

وها هي بعض أكواد الخروج المستخدمة كثيرا من هنا.

image

عندما أردت أن أترجم من خلال الطرفية حصل خطأ، فلم تظهر الملفات. لكن الخطأ لم يظهر في الطرفية.

render1615733357038

ها هو إصدار مترجم ألف:

❯ 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

 الخطأ		: أمر غير معروف : ' نافذة ' 

MuhammadSawalhy avatar Mar 14 '21 14:03 MuhammadSawalhy

New_Alif-File.alif:


#ألف

نافذة رئيسية 

	دالة رئيسية 

		عدد ن = 6 + 4
		نص م = "مرحبا، ن = " + ن

		رسالة (م)

	نهاية دالة 

نهاية نافذة 

MuhammadSawalhy avatar Mar 14 '21 15:03 MuhammadSawalhy

  1. الوسائط

التعامل مع ARG إستخدمت Boost.Program_options بشكل مفترض يكون --help، فإن وجدت طريقة تغييره إلى -h يمكنك التعديل على شيفرة

  1. إخراج

حاليا ألف تستخدم 0 و 1 ليعرف IDE هل تمة الترجمة أم لا 0 تمة الترجمة - IDE يمكنه تنفيذ البرنامج 1 توجد أخطاء - IDE يقرأ رسائل الأخطاء من STDOUT إدا أمكنه التعامل مع العربية، وإلا فيقرأ ملف .log أفضل البقاء على هدا الشكل لأن IDE هدا كل ما يحتاجه

ألف 3

في ألف 3 تخلينا عن جعل المترجم يدعم الواجهة أي نافذة، وتحول الأمر لمكتبة WebUI، حصل هذا في تصويت جماعي عبر تلغرام، يمكنك الإنضمام إلينا في أي وقت تحب، سنحتاج خبرتك في JS لإجاد طريقة دمج WebUI مع Node.js

بالنسبة لألف ستوديو تخلينا عليه هو الآخر، وقررنا تطوير ألف ستوديو جديد مكتوب بلغة ألف كاملا ! عموما، يمكنك ستعمال ألف ستوديو للتحير فقط، لكن الترجمة فقط عبر سطر الأوامر حاليا لتجربة ألف 3 إستخدم فقط أمثلة في مجلد examples

شكرا لك أخي على تعاونك ودعمك

hassandraga avatar Mar 14 '21 17:03 hassandraga

أحب أن أضيف أن ستعمل ملف .log لكتابة رسائل الأخطاء راجع لسبب أن ليس جميع الأنظمة (قديمة) تدعم العربية في stdout أي unicode

hassandraga avatar Mar 14 '21 17:03 hassandraga

هذا مثال جيد، نريد شيئا مثل --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

MuhammadSawalhy avatar Mar 14 '21 18:03 MuhammadSawalhy

هنا تعمدت حدوث الخطأ ولكنه أعطاني كود الخرج 0، من المفترض أن يرجع 1 مثلا:

image

محتوى ملف الملف المترجم:

#ألف

دالة
	اطبع("Salam!" + سطر + "مرحبا!")
نهاية دالة

MuhammadSawalhy avatar Mar 14 '21 18:03 MuhammadSawalhy

نعم، من المفترض أن يرجع ١ سأبحث عن السبب

hassandraga avatar Mar 19 '21 02:03 hassandraga

لا تزال مشكلة كود الخروج بصفر عند حدوث خطأ، والمتوقع أن تكون بواحد مثلا في الإصدار v3.0.20 (Beta)

MuhammadSawalhy avatar Jun 19 '21 18:06 MuhammadSawalhy

ثم التصحيح في نسخة 3.0.21، المرجو المراجعة والتدقيق

شكرا على التبليغ

hassandraga avatar Jun 22 '21 00:06 hassandraga

تم حل مشكلة كود الخروج والحمد لله، بقي بعض التحسينات على الوسائط args التي ترسل من الطرفية مثل --h

MuhammadSawalhy avatar Jun 22 '21 16:06 MuhammadSawalhy

في هذه الإشكالية التي فتحتها #12، تحدثت عن تعريب واجهة السطر الأمري (و.س.أ CLI)

MuhammadSawalhy avatar Jun 22 '21 16:06 MuhammadSawalhy

نحتاج أن نجد برنامج واجهة سطر أمري يدعم العربية، أو نصمم واحدا بأنفسنا

hassandraga avatar Jun 26 '21 05:06 hassandraga

موجود mltrm، وtilix يدعم اعربية كذلك، وwindows terminal يدعمها

MuhammadSawalhy avatar Jun 26 '21 11:06 MuhammadSawalhy

نحتاج أن نجد برنامج واجهة سطر أمري يدعم العربية، أو نصمم واحدا بأنفسنا

انا مستعد للعمل على تصميم واجهة سطر أمري يدعم العربية

Shad7ows avatar Jun 26 '21 14:06 Shad7ows

هذا هو خط kawkab mono

image

MuhammadSawalhy avatar Jun 26 '21 18:06 MuhammadSawalhy

لماذا لا يتم طباعة الناتج للطرفية وإعطاء خيار من خلال الأَسناد args لكي يتم كتابة الخطأ في ملف بامتداد .log مثلا، أرى أنه يوجد سَنَد --log والذي يعمل كما هو متوقع، لكن أرى أن الطباعة بدون وجود --log أو --log-json أن تكون في الطرفية "STDOUT"

MuhammadSawalhy avatar Jul 21 '21 05:07 MuhammadSawalhy

لماذا لا يتم طباعة الناتج للطرفية وإعطاء خيار من خلال الأَسناد args لكي يتم كتابة الخطأ في ملف بامتداد .log مثلا، أرى أنه يوجد سَنَد --log والذي يعمل كما هو متوقع، لكن أرى أن الطباعة بدون وجود --log أو --log-json أن تكون في الطرفية "STDOUT"

يمكنك القيام بذلك عن طريق استخدام

--debug-screen

hassandraga avatar Sep 30 '21 18:09 hassandraga