compiler
compiler copied to clipboard
العربية أولا وآخرا
أرجو أن نعجل كل شيء تقريبا باللغة العربية، كل شيء نقدر عليه ونذلل لذلك الصعاب ونخوضها، حتى لو لم تكن الأدوات الأخرى متاحة مثل طرفية تدعم اللغة العربية بشكل جيد، أو محرر للغة العربية.
-
استخدام الأرقام العربية، أعلم أم البعض يطلقون عليها الأرقام الهندية، لكن لنأخذ الأمر بدراسة أكثر وفحص للواقع، سنجد أن هذه الأرقم التي يسميها البعض الأرقام الهندية هي المستخدمة في المصحف الشريف. أرى أن يتم إتاحة استخدام كلا الرقمين، 234 و٢٣٤ وبالتالي نحل الإشكالية.
رسالة الخطأ عند محاولة استخدام الأرقام العربية:
الملف : /home/ms/myp/alif/examples/helloworld/helloworld.alif السطر : 8 الخطأ : بناء الجملة غير مفهوم : ' ٢٣٤ '
-
تعريب الحروف الخاصة في النصوص مثل حرف "سطر جديد"
\n
، فنجعله مثلا/س
، وهكذا البقية... -
ألفت النظر إلى أنني استعملت اتجاه الشرطة المائلة مختلف عن في الإنجليزية وهو ما يسمى بتأثير المرآة، فقد استخدمت
/س
وليس\س
. قِس على ذلك العمليات الرياضية:2 / 4
بالإنجليزية من اليسار لليمين هي نفسها٢ \ ٤
بالعربية من اليمين لليسار. -
إنشاء ملف ثنائي آخر وليكن اسمه
ألف
والذي يمكن استخدامه داخل الطرفية "العربية" من الطرفيات الموجودة حاليا أو التي سيتم إنشاؤها إن شاء الله.مثال على ذلك:
> ألف --دخل .\الكود.ألف --خرج ملف_ثنائي
تعديل
-
استخدام اسم نطاق عربي مثل قلب.موقع، واسماء.شبكة. جرب كتابتهم في صندوق الرابط والبحث في المتصفح. يمكن وجود أكثر من رابط يعيدوا التوجيه للرابط الأصلي، يعني أن نوفر اسم النطاق العربي إن أمكن بالإضافة للإنجليزي.
-
نضيف ال ansi colors للقائمة
#ألف دالة رئيسية نص كود_اللون = "100" نص نص_ليلون = "نص بلون خاص" اطبع("\u001b[38;5;" + كود_اللون + "m" + نص_ليلون + "\u001b[0m\n") نهاية دالة
-
لما لا يُتاح استخدام الامتداد
.ألف
؟ الآن.alif
فقط هي المقبولة، وأرى أن التقييد بالامتدادات يمكن التخلي عنه، لأن المهم هو المحتوى، وإن كان بالملف مخالفة لقواعد اللغة ستتوقف الترجمة وتطبع رسالة الخطأكما أن كود ألف يبدأ ب
#ألف
والتي يمكن أن تُجعل غير إلزامية، أي أن الكود يمكن أن يحتويها أو لا
١ : الليكسر الخاص بألف يقوم بتحويل الأرقام "الهندية" إلى العربية، وبالثالي يمكن ستعمال كلا الأرقام
عدد ج = 55 + ٤٣ * 44 + ٨٩٧
٢ : نعم ممكن، فكرة جيدة
٣ : الخلط بينهما سيجعل الأمر صعبا علينا، أقترح حاليا الإكتفاء بإتجاه واحد مثلا
2 / 4
هي نفسها ٢ / ٤
٤ : نعم ممكن، يكفي فقط إضافتها إلى السطر رقم ٨٥٦٨ https://github.com/alifcommunity/compiler/blob/261194d65d6ea33818e8384d0afe8013e7c23f1a/src/alif.cpp#L8568
هذا هو الشكل عندي، لأني لاحظت اختلاف تصيير النصوص من جهاز لآخر ومن برنامج لآخر.
ممكن أن نؤجل تدعيم تأثير المرآة، مع العلم أن بعض الحروف تصّير تلقائا وفقا لاتجاه اللغة مثل الحرف >
، أنا لم استعمل سواه في كل الأمثلة التالية، لم استعمل <
:
> ألف
عدد أكبر > عدد أقل
bigger number > smaller number
نفس النص دون أي تغيير لكن من اليسار لليمين
> ألف
عدد أكبر > عدد أقل
bigger number > smaller number
٣ : الخلط بينهما سيجعل الأمر صعبا علينا، أقترح حاليا الإكتفاء بإتجاه واحد مثلا
2 / 4
هي نفسها٢ / ٤
أظن أننا بحاجة لشكل واحد لعملية القسمة، لأن العمليات الحسابية ستكون من اليمين لليسار ولكن شكل الأرقام هو ما سيختلف، دائما نحسبها من اليمين لليسار:
يرجى التغيير والاختبار: https://github.com/alifcommunity/compiler/blob/7c58b149a2225138de5adbc34977f81733159a94/src/alif.cpp#L1395 https://github.com/alifcommunity/compiler/blob/7c58b149a2225138de5adbc34977f81733159a94/src/alif.cpp#L1431 https://github.com/alifcommunity/compiler/blob/7c58b149a2225138de5adbc34977f81733159a94/src/alif.cpp#L1471 ...
ينتج هذا
الملف : /home/ms/myp/alif/examples/helloworld/helloworld.alif
السطر : 6
الخطأ : بناء الجملة غير مفهوم : ' \ ' %
التعديلات
diff --git a/src/alif.cpp b/src/alif.cpp
index fde409f..2516778 100644
--- a/src/alif.cpp
+++ b/src/alif.cpp
@@ -1392,7 +1392,7 @@
(TOKEN_LAST == "+") ||
(TOKEN_LAST == "-") ||
(TOKEN_LAST == "*") ||
- (TOKEN_LAST == "/") ||
+ (TOKEN_LAST == "\\") || // mirror effect for rtl scripts
(TOKEN_LAST == "("))
return false;
@@ -1428,7 +1428,7 @@
if ((TOKEN_LAST != "+") &&
(TOKEN_LAST != "-") &&
(TOKEN_LAST != "*") &&
- (TOKEN_LAST != "/") &&
+ (TOKEN_LAST != "\\") && // mirro effect for rtl script
(TOKEN_LAST != "=") &&
(TOKEN_LAST != "("))
return false;
@@ -1468,7 +1468,7 @@
if ((TOKEN_LAST != "+") &&
(TOKEN_LAST != "-") &&
(TOKEN_LAST != "*") &&
- (TOKEN_LAST != "/") &&
+ (TOKEN_LAST != "\\") && // mirro effect for rtl scripts
(TOKEN_LAST != "=") &&
(TOKEN_LAST != "،") &&
(TOKEN_LAST != ",") &&
@@ -8647,4 +8647,4 @@
boost::nowide::cout << "File " << argv[1] << " has " << total_lines << " lines" << std::endl;
return 0;
}
- */
\ No newline at end of file
+ */
لنبقي هدا المشكل مفتوحا شكرا على التبليغ
إضافة:
- استخدام اسم نطاق عربي مثل قلب.موقع، واسماء.شبكة. جرب كتابتهم في صندوق الرابط والبحث في المتصفح. يمكن وجود أكثر من رابط يعيدوا التوجيه للرابط الأصلي، يعني أن نوفر اسم النطاق العربي إن أمكن بالإضافة للإنجليزي.
- نضيف ال ansi colors للقائمة
#ألف
دالة رئيسية
نص كود_اللون = "100"
نص نص_ليلون = "نص بلون خاص"
اطبع("\u001b[38;5;" + كود_اللون + "m" + نص_ليلون + "\u001b[0m\n")
نهاية دالة
لما لا يُتاح استخدام الامتداد .ألف
؟ الآن .alif
فقط هي المقبولة، وأرى أن التقييد بالامتدادات يمكن التخلي عنه، لأن المهم هو المحتوى، وإن كان بالملف مخالفة لقواعد اللغة ستتوقف الترجمة وتطبع رسالة الخطأ
كما أن كود ألف يبدأ ب #ألف
والتي يمكن أن تُجعل غير إلزامية، أي أن الكود يمكن أن يحتويها أو لا
ونفس المشكلة حصلت عند استخدام امتداد للملف التنفيذي. أظن أن هذه القيود يمكن إلغاؤها