الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تم بحمد الله اطلاق لغة البرمجة الجديدة Supernova 1.0 (لغة برمجة عربى انجليزى)

رائج
بدأه PWCT Maker في 19 مارس 2010 · 102 رد · 19,862 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#76

السلام عليكم ورحمة الله

بارك الله فيك اخى محمود

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

1 −1

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#77

laugh.gif اخي فكره رائعه

وانا اقرأ الاسطر البرمجيه والابتسامه لا تفرق وجهي blush.gif

وملاحظ الجهد المبذول في بنائها

انا لا افقه كثيراً في بناء المترجمات ولكن اتمنى لك التوفيق من اعماق قلبي

#78

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اقتباس

اخي فكره رائعه

وانا اقرأ الاسطر البرمجيه والابتسامه لا تفرق وجهي صورة مرسلة

وملاحظ الجهد المبذول في بنائها

انا لا افقه كثيراً في بناء المترجمات ولكن اتمنى لك التوفيق من اعماق قلبي

بارك الله فيك اخى الكريم عبدالله واهلا ومرحبا بك معنا

اقتباس

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

جميل جدا

سوف ابدا الان بوصف الهدف ولماذا نحتاج الى الذكاء الاصطناعى

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 لتمثيل القاعدة المعرفية الخاصة باللغة

هل هناك اى اسئلة ؟ ام نبدا فى هذه الجزئية ؟

والله الموفق

4 −1
#79
PWCT Maker كتب:

اود الانتقال الان الى الـ Knowledge Base - KB وماتشتمل عليها من Rules وتصنيفات Classes لتمثيل القاعدة المعرفية الخاصة باللغة

هل هناك اى اسئلة ؟ ام نبدا فى هذه الجزئية ؟

والله الموفق

بارك الله فيك أخى محمود على اهتمامك , ومجهود مشكور. قرأت المشاركة اكثر من مرة ، هناك بعض الاستفسارات فى ذهنى ولكنى سؤؤجلها لحين انتهاء حضرتك من هذه الجزئية ، فربما أجد الإجابة فى الأجزاء القادمه بإذن الله.

لكن لى بعض الملاحظات البسيطة

- اتمنى فقط الا تتعامل مع اسئلتى واستفساراتى وكأنى استجوبك ، نحن نتناقش وأنا ابحث عن الإستفاده لا اكثر :).

- اتمنى كذلك ان يكون كلامك موجه للجميع وليس لشخص بعينه لان هذا يغضب البعض :).

- انا لست فى عجلة من أمرى ، فخذ كفايتك من الوقت ولا ترهق نفسك من اجل الإسراع بالرد.

بارك الله فيك وبارك لك ،،،

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#80

بسم الله الرحمن الرحيم

اقتباس

اتمنى فقط الا تتعامل مع اسئلتى واستفساراتى وكأنى استجوبك ، نحن نتناقش وأنا ابحث عن الإستفاده لا اكثر :).

- اتمنى كذلك ان يكون كلامك موجه للجميع وليس لشخص بعينه لان هذا يغضب البعض :).

- انا لست فى عجلة من أمرى ، فخذ كفايتك من الوقت ولا ترهق نفسك من اجل الإسراع بالرد.

بارك الله فيك اخى الكريم

_____________________________

للتعرف جيدا على الـ KB وكيف تستخدم فى اللغة - يفضل ان نرى مثال بسيط لالية العمل

نفترض ان لدينا برنامج يشتمل على الامر I want window والذى يستخدم لانشاء نافذة جديدة

فى هذه الحالة فان المفترض ان يحدث كالتالى

post-167987-12743799306126_thumb.jpg

يقوم الـ Scanner بقراءة الامر i want window بداية من اليسار وحرف حرف ثم يقوم باستدعاء الـ Inference engine

الذى بدوره سوف يستخدم الـ KB لمعالجة الدخل (الشفيرة المصدرية)

وفى نهاية المعالجة ولان الامر صحيح (يقوم الـ Inference engine بالاستلال على صحة الامر من خلال الـ Rules فى الـ KB )

هذا شكل عام لحالة ممكن ان تحدث

سوف نعطى نظرة عملية على التصميم الحقيقى للغة السوبرنوفا بتقنية البرمجة بدون كود بهدف تسهيل التعرف فيما بعد على المفهوم

علمنا حتى الان ان لدينا Scanner ولدينا KB ولدينا Inference engine وهذا فى اطار مهمة الـ Compiler اى لم نتدخل فى الالة الافتراضية VM

نقوم بتشغيل تقنية البرمجة بدون كود من المجموعة البرمجية الخاصة بها

post-167987-1274379968198_thumb.jpg

نقوم بفتح ملف من ملفات التصميم الخاصة بالسوبرنوفا وهى موجودة فى المسار c:\ssbuild\supernova\source

