السلام عليكم ورحمة الله
بارك الله فيك اخى محمود
يمكن لحضرتك الإنطلاق مبدئيا من النقاط السابقة ، ومن خلال النقاش المفتوح هنا فيمكننا التعامل مع ما يستجد من اسئلة ان شاء الله تعالى ،،،
السلام عليكم ورحمة الله
بارك الله فيك اخى محمود
يمكن لحضرتك الإنطلاق مبدئيا من النقاط السابقة ، ومن خلال النقاش المفتوح هنا فيمكننا التعامل مع ما يستجد من اسئلة ان شاء الله تعالى ،،،
اخي فكره رائعه
وانا اقرأ الاسطر البرمجيه والابتسامه لا تفرق وجهي ![]()
وملاحظ الجهد المبذول في بنائها
انا لا افقه كثيراً في بناء المترجمات ولكن اتمنى لك التوفيق من اعماق قلبي
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اقتباساخي فكره رائعه
وانا اقرأ الاسطر البرمجيه والابتسامه لا تفرق وجهي صورة مرسلة
وملاحظ الجهد المبذول في بنائها
انا لا افقه كثيراً في بناء المترجمات ولكن اتمنى لك التوفيق من اعماق قلبي
بارك الله فيك اخى الكريم عبدالله واهلا ومرحبا بك معنا
اقتباسمكن لحضرتك الإنطلاق مبدئيا من النقاط السابقة ، ومن خلال النقاش المفتوح هنا فيمكننا التعامل مع ما يستجد من اسئلة ان شاء الله تعالى ،،،
جميل جدا
سوف ابدا الان بوصف الهدف ولماذا نحتاج الى الذكاء الاصطناعى
1 - ان يكون تصميم لغة البرمجة الداخلى بسيط وغير معقد لكى تكون سهلة الفهم من قبل معظم المبرمجين ولاتحتاج الى عبقرى لفهم مايحدث
ان لغات البرمجة المتعارف على طرق بنائها من خلال اساليب بناء المترجمات Compilers تتبع اساليب معقدة فى التطبيق Implementation
وذلك لتحقيق اداء عالى High Performance فى الترجمة مما يجعل من الصعب فهم البناء الداخلى للـ Compiler خاصة اذا كان للغة برمجة حقيقية
ومتكاملة البناء - كما ان مصمم اللغة كثيرا مايلجا الى اساليب وافكار ابداعية لتحقيق اهداف معينة مثل اضافة امكانية او تلافى مشكلة فتكون النتيجة ان يكون
تصميم اللغة معقد واحيانا يجد مطور اللغة الاساسى نفسه هو الوحيد القادر على فهم المترجم
مثال عملى على هذه المشكلة - لغة Ruby
فى هذه اللغة نجد ان لتعقيد وصل الى اعلى الدرجات ويصف مصمم اللغة ان البناء الداخلى لها معقد (ويشبه ذلك بان اللغة داخليا معقدة كجسم الانسان)
وهذا فيديو لحوار تم مع Matz عن لغة Ruby
http://www.infoq.com/interviews/yukihiro-matz-language-design
سوف تجده يشير الى ان ruby is very complex language - implementation اى معقدة جدا من ناحية البناء الداخلى وعندما يضيف شىء جديد
الى اللغة فى التعقيد يزيد
وهذا رابط لحوار اخر معه
http://linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html
يشير فيه انه يقوم بمعظم العمل وحده - بينما الاخرين يقوموا بعمل بعض الاصلاحات وصيانة
اقتباسStewart: Did you do this alone, or did the open source community contribute significantly?
Matz: Until around 1996 I worked alone. Since then a Ruby community has formed, and they have helped me a lot. I'm still doing most of the work alone, but many people contribute their fixes and patches.
اذن اول سبب للجوء الى طرق الذكاء هو ان يكون التصميم واضح سهل الفهم وغير معقد مع اضافة المزيد من الامكانيات والملامح.
2 - ان تكون كلمات اللغة قابلة للتعديل والتغيير ولان تكون باكثر من صورة وذلك لدعم امكانية ان تكون الشفيرة المصدرية باللغة العربية او الانجليزية
او خليط بينهما وكذلك دعم اللغات الانسانية الاخرى وهى اول لغة من نوعها (عربى انجليزى خليط) فى نفس الوقت.
اى ان فى لغات البرمجة الاخرى Syntax is fixed او قابل لاضافات وتعديلات مع وجود ثوابت
لكن فى اللغة المطلوب تصميمها ال Syntax متغير بنسبة 100% لامكانية دعم اكثر من لغة انسانية (عربى - انجليزى - ... إلخ)
3 - ان تكون اللغة ليست حساسة للمسافات space والاسطر new lines وحالة الاحرف case
4 - ان تكون نواة اللغة ضخمة جدا ومع ذلك بسيطة جدا وهذه السياسة اثبتت فشلها فى حالة الاساليب التقليدية للبناء - لكن مع تغير اسلوب البناء يمكن
لهذه السياسة ان تنجح بقوة ولهذا نحتاج الى الذكاء الاصطناعى الذى سوف يساعد على ان تكون نواة اللغة ضخمة لتقديم معظم الملامح ومع ذلك بسيطة
5 - ان تكون لغة ذكية - قابلة لان تكون اكثر ذكاء بسهولة مع تطور اصداراتها مستفيدين بخبرة مستخدمين اللغة ويتم ذلك من خلال سهولة تطوير نواة اللغة
حيث لامشكلة فى زيادة حجمها طالما سيتم عمل توازن مع الاداء لان بساطة التصميم مضمونة باساليب الذكاء الاصطناعى
______________________________________________
لهذه النقاط قررت استخدام الذكاء الاصطناعى فى بناء اللغة ووجدت انه هو الحل
تم عمل اللغة على انها عبارة عن نظام خبير Expert System
وتم عمل الـ Knowledge Representation باستخدام الـ Rules
اى لدينا Rule-Based system
مهمته هى ان تعطى له الشفيرة المصدرية ويتخذ القرار هل هى صحيحة ام لا وان كانت صحيحة يقوم بتحويلها لصورة قابلة للتنفيذ
ويتم استخدام الـ Forward chaining بداية من الشفيرة المصدرية (الكود) وباستخدام ال Knowledge base او KB
حتى يتم استنتاج Facts جديدة للوصول الى قرار بصحة الشفيرة المصدرية من عدمه
اى نستعمل data-driven reasoning لان البداية تكون من البيانات حتى نصل للهدف (قرار بصحة الشفيرة وتحويلها لصورة قابلة للتنفيذ
او قرار بعدم صحتها وتحديد الخطا)
ميزة الـ expert system انه يسجعل التصميم واضح
مشكلته هى الاداء performance لكثرة المقارنات بين الـ facts (الشفيرة المصدرية) وبين الـ Rules
ولكن تم التغلب على ذلك من خلال ان ال Rules فى الـ KB تم وضعها بصورة مصنفعة اى Classification
وهذا التصنيف على اكثر من مستوى More than one level ليتم تقليل فضاء البحث Search Space
استنادا على هذا التصنيف المدرج.
______________________________________________
تم الان توضيح الاسباب الراجعة الى اللجوء الى الذكاء الاصطناعى لبناء المترجم
وتم تحديد اسلوب بناء الانظمة الخبيرة لتكون هى الاسلوب المتبع
اخى الكريم عماد
اود الانتقال الان الى الـ Knowledge Base - KB وماتشتمل عليها من Rules وتصنيفات Classes لتمثيل القاعدة المعرفية الخاصة باللغة
هل هناك اى اسئلة ؟ ام نبدا فى هذه الجزئية ؟
والله الموفق
PWCT Maker كتب:اود الانتقال الان الى الـ Knowledge Base - KB وماتشتمل عليها من Rules وتصنيفات Classes لتمثيل القاعدة المعرفية الخاصة باللغة
هل هناك اى اسئلة ؟ ام نبدا فى هذه الجزئية ؟
والله الموفق
بارك الله فيك أخى محمود على اهتمامك , ومجهود مشكور. قرأت المشاركة اكثر من مرة ، هناك بعض الاستفسارات فى ذهنى ولكنى سؤؤجلها لحين انتهاء حضرتك من هذه الجزئية ، فربما أجد الإجابة فى الأجزاء القادمه بإذن الله.
لكن لى بعض الملاحظات البسيطة
- اتمنى فقط الا تتعامل مع اسئلتى واستفساراتى وكأنى استجوبك ، نحن نتناقش وأنا ابحث عن الإستفاده لا اكثر :).
- اتمنى كذلك ان يكون كلامك موجه للجميع وليس لشخص بعينه لان هذا يغضب البعض :).
- انا لست فى عجلة من أمرى ، فخذ كفايتك من الوقت ولا ترهق نفسك من اجل الإسراع بالرد.
بارك الله فيك وبارك لك ،،،
بسم الله الرحمن الرحيم
اقتباساتمنى فقط الا تتعامل مع اسئلتى واستفساراتى وكأنى استجوبك ، نحن نتناقش وأنا ابحث عن الإستفاده لا اكثر :).
- اتمنى كذلك ان يكون كلامك موجه للجميع وليس لشخص بعينه لان هذا يغضب البعض :).
- انا لست فى عجلة من أمرى ، فخذ كفايتك من الوقت ولا ترهق نفسك من اجل الإسراع بالرد.
بارك الله فيك اخى الكريم
_____________________________
للتعرف جيدا على الـ KB وكيف تستخدم فى اللغة - يفضل ان نرى مثال بسيط لالية العمل
نفترض ان لدينا برنامج يشتمل على الامر I want window والذى يستخدم لانشاء نافذة جديدة
فى هذه الحالة فان المفترض ان يحدث كالتالى
يقوم الـ Scanner بقراءة الامر i want window بداية من اليسار وحرف حرف ثم يقوم باستدعاء الـ Inference engine
الذى بدوره سوف يستخدم الـ KB لمعالجة الدخل (الشفيرة المصدرية)
وفى نهاية المعالجة ولان الامر صحيح (يقوم الـ Inference engine بالاستلال على صحة الامر من خلال الـ Rules فى الـ KB )
هذا شكل عام لحالة ممكن ان تحدث
سوف نعطى نظرة عملية على التصميم الحقيقى للغة السوبرنوفا بتقنية البرمجة بدون كود بهدف تسهيل التعرف فيما بعد على المفهوم
علمنا حتى الان ان لدينا Scanner ولدينا KB ولدينا Inference engine وهذا فى اطار مهمة الـ Compiler اى لم نتدخل فى الالة الافتراضية VM
نقوم بتشغيل تقنية البرمجة بدون كود من المجموعة البرمجية الخاصة بها
نقوم بفتح ملف من ملفات التصميم الخاصة بالسوبرنوفا وهى موجودة فى المسار c:\ssbuild\supernova\source
بفرض انك قمت بتحميل الاصدار الاخير من تقنية البرمجة بدون كود
الملف الرئيسى للغة السوبرنوفا هو Nova.SSF نقوم بفتحه لمشاهدة الخطوات التى يقوم بها
نلاحظ انه يستقبل ملف او ملفات من المستخدم
هذا الملف او الملفات قد يكون ملف شفيرة مصدرية يحمل الامتداد Nova او ملف مترجم يحمل الامتداد Star
تقوم السوبرنوفا فى البداية باستقبال الملفات وفى حالة كونها ملفات شفيرة مصدرية فانها تستدعى الـ Scanner
ويمكن فتح الـ Scanner من خلال الملف Scanner.SSF
وهو يحتوى على التالى
نلاحظ ان مهمة الـ Scanner هى قراءة ملف الشفيرة المصدرية او مجموعة ملفات الشفيرة المصدرية فى حالة اكثر من ملف
يتم اهمال حالة الاحرف Case والمسافات Space و الاسطر الجديدة new lines من قبل الـ Scanner
عند قراءة حرف جديد يتم استدعاء الـ Inference engine وهو المسئول عن استخدام الـ KB لتحديد هل الـ Syntax صحيح ام لا
والان بعد هذه المعرفة بخطوات سير التنفيذ ننتقل الى الـ KB
يمكن ان تتصفحها من خلال الملف Details.SSF
ومحتواها كالتالى
والان قبل ان افصل كل نقطة وكل جزء من اجزاء الـ KB التى عند التعرف عليها ستجد انها تصف اللغة بشكل مبسط
هل تم استيعاب الجزئية التى تم عرضها للتعرف على موقع الـ KB داخل اللغة ؟
وهل هناك مشكلة فى فتح ملفات اللغة باستخدام تقنية البرمجة بدون كود - ام ان كل شىء على مايرام وسهل الاستخدام ؟
والله الموفق
PWCT Maker كتب:والان قبل ان افصل كل نقطة وكل جزء من اجزاء الـ KB التى عند التعرف عليها ستجد انها تصف اللغة بشكل مبسط
هل تم استيعاب الجزئية التى تم عرضها للتعرف على موقع الـ KB داخل اللغة ؟
وهل هناك مشكلة فى فتح ملفات اللغة باستخدام تقنية البرمجة بدون كود - ام ان كل شىء على مايرام وسهل الاستخدام ؟
والله الموفق
بارك الله فيك وبارك لك ، متابع معك أخى الفاضل ويمكنك الإستمرار وقتما تشاء. فى الحقيقة انا اهتم جدا بالتفاصيل ، ولكن اهم ما يهمنى الأن هو معرفة كيفية بناء ومكونات النظام الخبير الذى تعتمد عليه حضرتك. أجمع الأن ملاحظاتى وسأرفقها كلها ان شاء الله تعالى بعد انتهاء حضرتك من هذه النقطة.
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اقتباسارك الله فيك وبارك لك ، متابع معك أخى الفاضل ويمكنك الإستمرار وقتما تشاء. فى الحقيقة انا اهتم جدا بالتفاصيل ، ولكن اهم ما يهمنى الأن هو معرفة كيفية بناء ومكونات النظام الخبير الذى تعتمد عليه حضرتك. أجمع الأن ملاحظاتى وسأرفقها كلها ان شاء الله تعالى بعد انتهاء حضرتك من هذه النقطة.
بارك الله فيك اخى الكريم
_________________________
انتقل الان الى تفصيل القواعد Rules الخاصة بالـ Tokens او كلمات اللغة الاساسية
يتم تقسيم الكلمات الى عدة فئات او مجالات وهى P و V و C و A و I
ولان اللغة تقبل ان تكون الشفيرة المصدرية عربية او انجليزية - فان كل كلمة يتم سردها مرتين - مرة باللغة العربية ومرة باللغة الانجليزية
وهذه الكلمات عند التعرف عليها من قبل اللغة فانها قد تخضع لعملية تحويل Transformation من مجال او فئة الى اخرى او من صيغة (نص الكلمة)
الى صيغة اخرى حتى الوصول الى الشكل النهائى.
وبالتالى عند تعريف الكلمة Token يتم تعريف ثلاثة اشياء
1 - الفئة P او V او C او A او I
2 - النص text
3 - مستوى التحويل Transformation level
ومستوى التحويل قد يكون 0 اى لايوجد تحويلات تتم على الكلمة بمجرد التعرف عليها
وقد يكون مستوى التحويل 1 اى هناك تحويلات وهى تتم على الكلمات الانجليزية
وقد يكون مستوى التحويل 2 اى هناك تحويلات وهى تتم على الكلمات العربية
وفى نهاية تعريف الكلمات ولزيادة الاداء يتم تسجيل بعض المعلومات
1- طول كل كلمة Token Length ليستخدم اولا فى المقارنة
2 - بداية ونهاية كل فئة داخل مصفوفة الكلمات لتقليل مجال البحث عند توقع كلمة من فئة معينة
وفيما يلى صور عملية توضح كيف نتصفح القواعد الخاصة بتعريف الكلمات ومستوى التحويل وماتم من اضافة معلومات لزيادة الاداء
اتمنى ان تكون هذه النقطة واضحة بشكل جيد حتى اتابع وانتقل الى نقطة اخرى فى الـ KB
والله الموفق
مهندس محمود
بارك الله فيك وبإمكانك المتابعة
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اقتباسمهندس محمود
بارك الله فيك وبإمكانك المتابعة
الله يبارك فيك اخى الكريم
___________________________________
تشتمل ال KB على العديد من القواعد Rules مثل قواعد تعريف الـكلمات Tokens والتحويلات Transformations
وقواعد تعريف الاوامر او تعليمات اللغة Operations
ولكن جميع قواعد اللغة تتجمع وتتشكل لتصل الى صورة من الصور الخمسة التى يصنف كل امر من اوامر اللغة عليها
وقد تم وضع خمس قواعد لتشكيل اوامر اللغة لتكون وسيلة لتحسين الاداء من جانب ومنع التعارض من جانب اخر ولكى تكون اوامر اللغة متشابهة الى
حد كبير اى لوضع جميع التعليمات على صورة عدد معين من القواعد ثلاثة فوائد
1 - تحسين الاداء من خلال التنبا بالفئة التى تنتنمى اليها الكلمة التالية
2 - منع التعارض ومواجهته وذلك ايضا من خلال التنبدا بالفئة التى تنتمى اليه الكلمة
3 - ان تكون تعليمات اللغة متناغمة وقريبة من بعضها لسهولة تعلمها واستيعابها
وفيما يلى تصفح للقواعد الخمسة
SPVC
SCAVD
SDVD
SDI
SI
ونلاحظ انه من خلال هذه القواعد وبالبداية ب S التى ترمز الى جملة او امر Statement يمكن لنا ان نتنبدا بالمجالات المسموح بها
بعد ذلك اذا عرفنا المجال الحالى للكلمة التى تم قرائتها
ويمكن عن طريق مفاتيح Switches نحدد المجالات التى نبحث فيها لتحسين الاداء ولمنع الكثير من التعارضات وحلها
والان ناتى الى قواعد المستوى الاول من التحويل Transformation Level = 1 الخاص بالتحويل على الكلمات الانجليزية
هذه القواعد عبارة عن تحويلات يتم تنفيذها باستمرار طالما ان فى كل مرة هناك تحويلة تم تنفيذها
بمعنى يتم المرور على هذه القواعد من البداية حتى النهاية فاذا وجد النظام قاعدة يمكن تطبيقها فانه يتم تطبيقها ثم يعود ليبدا من جديد بالمرور على القواعد
من البداية وهكذا ويتم الخروج من هذه الحلقة فى حالة انه لايوجد قواعد تم تطبيقها عن المرور على جميع القواعد من البداية حتى النهاية
القواعد دى تغير مسار اللغة تماما - يمكن ان تجعل كلمات تحل محل كلمات
يمكن ايضا ان تعطى اوامر وتعليمات بشكل مخالف للقواعد الخمسة من ناحية الاستخدام ام من ناحية البناء
فان مايحدث هو تحويلات تتم اكثر من مرة حتى تعود فى النهاية لقاعدة على الشكل النهائى لاحد القواعد الخمسة
بدراسة التحويلات وفهمها جيدا ممكن ان يجعلك تشعر بمتعة كبيرة
لما تعطيك من اسلوب متميز وراقى فى التحكم باللغة وقواعدها
واتمنى ممن يتابع الشرح ان يقوم بالتعرف على التحويلات وماتقوم به وكيف يتم ذلك
اتمنى ان تكون هذه النقطة واضحة للاستمرار بطرح المزيد باذن الله
هل كل شىء واضح على مايرام ام ان هناك اى شىء غامض ؟
والله الموفق
بارك الله فيك مهندس محمود
في انتظار التالي ...
لماذا لا تقوم بتجميع كل شيء في ملف PDF (مجرد إقتراح) :happy:
اقتباسارك الله فيك مهندس محمود
في انتظار التالي ...
لماذا لا تقوم بتجميع كل شيء في ملف PDF (مجرد إقتراح) :happy:
الفكرة جميلة - مارايك ان تتولى هذه المهمة على التوازى معى بينما يتم طرح المزيد من الشرح
انا ارفع لك الصور وانت تاخذ النص من الموضوع وتهتم بالتنسيق والمظهر الجمالى بحيث يخرج العمل على اكمل وجه
موافق اخى الكريم ؟
السلام عليكم ورحمة الله
أخى الفاضل مهندس محمود
بارك الله فيك على اهتمامك وشرحك المفصل ، انا متابع حضرتك. ولكنى للأسف مشغول جدا هذه الأيام ، ولذلك فأنا اطلع على إضافات حضرتك سريعا واقوم بالخروج.
انا منتظر حتى تنتهى حضرتك تماما من هذه النقطة وسأقوم بوضع تعليقاتى مرة واحدة ان شاء الله ، وان كنت حضرتك بشرحك المسهب هذا لن تترك لى مجال للاسئلة والتعليق :)
بارك الله فيك ونفع بك ،،،
اقتباسالفكرة جميلة - مارايك ان تتولى هذه المهمة على التوازى معى بينما يتم طرح المزيد من الشرحانا ارفع لك الصور وانت تاخذ النص من الموضوع وتهتم بالتنسيق والمظهر الجمالى بحيث يخرج العمل على اكمل وجه
موافق اخى الكريم ؟
هذا شرف لي لكن صدقني أنا أخرج من منزلي في الخامسة والنصف وأعود حوالي السابعة والنصف وبالكاد أجد وقت للراحة ..
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اقتباسو لا تنسى اسئلة الاخوة الكرام........
باذن الله رب العالمين
اقتباسالسلام عليكم ورحمة الله
أخى الفاضل مهندس محمود
بارك الله فيك على اهتمامك وشرحك المفصل ، انا متابع حضرتك. ولكنى للأسف مشغول جدا هذه الأيام ، ولذلك فأنا اطلع على إضافات حضرتك سريعا واقوم بالخروج.
انا منتظر حتى تنتهى حضرتك تماما من هذه النقطة وسأقوم بوضع تعليقاتى مرة واحدة ان شاء الله ، وان كنت حضرتك بشرحك المسهب هذا لن تترك لى مجال للاسئلة والتعليق :)
بارك الله فيك ونفع بك ،،،
الله يبارك فيك اخى الكريم وربنا يوفقنا جميعا يارب باذن الله
اقتباسهذا شرف لي لكن صدقني أنا أخرج من منزلي في الخامسة والنصف وأعود حوالي السابعة والنصف وبالكاد أجد وقت للراحة ..
ولايهمك اخى الكريم - وربنا يعينا جميعا يارب باذن الله
-----------------------
نتابع الان بتوضيح قواعد التحويل Transformation rules اكثر
وذلك بشرح القواعد التى تستخدم لاستقبال جملة do while لانها تتم من خلال قاعدتين يتم تنفيذهم على مرحلتين
والتوضيح كما بالصور التالية
هذه هى ميزة التحويلات انها تستخدم للدوران حول القواعد الاساسية
حيث ان العمليات Operations او اوامر اللغة تستند على شكل من اشكال القواعد الخمسة الاساسية
والتحويلات تستخدم لكى يكون الامر بالشكل الذى نريده ومن ثم يتم تحويله الى صورة من صور القواعد الخمسة الاساسية
والله الموفق
بارك الله فيك مهندس محمود
ممكن توضح الإختصارات SI, SW, SWD, SDI, ... etc
اقتباسممكن توضح الإختصارات SI, SW, SWD, SDI, ... etc
اللغة اولا واخيرا عبارة عن كلمات Tokens
هذه الكلمات Tokens مصنفة الى مجموعات او فئات Classes
هذه الفئات يتم الاشارة اليها عن طريق رموز مختصرة مثل P او V او C او A او I
حيث P تعنى Pronoun اى ضمير وتشتمل ايضا كلمات اخرى غير الضمائر
و V تعنى Verb اى فعل وتشتمل هذه الفئة على كلمات اخرى غير الافعال
و C تعنى Class اى فئة وتشتمل هذه الفئة على كلمات اخرى غير الفئات
و A تعنى Attribute اى خاصية وتشتمل هذه الفئة على كلمات اخرى غير الخصائص
و I تعنى Instructions اى امر
الحرف S يعنى Statement اى جملة وهو بداية عمليات المعالجة والتحويلات
اوامر اللغة التى تقبل تكون على الصورة SPVC او SCAVD او SDVD او SDI او SI
يمكنك اهمال حرف S مؤقتا حيث انه يتم وضعه بشكل تلقائى فى بداية كل امر
اذن ترى التعليمات على الصورة PVC او CAVD او DVD او DI او SI
فمثلا PVC تعنى كلمة من النطاق P ثم كلمة من النطاق V ثم كلمة من النطاق C
مثال I Want Window
حيث I تنتمى الى النطاق P و Want تنتمى الى النطاق V و Window تنتمى الى النطاق C
بالنسبة للحرف D فهو يعنى البيانات فمثلا Window title is hello world.
فان hello world. يرمز لها بالرمز D
وبالتالى فان هذا الامر على الصورة CAVD او SCAVD
حيث Window ضمن النطاق C و title ضمن النطاق A و is ضمن النطاق V
هل اتضحت هذه الجزئية اخى الكريم ؟
والله الموفق
جزاك الله خيراً مهندس محمود
تابع
اقتباسجزاك الله خيراً مهندس محمود
تابع
ابه رايك اشرح فيديو (صوت وصورة) ؟؟
كما يحلو لك لكن أنا رأيي ان تكمل علي نفس الطريقة أو تطرح الموضوع كاملاً في ملف PDF
والله الموفق
السلام عليكم مهندس محمود
لماذا لا تكمل الموضوع .. لعل المانع خير
الحمد الله رب العالمين انا بخير
فقط انتقلت الفترة الماضية من مصر الى السعودية لزيارة الاسرة فى جدة (انا متواجد فى جدة لمدة شهر باذن الله)
جارى استكمال الموضوع باذن الله رب العالمين
والله الموفق
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
نتابع الان رحلة التعرف على KB وننتقل من التحويلات Transformations الى تعريف التعليمات Instructions او اوامر اللغة
وفيما يلى سرد لخطوات تعريف التعليمات
Determine Operations
Ignore
Add item {"SI","the",0,0} To Array myOperations
Add item {"SI","and",0,0} To Array myOperations
Add item {"SI","store",0,0} To Array myOperations
Add item {"SI","get",0,0} To Array myOperations
Add item {"SCAVD",":note:",0,0} To Array myOperations
Instructions
Add item {"SDI","instructionsare",-1000,5} To Array myOperations
Add item {"SI","endofinstructions",-1001,6} To Array myOperations
Add item {"SDI","instructionsmustdone",-1002,0} To Array myOperations
Add item {"SDI","fileinstructionsmustdone",-1003,0} To Array myOperations
Add item {"SI","ok",-1001,6} To Array myOperations
Add item {"SI","endfunction",-1001,6} To Array myOperations
Add item {"SI","endprocedure",-1001,6} To Array myOperations
Windows
Add item {"SPVC","iwantwindow",1,0} To Array myOperations
Add item {"SCAVD","windowtitleis",2,0} To Array myOperations
Add item {"SCAVD","windowdirectionis",3,0} To Array myOperations
Add item {"SCAVD","windowbackcoloris",4,0} To Array myOperations
Add item {"SCAVD","windowtopis",5,0} To Array myOperations
Add item {"SCAVD","windowleftis",6,0} To Array myOperations
Add item {"SCAVD","windowwidthis",7,0} To Array myOperations
Add item {"SCAVD","windowheightis",8,0} To Array myOperations
Add item {"SPVC","youmaximizewindow",9,0} To Array myOperations
Add item {"SPVC","youminimizewindow",10,0} To Array myOperations
Add item {"SPVC","youcentrewindow",11,0} To Array myOperations
Add item {"SPVC","youshowwindow",12,0} To Array myOperations
Add item {"SPVC","youhidewindow",13,0} To Array myOperations
Add item {"SPVC","youclosewindow",14,0} To Array myOperations
Add item {"SCAVD","windownameis",15,0} To Array myOperations
Add item {"SDI","windowselected",16,0} To Array myOperations
Add item {"SPVC","youcloseapplication",17,0} To Array myOperations
Add item {"SCAVD","windowtitlefrom",18,0} To Array myOperations
Add item {"SCAVD","windowtitleto",19,0} To Array myOperations
Add item {"SCAVD","windowparentis",20,0} To Array myOperations
Add item {"SCAVD","applicationtitleis",21,0} To Array myOperations
Add item {"SI","setwindowautoshowon",22,0} To Array myOperations
Add item {"SI","setwindowautoshowoff",23,0} To Array myOperations
Add item {"SI","setwindowresizeon",24,0} To Array myOperations
Add item {"SI","setwindowresizeoff",25,0} To Array myOperations
Add item {"SI","setwindowmodalon",26,0} To Array myOperations
Add item {"SI","setwindowmodaloff",27,0} To Array myOperations
Add item {"SCAVD","windowhandleto",28,0} To Array myOperations
Add item {"SCAVD","windowtopto",29,0} To Array myOperations
Add item {"SCAVD","windowleftto",30,0} To Array myOperations
Add item {"SCAVD","windowwidthto",31,0} To Array myOperations
Add item {"SCAVD","windowheightto",32,0} To Array myOperations
Add item {"SCAVD","windowtopfrom",33,0} To Array myOperations
Add item {"SCAVD","windowleftfrom",34,0} To Array myOperations
Add item {"SCAVD","windowwidthfrom",35,0} To Array myOperations
Add item {"SCAVD","windowheightfrom",36,0} To Array myOperations
Common Controls
Button
Add item {"SPVC","iwantbutton",50,0} To Array myOperations
Add item {"SCAVD","buttoncaptionis",51,0} To Array myOperations
Add item {"SCAVD","buttontopis",52,0} To Array myOperations
Add item {"SCAVD","buttonleftis",53,0} To Array myOperations
Add item {"SCAVD","buttonwidthis",54,0} To Array myOperations
Add item {"SCAVD","buttonheightis",55,0} To Array myOperations
Add item {"SCAVD","buttonnameis",56,0} To Array myOperations
Add item {"SCAVD","buttonfontnameis",57,0} To Array myOperations
Add item {"SCAVD","buttonfontsizeis",58,0} To Array myOperations
Add item {"SCAVD","buttonforecoloris",59,0} To Array myOperations
Add item {"SCAVD","buttonbackcoloris",60,0} To Array myOperations
Add item {"SCAVD","buttonfontboldis",61,0} To Array myOperations
Add item {"SCAVD","buttonfontitalicis",62,0} To Array myOperations
Add item {"SCAVD","buttonfontunderlineis",63,0} To Array myOperations
Add item {"SCAVD","buttonfontstrickoutis",64,0} To Array myOperations
Add item {"SCAVD","buttonpictureis",65,0} To Array myOperations
Add item {"SDI","buttonselected",66,0} To Array myOperations
Add item {"SCAVD","buttoncaptionfrom",67,0} To Array myOperations
Add item {"SCAVD","buttoncaptionto",68,0} To Array myOperations
Object Dim
Add item {"SCAVD","buttontopto",69,0} To Array myOperations
Add item {"SCAVD","buttonleftto",70,0} To Array myOperations
Add item {"SCAVD","buttonwidthto",71,0} To Array myOperations
Add item {"SCAVD","buttonheightto",72,0} To Array myOperations
Add item {"SCAVD","buttontopfrom",73,0} To Array myOperations
Add item {"SCAVD","buttonleftfrom",74,0} To Array myOperations
Add item {"SCAVD","buttonwidthfrom",75,0} To Array myOperations
Add item {"SCAVD","buttonheightfrom",76,0} To Array myOperations
Label
Add item {"SPVC","iwantlabel",100,0} To Array myOperations
Add item {"SCAVD","labelcaptionis",101,0} To Array myOperations
Add item {"SCAVD","labeltopis",102,0} To Array myOperations
Add item {"SCAVD","labelleftis",103,0} To Array myOperations
Add item {"SCAVD","labelwidthis",104,0} To Array myOperations
Add item {"SCAVD","labelheightis",105,0} To Array myOperations
Add item {"SCAVD","labelnameis",106,0} To Array myOperations
Add item {"SCAVD","labelfontnameis",107,0} To Array myOperations
Add item {"SCAVD","labelfontsizeis",108,0} To Array myOperations
Add item {"SCAVD","labelforecoloris",109,0} To Array myOperations
Add item {"SCAVD","labelbackcoloris",110,0} To Array myOperations
Add item {"SCAVD","labelfontboldis",111,0} To Array myOperations
Add item {"SCAVD","labelfontitalicis",112,0} To Array myOperations
Add item {"SCAVD","labelfontunderlineis",113,0} To Array myOperations
Add item {"SCAVD","labelfontstrickoutis",114,0} To Array myOperations
Add item {"SI","setlabeltransparenton",115,0} To Array myOperations
Add item {"SI","setlabeltransparentoff",116,0} To Array myOperations
Add item {"SDI","labelselected",117,0} To Array myOperations
Add item {"SCAVD","labelcaptionfrom",118,0} To Array myOperations
Add item {"SCAVD","labelcaptionto",119,0} To Array myOperations
Object Dim
Add item {"SCAVD","labeltopto",120,0} To Array myOperations
Add item {"SCAVD","labelleftto",121,0} To Array myOperations
Add item {"SCAVD","labelwidthto",122,0} To Array myOperations
Add item {"SCAVD","labelheightto",123,0} To Array myOperations
Add item {"SCAVD","labeltopfrom",124,0} To Array myOperations
Add item {"SCAVD","labelleftfrom",125,0} To Array myOperations
Add item {"SCAVD","labelwidthfrom",126,0} To Array myOperations
Add item {"SCAVD","labelheightfrom",127,0} To Array myOperations
Listbox
Add item {"SPVC","iwantlistbox",300,0} To Array myOperations
Add item {"SCAVD","listboxvalueis",301,0} To Array myOperations
Add item {"SCAVD","listboxtopis",302,0} To Array myOperations
Add item {"SCAVD","listboxleftis",303,0} To Array myOperations
Add item {"SCAVD","listboxwidthis",304,0} To Array myOperations
Add item {"SCAVD","listboxheightis",305,0} To Array myOperations
Add item {"SCAVD","listboxnameis",306,0} To Array myOperations
Add item {"SCAVD","listboxfontnameis",307,0} To Array myOperations
Add item {"SCAVD","listboxfontsizeis",308,0} To Array myOperations
Add item {"SCAVD","listboxforecoloris",309,0} To Array myOperations
Add item {"SCAVD","listboxbackcoloris",310,0} To Array myOperations
Add item {"SCAVD","listboxfontboldis",311,0} To Array myOperations
Add item {"SCAVD","listboxfontitalicis",312,0} To Array myOperations
Add item {"SCAVD","listboxfontunderlineis",313,0} To Array myOperations
Add item {"SCAVD","listboxfontstrickoutis",314,0} To Array myOperations
Add item {"SDI","listboxselected",315,0} To Array myOperations
Add item {"SCAVD","listboxmustadditem",316,0} To Array myOperations
Add item {"SCAVD","listboxmustaddfrom",317,0} To Array myOperations
Add item {"SCAVD","listboxvaluefrom",318,0} To Array myOperations
Add item {"SCAVD","listboxvalueto",319,0} To Array myOperations
Data
Assignment
Add item {"SDVD","is",2000,0} To Array myOperations
Add item {"SDVD",":=",2003,0} To Array myOperations
Add item {"SDI","++",2004,0} To Array myOperations
Add item {"SDI","--",2005,0} To Array myOperations
Decimal Places Allowed
Add item {"SDI","decimalplacesallowed",2001,0} To Array myOperations
Do Windows Events
Add item {"SI","dowindowsevents",2002,0} To Array myOperations
Control Structure
Counter
Add item {"SPVC","iwantcounter",3000,0} To Array myOperations
Add item {"SCAVD","counterstartis",3001,0} To Array myOperations
Add item {"SCAVD","counterendis",3002,0} To Array myOperations
Add item {"SCAVD","counterstepis",3003,0} To Array myOperations
Add item {"SCAVD","counternameis",3004,0} To Array myOperations
Add item {"SPVC","youusecounter",3005,0} To Array myOperations
Add item {"SCAVD","countervaluefrom",3006,0} To Array myOperations
Add item {"SCAVD","countervalueto",3007,0} To Array myOperations
Add item {"SCAVD","counterstartfrom",3008,0} To Array myOperations
Add item {"SCAVD","counterstartto",3009,0} To Array myOperations
Add item {"SCAVD","counterendfrom",3010,0} To Array myOperations
Add item {"SCAVD","counterendto",3011,0} To Array myOperations
Add item {"SCAVD","counterstepfrom",3012,0} To Array myOperations
Add item {"SCAVD","counterstepto",3013,0} To Array myOperations
Add item {"SCAVD","counternamefrom",3014,0} To Array myOperations
Add item {"SCAVD","counternameto",3015,0} To Array myOperations
Do While Loop
Add item {"SDI","dowhile",3050,3} To Array myOperations
Add item {"SI","endwhile",3051,4} To Array myOperations
IF Statement
Add item {"SDI","doif",3060,1} To Array myOperations
Add item {"SI","endif",3061,2} To Array myOperations
Controls
Picture
Add item {"SPVC","iwantpicture",150,0} To Array myOperations
Add item {"SCAVD","picturefileis",151,0} To Array myOperations
Add item {"SCAVD","picturetopis",152,0} To Array myOperations
Add item {"SCAVD","pictureleftis",153,0} To Array myOperations
Add item {"SCAVD","picturewidthis",154,0} To Array myOperations
Add item {"SCAVD","pictureheightis",155,0} To Array myOperations
Add item {"SCAVD","picturenameis",156,0} To Array myOperations
Add item {"SDI","pictureselected",157,0} To Array myOperations
Textbox
Add item {"SPVC","iwanttextbox",200,0} To Array myOperations
Add item {"SCAVD","textboxvalueis",201,0} To Array myOperations
Add item {"SCAVD","textboxtopis",202,0} To Array myOperations
Add item {"SCAVD","textboxleftis",203,0} To Array myOperations
Add item {"SCAVD","textboxwidthis",204,0} To Array myOperations
Add item {"SCAVD","textboxheightis",205,0} To Array myOperations
Add item {"SCAVD","textboxnameis",206,0} To Array myOperations
Add item {"SCAVD","textboxfontnameis",207,0} To Array myOperations
Add item {"SCAVD","textboxfontsizeis",208,0} To Array myOperations
Add item {"SCAVD","textboxforecoloris",209,0} To Array myOperations
Add item {"SCAVD","textboxbackcoloris",210,0} To Array myOperations
Add item {"SCAVD","textboxfontboldis",211,0} To Array myOperations
Add item {"SCAVD","textboxfontitalicis",212,0} To Array myOperations
Add item {"SCAVD","textboxfontunderlineis",213,0} To Array myOperations
Add item {"SCAVD","textboxfontstrickoutis",214,0} To Array myOperations
Add item {"SDI","textboxselected",215,0} To Array myOperations
Add item {"SCAVD","textboxvaluefrom",216,0} To Array myOperations
Add item {"SCAVD","textboxvalueto",217,0} To Array myOperations
Editbox
Add item {"SPVC","iwanteditbox",250,0} To Array myOperations
Add item {"SCAVD","editboxvalueis",251,0} To Array myOperations
Add item {"SCAVD","editboxtopis",252,0} To Array myOperations
Add item {"SCAVD","editboxleftis",253,0} To Array myOperations
Add item {"SCAVD","editboxwidthis",254,0} To Array myOperations
Add item {"SCAVD","editboxheightis",255,0} To Array myOperations
Add item {"SCAVD","editboxnameis",256,0} To Array myOperations
Add item {"SCAVD","editboxfontnameis",257,0} To Array myOperations
Add item {"SCAVD","editboxfontsizeis",258,0} To Array myOperations
Add item {"SCAVD","editboxforecoloris",259,0} To Array myOperations
Add item {"SCAVD","editboxbackcoloris",260,0} To Array myOperations
Add item {"SCAVD","editboxfontboldis",261,0} To Array myOperations
Add item {"SCAVD","editboxfontitalicis",262,0} To Array myOperations
Add item {"SCAVD","editboxfontunderlineis",263,0} To Array myOperations
Add item {"SCAVD","editboxfontstrickoutis",264,0} To Array myOperations
Add item {"SDI","editboxselected",265,0} To Array myOperations
Add item {"SCAVD","editboxvaluefrom",266,0} To Array myOperations
Add item {"SCAVD","editboxvalueto",267,0} To Array myOperations
Add item {"SCAVD","editboxtopto",268,0} To Array myOperations
Add item {"SCAVD","editboxleftto",269,0} To Array myOperations
Add item {"SCAVD","editboxwidthto",270,0} To Array myOperations
Add item {"SCAVD","editboxheightto",271,0} To Array myOperations
Add item {"SCAVD","editboxtopfrom",272,0} To Array myOperations
Add item {"SCAVD","editboxleftfrom",273,0} To Array myOperations
Add item {"SCAVD","editboxwidthfrom",274,0} To Array myOperations
Add item {"SCAVD","editboxheightfrom",275,0} To Array myOperations
Combobox
Add item {"SPVC","iwantcombobox",350,0} To Array myOperations
Add item {"SCAVD","comboboxvalueis",351,0} To Array myOperations
Add item {"SCAVD","comboboxtopis",352,0} To Array myOperations
Add item {"SCAVD","comboboxleftis",353,0} To Array myOperations
Add item {"SCAVD","comboboxwidthis",354,0} To Array myOperations
Add item {"SCAVD","comboboxheightis",355,0} To Array myOperations
Add item {"SCAVD","comboboxnameis",356,0} To Array myOperations
Add item {"SCAVD","comboboxfontnameis",357,0} To Array myOperations
Add item {"SCAVD","comboboxfontsizeis",358,0} To Array myOperations
Add item {"SCAVD","comboboxforecoloris",359,0} To Array myOperations
Add item {"SCAVD","comboboxbackcoloris",360,0} To Array myOperations
Add item {"SCAVD","comboboxfontboldis",361,0} To Array myOperations
Add item {"SCAVD","comboboxfontitalicis",362,0} To Array myOperations
Add item {"SCAVD","comboboxfontunderlineis",363,0} To Array myOperations
Add item {"SCAVD","comboboxfontstrickoutis",364,0} To Array myOperations
Add item {"SDI","comboboxselected",365,0} To Array myOperations
Add item {"SCAVD","comboboxmustadditem",366,0} To Array myOperations
Add item {"SCAVD","comboboxmustaddfrom",367,0} To Array myOperations
Add item {"SCAVD","comboboxvaluefrom",368,0} To Array myOperations
Add item {"SCAVD","comboboxvalueto",369,0} To Array myOperations
Checkbox
Add item {"SPVC","iwantcheckbox",400,0} To Array myOperations
Add item {"SCAVD","checkboxvalueis",401,0} To Array myOperations
Add item {"SCAVD","checkboxtopis",402,0} To Array myOperations
Add item {"SCAVD","checkboxleftis",403,0} To Array myOperations
Add item {"SCAVD","checkboxwidthis",404,0} To Array myOperations
Add item {"SCAVD","checkboxheightis",405,0} To Array myOperations
Add item {"SCAVD","checkboxnameis",406,0} To Array myOperations
Add item {"SCAVD","checkboxfontnameis",407,0} To Array myOperations
Add item {"SCAVD","checkboxfontsizeis",408,0} To Array myOperations
Add item {"SCAVD","checkboxforecoloris",409,0} To Array myOperations
Add item {"SCAVD","checkboxbackcoloris",410,0} To Array myOperations
Add item {"SCAVD","checkboxfontboldis",411,0} To Array myOperations
Add item {"SCAVD","checkboxfontitalicis",412,0} To Array myOperations
Add item {"SCAVD","checkboxfontunderlineis",413,0} To Array myOperations
Add item {"SCAVD","checkboxfontstrickoutis",414,0} To Array myOperations
Add item {"SDI","checkboxselected",415,0} To Array myOperations
Add item {"SCAVD","checkboxcaptionis",416,0} To Array myOperations
Progressbar
Add item {"SPVC","iwantprogressbar",450,0} To Array myOperations
Add item {"SCAVD","progressbarvalueis",451,0} To Array myOperations
Add item {"SCAVD","progressbartopis",452,0} To Array myOperations
Add item {"SCAVD","progressbarleftis",453,0} To Array myOperations
Add item {"SCAVD","progressbarwidthis",454,0} To Array myOperations
Add item {"SCAVD","progressbarheightis",455,0} To Array myOperations
Add item {"SCAVD","progressbarnameis",456,0} To Array myOperations
Add item {"SDI","progressbarselected",457,0} To Array myOperations
Add item {"SCAVD","progressbarrangeminimumis",458,0} To Array myOperations
Add item {"SCAVD","progressbarrangemaximumis",459,0} To Array myOperations
Add item {"SCAVD","progressbarforecoloris",460,0} To Array myOperations
Add item {"SCAVD","progressbarbackcoloris",461,0} To Array myOperations
Slider
Add item {"SPVC","iwantslider",500,0} To Array myOperations
Add item {"SCAVD","slidervalueis",501,0} To Array myOperations
Add item {"SCAVD","slidertopis",502,0} To Array myOperations
Add item {"SCAVD","sliderleftis",503,0} To Array myOperations
Add item {"SCAVD","sliderwidthis",504,0} To Array myOperations
Add item {"SCAVD","sliderheightis",505,0} To Array myOperations
Add item {"SCAVD","slidernameis",506,0} To Array myOperations
Add item {"SDI","sliderselected",507,0} To Array myOperations
Add item {"SCAVD","sliderrangeminimumis",508,0} To Array myOperations
Add item {"SCAVD","sliderrangemaximumis",509,0} To Array myOperations
Add item {"SCAVD","sliderbackcoloris",510,0} To Array myOperations
Datepicker
Add item {"SPVC","iwantdatepicker",550,0} To Array myOperations
Add item {"SCAVD","datepickervalueis",551,0} To Array myOperations
Add item {"SCAVD","datepickertopis",552,0} To Array myOperations
Add item {"SCAVD","datepickerleftis",553,0} To Array myOperations
Add item {"SCAVD","datepickerwidthis",554,0} To Array myOperations
Add item {"SCAVD","datepickerheightis",555,0} To Array myOperations
Add item {"SCAVD","datepickernameis",556,0} To Array myOperations
Add item {"SDI","datepickerselected",557,0} To Array myOperations
Add item {"SCAVD","datepickerforecoloris",558,0} To Array myOperations
Add item {"SCAVD","datepickerbackcoloris",559,0} To Array myOperations
Add item {"SCAVD","datepickerfontnameis",560,0} To Array myOperations
Add item {"SCAVD","datepickerfontsizeis",561,0} To Array myOperations
Add item {"SCAVD","datepickerfontboldis",562,0} To Array myOperations
Add item {"SCAVD","datepickerfontitalicis",563,0} To Array myOperations
Add item {"SCAVD","datepickerfontunderlineis",564,0} To Array myOperations
Add item {"SCAVD","datepickerfontstrickoutis",565,0} To Array myOperations
Spinner
Add item {"SPVC","iwantspinner",600,0} To Array myOperations
Add item {"SCAVD","spinnervalueis",601,0} To Array myOperations
Add item {"SCAVD","spinnertopis",602,0} To Array myOperations
Add item {"SCAVD","spinnerleftis",603,0} To Array myOperations
Add item {"SCAVD","spinnerwidthis",604,0} To Array myOperations
Add item {"SCAVD","spinnerheightis",605,0} To Array myOperations
Add item {"SCAVD","spinnernameis",606,0} To Array myOperations
Add item {"SDI","spinnerselected",607,0} To Array myOperations
Add item {"SCAVD","spinnerforecoloris",608,0} To Array myOperations
Add item {"SCAVD","spinnerbackcoloris",609,0} To Array myOperations
Add item {"SCAVD","spinnerfontnameis",610,0} To Array myOperations
Add item {"SCAVD","spinnerfontsizeis",611,0} To Array myOperations
Add item {"SCAVD","spinnerfontboldis",612,0} To Array myOperations
Add item {"SCAVD","spinnerfontitalicis",613,0} To Array myOperations
Add item {"SCAVD","spinnerfontunderlineis",614,0} To Array myOperations
Add item {"SCAVD","spinnerfontstrickoutis",615,0} To Array myOperations
Add item {"SCAVD","spinnerrangeminimumis",616,0} To Array myOperations
Add item {"SCAVD","spinnerrangemaximumis",617,0} To Array myOperations
Hyperlink
Add item {"SPVC","iwanthyperlink",650,0} To Array myOperations
Add item {"SCAVD","hyperlinkcaptionis",651,0} To Array myOperations
Add item {"SCAVD","hyperlinktopis",652,0} To Array myOperations
Add item {"SCAVD","hyperlinkleftis",653,0} To Array myOperations
Add item {"SCAVD","hyperlinkwidthis",654,0} To Array myOperations
Add item {"SCAVD","hyperlinkheightis",655,0} To Array myOperations
Add item {"SCAVD","hyperlinknameis",656,0} To Array myOperations
Add item {"SCAVD","hyperlinkfontnameis",657,0} To Array myOperations
Add item {"SCAVD","hyperlinkfontsizeis",658,0} To Array myOperations
Add item {"SCAVD","hyperlinkforecoloris",659,0} To Array myOperations
Add item {"SCAVD","hyperlinkbackcoloris",660,0} To Array myOperations
Add item {"SCAVD","hyperlinkfontboldis",661,0} To Array myOperations
Add item {"SCAVD","hyperlinkfontitalicis",662,0} To Array myOperations
Add item {"SCAVD","hyperlinkfontunderlineis",663,0} To Array myOperations
Add item {"SCAVD","hyperlinkfontstrickoutis",664,0} To Array myOperations
Add item {"SI","sethyperlinktransparenton",665,0} To Array myOperations
Add item {"SI","sethyperlinktransparentoff",666,0} To Array myOperations
Add item {"SDI","hyperlinkselected",667,0} To Array myOperations
Add item {"SCAVD","hyperlinkaddressis",668,0} To Array myOperations
Statusbar
Add item {"SPVC","iwantstatusbar",700,0} To Array myOperations
Add item {"SCAVD","statusbarfontnameis",701,0} To Array myOperations
Add item {"SCAVD","statusbarfontsizeis",702,0} To Array myOperations
Add item {"SCAVD","statusbarfontboldis",703,0} To Array myOperations
Add item {"SCAVD","statusbarfontitalicis",704,0} To Array myOperations
Add item {"SCAVD","statusbarfontunderlineis",705,0} To Array myOperations
Add item {"SCAVD","statusbarfontstrickoutis",706,0} To Array myOperations
Add item {"SPVC","iwantstatusitem",707,0} To Array myOperations
Add item {"SPVC","iwantstatusclock",708,0} To Array myOperations
Add item {"SPVC","iwantstatusdate",709,0} To Array myOperations
Add item {"SPVC","iwantstatuskeyboard",710,0} To Array myOperations
Add item {"SCAVD","statusitemcaptionis",711,0} To Array myOperations
Add item {"SCAVD","statusitemwidthis",712,0} To Array myOperations
Add item {"SPVC","youshowstatusbar",713,0} To Array myOperations
Menubar
Add item {"SPVC","iwantmenubar",750,0} To Array myOperations
Add item {"SPVC","iwantmenupopup",751,0} To Array myOperations
Add item {"SCAVD","menupopupcaptionis",752,0} To Array myOperations
Add item {"SPVC","iwantmenuitem",753,0} To Array myOperations
Add item {"SCAVD","menuitemcaptionis",754,0} To Array myOperations
Add item {"SCAVD","menuitemnameis",755,0} To Array myOperations
General
Add item {"SDI","executefile",4000,0} To Array myOperations
Add item {"SDI","executefrom",4001,0} To Array myOperations
Add item {"SDVD","memorytofile",4002,0} To Array myOperations
Add item {"SDVD","filetomemory",4003,0} To Array myOperations
Add item {"SDI","filetoopen",4004,0} To Array myOperations
Add item {"SDI","filetosave",4005,0} To Array myOperations
Add item {"SDI","dlllibrarytouse",4006,0} To Array myOperations
Add item {"SDVD","dllfunctiontocallwithparameters",4007,0} To Array myOperations
Add item {"SDVD","comobjecttocreateoftype",4010,0} To Array myOperations
Add item {"SDI","comobjecttouse",4011,0} To Array myOperations
Add item {"SDVD","compropertytoset",4012,0} To Array myOperations
Add item {"SDVD","compropertytoget",4013,0} To Array myOperations
Add item {"SDVD","commethodtocallwithparameters",4014,0} To Array myOperations
Add command length
MyEnd = Get Length of String/Variable/Array MYoperations
FOR LOOP ( From x = 1 To myEnd Step 1)
Code Block
Add item len(MYoperations[x][2]) To Array MYoperations[x]
End of For Loop
Arrange commands by RULE
Declare arrays
Declare Array RULESDI
Declare Array RULESDVD
Declare Array RULESCAVD
Declare Array RULESPVC
Declare Array RULESI
Do Job
MyEnd = Get Length of String/Variable/Array MYoperations
FOR LOOP ( From x = 1 To myEnd Step 1)
Code Block
IF ( myoperations[x][1] == "SDI" )
Code Block
Add item myoperations[x] To Array RULESDI
Loop
END OF IF STATEMENT
IF ( myoperations[x][1] == "SDVD" )
Code Block
Add item myoperations[x] To Array RULESDVD
Loop
END OF IF STATEMENT
IF ( myoperations[x][1] == "SCAVD" )
Code Block
Add item myoperations[x] To Array RULESCAVD
Loop
END OF IF STATEMENT
IF ( myoperations[x][1] == "SPVC" )
Code Block
Add item myoperations[x] To Array RULESPVC
Loop
END OF IF STATEMENT
IF ( myoperations[x][1] == "SI" )
Code Block
Add item myoperations[x] To Array RULESI
Loop
END OF IF STATEMENT
End of For Loop
Declare Array rulesmap
Add item { "SDI" , 0 , 0 } To Array rulesmap
Add item { "SDVD" , 0 , 0 } To Array rulesmap
Add item { "SCAVD" , 0 , 0 } To Array rulesmap
Add item { "SPVC" , 0 , 0 } To Array rulesmap
Add item { "SI" , 0 , 0 } To Array rulesmap
Declare Array myoperations
rulesmap[1][2] = 1
rulesmap[1][3] = len(RuleSDI)
rulesmap[2][2] = len(RuleSDI)+1
rulesmap[2][3] = len(RuleSDI)+len(RuleSDVD)
rulesmap[3][2] = rulesmap[2][3]+1
rulesmap[3][3] = rulesmap[2][3]+len(RuleSCAVD)
rulesmap[4][2] = rulesmap[3][3]+1
rulesmap[4][3] = rulesmap[3][3]+len(RuleSPVC)
rulesmap[5][2] = rulesmap[4][3]+1
rulesmap[5][3] = rulesmap[4][3]+len(RuleSI)
add rule SDI operations to operations array
myend = Get Length of String/Variable/Array ruleSDI
FOR LOOP ( From x = 1 To myend Step 1)
Code Block
Add item RuleSDI[X] To Array myoperations
End of For Loop
add rule SDVD operations to operations array
myend = Get Length of String/Variable/Array ruleSDVD
FOR LOOP ( From x = 1 To myend Step 1)
Code Block
Add item RuleSDVD[X] To Array myoperations
End of For Loop
add rule SCAVD operations to operations array
myend = Get Length of String/Variable/Array ruleSCAVD
FOR LOOP ( From x = 1 To myend Step 1)
Code Block
Add item RuleSCAVD[X] To Array myoperations
End of For Loop
add rule SPVC operations to operations array
myend = Get Length of String/Variable/Array ruleSPVC
FOR LOOP ( From x = 1 To myend Step 1)
Code Block
Add item RuleSPVC[X] To Array myoperations
End of For Loop
add rule SI operations to operations array
myend = Get Length of String/Variable/Array ruleSI
FOR LOOP ( From x = 1 To myend Step 1)
Code Block
Add item RuleSI[X] To Array myoperations
End of For Loopنلاحظ ان التعليمات يتم تحديدها بتسجيل عناصر Items فى مصفوفة العمليات myoperations array
جيث كل امر يتم تحديد اربعة امور له
1 - القاعدة التى يتبعها الامر Rule
2 - نص الامر Instruction/Command
3 - رقم الامر او الكود الخاص به Operation Code (OPCode) لتحديده بسرعة
4 - رقم يضاف الى الـ Stack الخاص باكتشاف الاخطاء عند تحقق القاعدة الخاصة بالامر (يعنى عند استعمال الامر)
مثال
Add item {"SDI","dowhile",3050,3} To Array myOperations
فى هذه الخطوة نجد
1 - القاعدة SDI يعنى الامر على الصورة Statement - Data - Instructions
باهمال S او Statement والتى تشير الى بداية امر جديد
نجد الصورة DI اى Data Instructions اى يتحقق الامر عن طريق ادخال بيانات Data يليها Instructions او نص معين سوف يتم تحديده
2 - نص الامر هو dowhile
3 - رقم الامر هو 3050
4 - الرقم الذى يضاف الى الـ stack عن وجود هذا الامر هو رقم 3
طب ايه معنى الكلام ده
معناه يتم تحديد الشرط condition الخاص بجملة do while اولا على صورة Data
ثم بعد ذلك يكتب dowhile
طبعا هذا التسلسل مربك جدا - لان فى كل لغات البرمجة نكتب dowhile اولا ثم الشرط وليس العكس
هذا سليم وكذلك الحال هنا - حيث نستخدم الـ Transformations السابق شرحها لتحويل الصورة التى يستخدمها المستخدم
الى هذه الصورة التى تم تعريفها للمترجم
يعنى المستخدم يكتب do while ثم الشرط
فيتم تحويلها الى العكس (الشرط ثم do while) من خلال قواعد الـ Transformations
بالنسبة لاضافة رقم للامر او Operation code فهذا ضرورى بعد ذلك لتنفيذ الامر مباشرة من خلال رقمه (مرحلة التنفيذ)
اما بخصوص اضافة رقم 3 الى الـ Stack فهذا الـ Stack هو المستخدم لاكتشاف الاخطاء فى التركيبات اللغوية
حيث جملة do while تحتاج الى ان يتم اغلاقها باستخدام End While
وبالتالى يتم رصد كل جملة do while من خلال اضافة الرقم 3 الى الـ Stack
_____________
بعد تعريف العمليات - تم اضافة خطوات لكى تقوم بتسجيل طول الاوامر Add command length
وهذا يستخدم فيما بعد للمقارنة بسرعة بين طول الامر - وبين طول العبارة التى يتم البحث بها فى قواعد اللغة
حيث يتم مقارنة الطول اولا ثم بعد ذلك قيمة النص ذاته
____________________________
بعد ذلك تاتى خطوة فرز الاوامر تبعا للقاعدة التى تقوم عليها اى خطوة Arrange commands by RULE
حيث يتم ترتيب الاوامر داخل مصفوفة العمليات myoperations
بحيث تكون الاوامر التى تتبع القاعدة SDI فى مقدمة المصفوفة يليها الاوامر التى تتبع القاعدة SDVD ثم SCAVD ثم SPVC ثم SI
___________________________
اتمنى ان تكون هذه النقطة واضحة بشكل جيد حتى يتم الانتقال الى نقطة اخرى
والله الموفق
ده تطبيق بسيط بالسوبرنوفا
عبارة عن سؤال - تجاوب عليه صح تظهر لك صورة + تعليق
رابط التحميل : q1.zip
والشفيرة المصدرية كالتالى
وهى الشفيرة الناتجة من بيئة تقنية البرمجة بدون كود عن طريق مكونات تدعم السوبرنوفا SupernovaPWCT
Set window resize off
I want window
Window top = 10.
Window left = 10.
Window width = 700.
Window height = 568.
Window title = "صورة وتعليق وسؤال"
Window back color = {0,0,0}.
set label transparent off
I want label
Label top = 11.
Label left = 126.
Label width = 448.
Label height = 27.
Label Caption = "عاصمة المملكة العربية السعودية"
Label fore color = {0,255,128}.
Label back color = {0,0,0}.
Label font name = "Arial"
Label font size = 14.
Label Name is "lblmain"
"lblmain Mouse Click" instructions are
end of instructions
I want button
Button top = 296.
Button left = 126.
Button width = 440.
Button height = 80.
Button Caption = "جدة"
Button fore color = {0,0,0}.
Button back color = {255,255,255}.
Button font name = "Arial"
Button font size = 28.
Button Name is "btn1"
"btn1 Mouse Click" instructions are
Listbox must add item "جدة عروس البحر الاحمر بس مش هى العاصمة"
end of instructions
I want button
Button top = 215.
Button left = 126.
Button width = 440.
Button height = 70.
Button Caption = "مكة المكرمة"
Button fore color = {0,0,0}.
Button back color = {255,255,255}.
Button font name = "Arial"
Button font size = 28.
Button Name is "btn3"
"btn3 Mouse Click" instructions are
Listbox must add item "مكة المكرمة بها المسجد الحرام لكن مش هى العاصمة"
end of instructions
I want button
Button top = 134.
Button left = 127.
Button width = 440.
Button height = 70.
Button Caption = "الرياض"
Button fore color = {0,0,0}.
Button back color = {255,255,255}.
Button font name = "Arial"
Button font size = 28.
Button Name is "btn4"
"btn4 Mouse Click" instructions are
Listbox must add item "ايوة كده هى الرياض"
"btn1" Button selected
Button Top is "-100"
"btn2" Button selected
Button Top is "-100"
"btn3" Button selected
Button Top is "-100"
"btn4" Button selected
Button Top is "-100"
"lblmain" label selected
Label caption is "انا برىء - بكره اكبر واوريكم"
end of instructions
I want button
Button top = 57.
Button left = 127.
Button width = 440.
Button height = 70.
Button Caption = "المدينة المنورة"
Button fore color = {0,0,0}.
Button back color = {255,255,255}.
Button font name = "Arial"
Button font size = 28.
Button Name is "btn2"
"btn2 Mouse Click" instructions are
Listbox must add item "المدينة المنورة بها الحرم النبوى الشريف لكن مش هى العاصمة"
end of instructions
I want listbox
Listbox top = 400.
Listbox left = 14.
Listbox width = 663.
Listbox height = 114.
Listbox Value = 0.
Listbox fore color = {255,255,255}.
Listbox back color = {0,0,0}.
Listbox font name = "Arial"
Listbox font size = 14.
I want Picture
Picture top = 48.
Picture left = 126.
Picture width = 455.
Picture height = 307.
Picture FILE = "p24.jpg"
You centre window
You show windowوهذه صور لتطوير التطبيق فى بيئة تقنية البرمجة بدون كود
والله الموفق
بارك الله فيك مهندس محمود
هل انتهيت حتي يمكن للإخوة الكرام مناقشتك؟
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…