Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
MuhammadSawalhy opened this issue Mar 14, 2021 · 16 comments
Labels
bug / علة Something isn't working / شيء ما لايعمل enhancement / تحسينات New feature or request/ طلب أو شرح فكرة جديدة

Comments

@MuhammadSawalhy
Copy link
Collaborator

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

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
Copy link
Collaborator Author

New_Alif-File.alif:


#ألف

نافذة رئيسية 

	دالة رئيسية 

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

		رسالة (م)

	نهاية دالة 

نهاية نافذة 

@hassandraga
Copy link
Member

  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
Copy link
Member

hassandraga commented Mar 14, 2021

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

@MuhammadSawalhy
Copy link
Collaborator Author

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

MuhammadSawalhy commented Mar 14, 2021

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

image

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

#ألف

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

@me00001 me00001 added the enhancement / تحسينات New feature or request/ طلب أو شرح فكرة جديدة label Mar 15, 2021
@hassandraga
Copy link
Member

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

@me00001 me00001 added the bug / علة Something isn't working / شيء ما لايعمل label Mar 19, 2021
@MuhammadSawalhy
Copy link
Collaborator Author

MuhammadSawalhy commented Jun 19, 2021

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

@hassandraga
Copy link
Member

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

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

@MuhammadSawalhy
Copy link
Collaborator Author

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

@MuhammadSawalhy
Copy link
Collaborator Author

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

@hassandraga
Copy link
Member

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

@MuhammadSawalhy
Copy link
Collaborator Author

MuhammadSawalhy commented Jun 26, 2021

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

@Shad7ows
Copy link
Member

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

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

@MuhammadSawalhy
Copy link
Collaborator Author

هذا هو خط kawkab mono

image

@MuhammadSawalhy
Copy link
Collaborator Author

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

@hassandraga
Copy link
Member

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

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

--debug-screen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug / علة Something isn't working / شيء ما لايعمل enhancement / تحسينات New feature or request/ طلب أو شرح فكرة جديدة
Projects
None yet
Development

No branches or pull requests

4 participants