بفرض انك قمت بتحميل الاصدار الاخير من تقنية البرمجة بدون كود

post-167987-12743799893601_thumb.jpg

الملف الرئيسى للغة السوبرنوفا هو Nova.SSF نقوم بفتحه لمشاهدة الخطوات التى يقوم بها

post-167987-12743800052742_thumb.jpg

نلاحظ انه يستقبل ملف او ملفات من المستخدم

هذا الملف او الملفات قد يكون ملف شفيرة مصدرية يحمل الامتداد Nova او ملف مترجم يحمل الامتداد Star

تقوم السوبرنوفا فى البداية باستقبال الملفات وفى حالة كونها ملفات شفيرة مصدرية فانها تستدعى الـ Scanner

ويمكن فتح الـ Scanner من خلال الملف Scanner.SSF

وهو يحتوى على التالى

post-167987-12743800304008_thumb.jpg

نلاحظ ان مهمة الـ Scanner هى قراءة ملف الشفيرة المصدرية او مجموعة ملفات الشفيرة المصدرية فى حالة اكثر من ملف

يتم اهمال حالة الاحرف Case والمسافات Space و الاسطر الجديدة new lines من قبل الـ Scanner

عند قراءة حرف جديد يتم استدعاء الـ Inference engine وهو المسئول عن استخدام الـ KB لتحديد هل الـ Syntax صحيح ام لا

والان بعد هذه المعرفة بخطوات سير التنفيذ ننتقل الى الـ KB

يمكن ان تتصفحها من خلال الملف Details.SSF

ومحتواها كالتالى

post-167987-12743800511947_thumb.jpg

والان قبل ان افصل كل نقطة وكل جزء من اجزاء الـ KB التى عند التعرف عليها ستجد انها تصف اللغة بشكل مبسط

هل تم استيعاب الجزئية التى تم عرضها للتعرف على موقع الـ KB داخل اللغة ؟

وهل هناك مشكلة فى فتح ملفات اللغة باستخدام تقنية البرمجة بدون كود - ام ان كل شىء على مايرام وسهل الاستخدام ؟

والله الموفق

#81
PWCT Maker كتب:

والان قبل ان افصل كل نقطة وكل جزء من اجزاء الـ KB التى عند التعرف عليها ستجد انها تصف اللغة بشكل مبسط

هل تم استيعاب الجزئية التى تم عرضها للتعرف على موقع الـ KB داخل اللغة ؟

وهل هناك مشكلة فى فتح ملفات اللغة باستخدام تقنية البرمجة بدون كود - ام ان كل شىء على مايرام وسهل الاستخدام ؟

والله الموفق

بارك الله فيك وبارك لك ، متابع معك أخى الفاضل ويمكنك الإستمرار وقتما تشاء. فى الحقيقة انا اهتم جدا بالتفاصيل ، ولكن اهم ما يهمنى الأن هو معرفة كيفية بناء ومكونات النظام الخبير الذى تعتمد عليه حضرتك. أجمع الأن ملاحظاتى وسأرفقها كلها ان شاء الله تعالى بعد انتهاء حضرتك من هذه النقطة.

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#82

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اقتباس

ارك الله فيك وبارك لك ، متابع معك أخى الفاضل ويمكنك الإستمرار وقتما تشاء. فى الحقيقة انا اهتم جدا بالتفاصيل ، ولكن اهم ما يهمنى الأن هو معرفة كيفية بناء ومكونات النظام الخبير الذى تعتمد عليه حضرتك. أجمع الأن ملاحظاتى وسأرفقها كلها ان شاء الله تعالى بعد انتهاء حضرتك من هذه النقطة.

بارك الله فيك اخى الكريم

_________________________

انتقل الان الى تفصيل القواعد 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 - بداية ونهاية كل فئة داخل مصفوفة الكلمات لتقليل مجال البحث عند توقع كلمة من فئة معينة

وفيما يلى صور عملية توضح كيف نتصفح القواعد الخاصة بتعريف الكلمات ومستوى التحويل وماتم من اضافة معلومات لزيادة الاداء

post-167987-12745043855364_thumb.jpg

post-167987-12745044151681_thumb.jpg

post-167987-12745044359424_thumb.jpg

post-167987-1274504447051_thumb.jpg

post-167987-12745044651084_thumb.jpg

post-167987-12745044825455_thumb.jpg

اتمنى ان تكون هذه النقطة واضحة بشكل جيد حتى اتابع وانتقل الى نقطة اخرى فى الـ KB

والله الموفق

#83

مهندس محمود

بارك الله فيك وبإمكانك المتابعة

#84

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اقتباس

مهندس محمود

بارك الله فيك وبإمكانك المتابعة

الله يبارك فيك اخى الكريم

___________________________________

تشتمل ال KB على العديد من القواعد Rules مثل قواعد تعريف الـكلمات Tokens والتحويلات Transformations

وقواعد تعريف الاوامر او تعليمات اللغة Operations

ولكن جميع قواعد اللغة تتجمع وتتشكل لتصل الى صورة من الصور الخمسة التى يصنف كل امر من اوامر اللغة عليها

وقد تم وضع خمس قواعد لتشكيل اوامر اللغة لتكون وسيلة لتحسين الاداء من جانب ومنع التعارض من جانب اخر ولكى تكون اوامر اللغة متشابهة الى

حد كبير اى لوضع جميع التعليمات على صورة عدد معين من القواعد ثلاثة فوائد

1 - تحسين الاداء من خلال التنبا بالفئة التى تنتنمى اليها الكلمة التالية

2 - منع التعارض ومواجهته وذلك ايضا من خلال التنبدا بالفئة التى تنتمى اليه الكلمة

3 - ان تكون تعليمات اللغة متناغمة وقريبة من بعضها لسهولة تعلمها واستيعابها

وفيما يلى تصفح للقواعد الخمسة

SPVC

SCAVD

SDVD

SDI

SI

post-167987-12747304467254_thumb.jpg

ونلاحظ انه من خلال هذه القواعد وبالبداية ب S التى ترمز الى جملة او امر Statement يمكن لنا ان نتنبدا بالمجالات المسموح بها

بعد ذلك اذا عرفنا المجال الحالى للكلمة التى تم قرائتها

ويمكن عن طريق مفاتيح Switches نحدد المجالات التى نبحث فيها لتحسين الاداء ولمنع الكثير من التعارضات وحلها

post-167987-12747304712676_thumb.jpg

والان ناتى الى قواعد المستوى الاول من التحويل Transformation Level = 1 الخاص بالتحويل على الكلمات الانجليزية

هذه القواعد عبارة عن تحويلات يتم تنفيذها باستمرار طالما ان فى كل مرة هناك تحويلة تم تنفيذها

بمعنى يتم المرور على هذه القواعد من البداية حتى النهاية فاذا وجد النظام قاعدة يمكن تطبيقها فانه يتم تطبيقها ثم يعود ليبدا من جديد بالمرور على القواعد

من البداية وهكذا ويتم الخروج من هذه الحلقة فى حالة انه لايوجد قواعد تم تطبيقها عن المرور على جميع القواعد من البداية حتى النهاية

القواعد دى تغير مسار اللغة تماما - يمكن ان تجعل كلمات تحل محل كلمات

يمكن ايضا ان تعطى اوامر وتعليمات بشكل مخالف للقواعد الخمسة من ناحية الاستخدام ام من ناحية البناء

فان مايحدث هو تحويلات تتم اكثر من مرة حتى تعود فى النهاية لقاعدة على الشكل النهائى لاحد القواعد الخمسة

post-167987-12747305171639_thumb.jpg

بدراسة التحويلات وفهمها جيدا ممكن ان يجعلك تشعر بمتعة كبيرة

لما تعطيك من اسلوب متميز وراقى فى التحكم باللغة وقواعدها

واتمنى ممن يتابع الشرح ان يقوم بالتعرف على التحويلات وماتقوم به وكيف يتم ذلك

اتمنى ان تكون هذه النقطة واضحة للاستمرار بطرح المزيد باذن الله

هل كل شىء واضح على مايرام ام ان هناك اى شىء غامض ؟

والله الموفق

1
#85

بارك الله فيك مهندس محمود

في انتظار التالي ...

لماذا لا تقوم بتجميع كل شيء في ملف PDF (مجرد إقتراح) :happy:

#86
اقتباس

ارك الله فيك مهندس محمود

في انتظار التالي ...

لماذا لا تقوم بتجميع كل شيء في ملف PDF (مجرد إقتراح) :happy:

الفكرة جميلة - مارايك ان تتولى هذه المهمة على التوازى معى بينما يتم طرح المزيد من الشرح

انا ارفع لك الصور وانت تاخذ النص من الموضوع وتهتم بالتنسيق والمظهر الجمالى بحيث يخرج العمل على اكمل وجه

موافق اخى الكريم ؟

#87

و لا تنسى اسئلة الاخوة الكرام........ :wink:

00020309t.gif

1958_1963.gif
#88

السلام عليكم ورحمة الله

أخى الفاضل مهندس محمود

بارك الله فيك على اهتمامك وشرحك المفصل ، انا متابع حضرتك. ولكنى للأسف مشغول جدا هذه الأيام ، ولذلك فأنا اطلع على إضافات حضرتك سريعا واقوم بالخروج.

انا منتظر حتى تنتهى حضرتك تماما من هذه النقطة وسأقوم بوضع تعليقاتى مرة واحدة ان شاء الله ، وان كنت حضرتك بشرحك المسهب هذا لن تترك لى مجال للاسئلة والتعليق :)

بارك الله فيك ونفع بك ،،،

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#89
اقتباس
الفكرة جميلة - مارايك ان تتولى هذه المهمة على التوازى معى بينما يتم طرح المزيد من الشرح

انا ارفع لك الصور وانت تاخذ النص من الموضوع وتهتم بالتنسيق والمظهر الجمالى بحيث يخرج العمل على اكمل وجه

موافق اخى الكريم ؟

هذا شرف لي لكن صدقني أنا أخرج من منزلي في الخامسة والنصف وأعود حوالي السابعة والنصف وبالكاد أجد وقت للراحة ..

#90

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اقتباس

و لا تنسى اسئلة الاخوة الكرام........

باذن الله رب العالمين

اقتباس

السلام عليكم ورحمة الله

أخى الفاضل مهندس محمود

بارك الله فيك على اهتمامك وشرحك المفصل ، انا متابع حضرتك. ولكنى للأسف مشغول جدا هذه الأيام ، ولذلك فأنا اطلع على إضافات حضرتك سريعا واقوم بالخروج.

انا منتظر حتى تنتهى حضرتك تماما من هذه النقطة وسأقوم بوضع تعليقاتى مرة واحدة ان شاء الله ، وان كنت حضرتك بشرحك المسهب هذا لن تترك لى مجال للاسئلة والتعليق :)

بارك الله فيك ونفع بك ،،،

الله يبارك فيك اخى الكريم وربنا يوفقنا جميعا يارب باذن الله

اقتباس

هذا شرف لي لكن صدقني أنا أخرج من منزلي في الخامسة والنصف وأعود حوالي السابعة والنصف وبالكاد أجد وقت للراحة ..

ولايهمك اخى الكريم - وربنا يعينا جميعا يارب باذن الله

-----------------------

نتابع الان بتوضيح قواعد التحويل Transformation rules اكثر

وذلك بشرح القواعد التى تستخدم لاستقبال جملة do while لانها تتم من خلال قاعدتين يتم تنفيذهم على مرحلتين

والتوضيح كما بالصور التالية

post-167987-12750464204878_thumb.jpg

post-167987-12750464464651_thumb.jpg

هذه هى ميزة التحويلات انها تستخدم للدوران حول القواعد الاساسية

حيث ان العمليات Operations او اوامر اللغة تستند على شكل من اشكال القواعد الخمسة الاساسية

والتحويلات تستخدم لكى يكون الامر بالشكل الذى نريده ومن ثم يتم تحويله الى صورة من صور القواعد الخمسة الاساسية

والله الموفق

#91

بارك الله فيك مهندس محمود

ممكن توضح الإختصارات SI, SW, SWD, SDI, ... etc

#92
اقتباس

ممكن توضح الإختصارات 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

هل اتضحت هذه الجزئية اخى الكريم ؟

والله الموفق

#93

جزاك الله خيراً مهندس محمود

تابع

#95

كما يحلو لك لكن أنا رأيي ان تكمل علي نفس الطريقة أو تطرح الموضوع كاملاً في ملف PDF

والله الموفق

#96

السلام عليكم مهندس محمود

لماذا لا تكمل الموضوع .. لعل المانع خير

#97

الحمد الله رب العالمين انا بخير

فقط انتقلت الفترة الماضية من مصر الى السعودية لزيارة الاسرة فى جدة (انا متواجد فى جدة لمدة شهر باذن الله)

جارى استكمال الموضوع باذن الله رب العالمين

والله الموفق

#98

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

نتابع الان رحلة التعرف على 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

___________________________

اتمنى ان تكون هذه النقطة واضحة بشكل جيد حتى يتم الانتقال الى نقطة اخرى

والله الموفق

#99

ده تطبيق بسيط بالسوبرنوفا

عبارة عن سؤال - تجاوب عليه صح تظهر لك صورة + تعليق

رابط التحميل : q1.zip

post-167987-057859200 1277658773_thumb.j

post-167987-045942700 1277658781_thumb.j

والشفيرة المصدرية كالتالى

وهى الشفيرة الناتجة من بيئة تقنية البرمجة بدون كود عن طريق مكونات تدعم السوبرنوفا 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

وهذه صور لتطوير التطبيق فى بيئة تقنية البرمجة بدون كود

post-167987-042175200 1277659034_thumb.j

post-167987-047988600 1277659041_thumb.j

والله الموفق

المرفقات
sho1.JPGsho2.JPGsho3.JPGsho4.JPG
#100

بارك الله فيك مهندس محمود

هل انتهيت حتي يمكن للإخوة الكرام مناقشتك؟

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…