لي فترة وأنا ابحث عن كيفية بناء محرر للغة
فكرة فقط يقوم بعملية التلوين للكلمات المحجوزة .
لم استطع ان افهم الأساسيات الخاصة ببناء المحررات فهل من مرجع يمكن أن اعتمد عليه .
لاحضت ان هناك محررات قد عملت بلغة #C منها Isharp Developer
لي فترة وأنا ابحث عن كيفية بناء محرر للغة
فكرة فقط يقوم بعملية التلوين للكلمات المحجوزة .
لم استطع ان افهم الأساسيات الخاصة ببناء المحررات فهل من مرجع يمكن أن اعتمد عليه .
لاحضت ان هناك محررات قد عملت بلغة #C منها Isharp Developer
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
كنت منذ فتره أريد بناء أيضا شئ مثل الـ Rich Text Box يقوم بتلوين الكلمات المحجوزه ويضع Tabs وأقواس والخ كما في الـ Editor الخاص بالـ Visual Studio. ولكن وجدت أنها عمليه غير سهله أن تصل الى مستوى كهذا الذي نراه وبهذه السرعه التي يعمل بها محرر الـ Visual Studio أو أي محرر آخر محترم.
انما لو أردت فعل شئ بسيط , فيمكن ذلك ويمكن تحسينه بعد ذلك. ابحث في أي محرك بحث عن كلمات مثل :
Color Syntax Code
وأظن أن الأخ محمد نسمان كان قد فعل شئ كهذا قبل ذلك, فلو وجد الوقت فسيسعدنا بالطبع مشاركته لنا بتجربته.
والله يا اخي معتز اني فعلاُ تعبت من البحث وكل الأدوات التي اجدها في النت هي تقوم فقط بالتعديل على أدوات موجودة مثل Rich Text Box تغير في الـ Class الخاص بها . وهذا ليس ماهوا القائم علية المحرر .
هناك العديد بالجافا ولكن ليس لدي اي معلومات في java ولا حتى في ++C كنت وجدت محرر معمول بلغة #C مفتوح المصدر لكن المشكلة هي لم افهم منه شي .
فلو كان في موقع بيشرح كيف بناء المحرر من الصفر يعني الفكرة منه كيف يتم معالجة الإدخال وكذلك معالجة الأسطر وبعد ذلك معالجة الألوان . ولو حتى الفكرة البسيطة . لننطلق منها لبناء ID متكامل . على قد الحال يعني .
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
حياك الله اخوي فواز بين اخوانك واحبائك بالنسبه لي Text editor
اذكر قبل سنه كان عندنا مادة لغات البرمجه وطلب منا الدكتور كتابة كومبايلر للغة السي بلس بلس لتأكد من عدم وجود اخطاء syntax فقط
وقسم العمل على جميع الشباب في الكلاس واذكر اني خذيت جزئية الدوال (Functions) كيف اعرف داله وكيف استدعيها وهل في over load ولازم اسم الداله
يبدأ بحرف ويجب ان لا يكون اسم الداله كلمه محجوزه وايضا يجب ان تبدأ الداله بقوس وتنتهي بقوس واذكر انني قمت بتلوين الكلمات المحجوزه باللون الأزرق
مثال 1:
int sum()
{
}
//الكود هذا صحيحمنال 2:
int sum (int 2a)
{
}
// الكود هذا غير صحيح لان اسم المتغير بدأ بحرفمنال 3:
int sum(int a,int b)
{
print(a,b);
}
// غير معرفه print الكود هذا غير صحيح لان الدالهمثال 4:
int print(int a)
{
}
int sum(int a,int b)
{
print(a,b);
}
// تاخذ باراميترواحد print الكود هذا خطأ لان الدالهستجد في المرفقات المشروع وارجو من الله العلي العظيم ان يوفقك فيما انت مقدم عليه
مع خالص التحيه وفائق الاحترام اخوك الحقباني
نشكرك يا أخ الحقباني على حبك للمساعده.
أنا أرى أن الأمور الخاصه بالتحقق من الـ Syntax هي أبسط ! فيمكن استخدام الـ Regular Expressions في ذلك. كما أيضا يمكن أن نقوم بعمل Compile كل زمن محدد لنعرف الأخطاء الحاليه ونخبر بها المطور وتكون هذه العمليه في Thead آخر له أولويه منخفضه مثلا. وأظن أن الـ Visual Basic .net كان يفعل شئ كهذا وهو عيب وميزه في نفس الوقت.
أما عمل محرر كالخاص بالـ Visual Studio ويعمل بهذه السرعه وبهذا الشكل أظنه أمر أكثر صعوبه. وبالنسبه لعمل Extend للـ Rich Text Box يا أخ فواز أظنه أمرا صحيحا لأن ليس من الجيد ان تبدأ التطوير من الصفر لتصل في النهايه الى شئ تم تطويره أصلا. فلو طورت الأشياء من الصفر فلن تنتهي من بناء هذا المحرر.
FireEdit
محرر بالـ #C وهو شبية بـ Visual Studio وهو ايضاً open sourc

http://www.dotnetfireball.net/modules/wfdo...cid=2&lid=7
http://sourceforge.net/projects/dotnetfireball/
------------------------------------
AylarSolutions.Highlight
و هذا ايضا Component يقوم بعمل Highlight للـ كود ولكن للـ ASP.NET
توجد مواقع كثيرة تستخدم هذا الـ Component منها www.csharpfriends.com
ويمكنك ان تختبر ه هنا
تم تعديل هذه المشاركة بواسطة Moudey في 7 يوليو 2006 في 08:53
أخي العزيز الحقباني شكرا أولا لك :
وعملية التحفف من صحة ما يكتب في المحرر هذه المرحلة ستكون في الأخير . وهي تمر عبر مراحل المترجمات ويجب عمل قواعد لغوية لذلك . كما نعرف في المترجمات .
ولكن أنا في المرحلة الأولى لأ اريد إلا ان اعمل text Editor أو Id فقط . وأريد أن أعرف الأساس فقط لذلك.
أخي مغتز :
المشكلة تكمن في عمل Extend للـ Ritch Text هي البطئ في المعالجة وقد جربت ذلك لكن دون فائدة . كما لا حضت ان جميع الحررات تعمل من الصفر ولا تعتمد على Componant أخرى . لذلك تجد السرعة فيها عالية جداً .
أنا معاك ان عمل الأدوات من الصفر متعب جدا لكن الحاجة قد تضطر لذلك . بسبب السرعة أيضا , لا أخفيك أنه لدي عيب وهوا اني أحب ان افهم الأساس التي تم عليها بناء مثل هذه الأتقنيات .
بحث كثير لكن دون التوصل لناتج . في المترجمات هناك مواقع تشرح الكثير من الأمور المتعلقة بها . لكن لم أجد موقع يشرح لك كيف تعمل text عادي من الصفر . حتى الفكرة ,.
وفعلاً من يتقن هذه الأشياء سيصبح عبقري .
------------
أخي Moudey
أشكرك بالبفعل هناك ادوات جيدة يمكن أن نستخدمنها لمعالجة ما نريد دون أن نتوقف في البحث عن حلها .
شكرا لك ايضا فقط أفدتني في هذه البرامج التي وضعتها .
وياريت نتشارك .جميعا في البحث عن كيفية عمل محرر على قدنا يعني مش بنفس قوة هذه المحررات . لأنه شوفت فبل فترة احد مبرمحي المحررات من الفطالحة الألمان قال جلس سنه كاملة حتى يحل مشكلة حشر الحرف في نصف النص . والعمليات المترتبة على ذلك , يعني هي فعلا معقدة . لكن لنبحث فقط نصل لنتيجة عل هذه النتيجة أن تنقلنامن المستخدمين للأدوات إلى مبرمجين لها (من باب التمني ) . نحن مبرمجين vb.net و #C فهما بنفس الفكرة .
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
أخي Moudey النسخة للبرنامج بـ vs2005
هل اجد للإصدار 2003 بالنسبة للـ dotnetfireball
ولك جزيل الشكر
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
للاسف اخي فواز لم اجد نسخة بـ 2003 هذة النسخة اصدرت قريباً ولا اعتقد انها طورت علي vs 2003
تم تعديل هذه المشاركة بواسطة Moudey في 8 يوليو 2006 في 16:58
السلام عليكم ورحمة الله وبركاته ......
لقد قرات الموضوع البارحة واعتقد انه لا يوجد عبقرية ولا يحزنون فبعد الاطلاع على موضوع ال regular expression
في ملفات ال MSDN اتضح ان الموضوع بسيط وسهل المنال ولكنه يحتاج الى فهم ال regular expression :lol:
بصراحة لقد كنت مترددا في طرح هذا الموضوع فقد كنت اريد ان اضع موضوع متكاملا حيث ان البرنامج
شكله بدائي جدااااااااااااااااا :( ولا يخدم المطلوب وهذا لانه نتيجة عمل ساعتان انما لا مشكلة .
الملف مرفق يقوم بتلوين اربع كلمات وهي :
function - as - dim - integer
الموضوع قيد التطوير ومن معه فكرة افضل فليقلها لنا حتى نستفيد :rolleyes: :rolleyes: B) .
هناك ايضا مشكلة بسيطة وهي مشكلة الاهتزاز في الصورة حيث انكم سوف تلاحظونها جليا عندما تقوموا
بتجريب الملف المرفق وذلك نتيجة تظليل الكلمات من اجل تلوينها :( :( :( .
الملف المرفق بلغة VB.Net :lol:
اخوكم Dr.Pain
مدونتي
ارسال واستقبال الكائنات عبر الشبكة
مصفوفة ادوات HTML و PHP, افكار وتلميحات
الكائنات والاحداث في PHP
كيفية عمل Array List في ال PHP
التشفير بواسطة الازاحة في PHP
كيفية عمل Backup لقاعدة بيانات MySql من PHP
وما الدنيا الا حلم كبيييييييييييييييييييييييييييير لا نستيقظ منه الا عندما نموت !!!!
لا تستخف بالموضوع يا أخي فالكود الذي وضعته لا يصلح. فسيتعطل الشخص الذي يكتب لمدة 5 دقائق من أجل تلوين الكلمات كلما كتب حرفا ! هذا اذا كان عدد الكلمات المحجوزه للغه هي 3 وعدد الأسطر الموجوده في النص 200 ! فكيف سيكون الأمر اذا كانت الكلمات المحجوزه أكثر من 100 وعدد الأسطر 500 ؟! وهذه أرقام صغيره. هذا بالاضافه الى وجود تحديات أخرى فالمحرر لا يلون الكلمات فقط فمازال يوجد تحديات وضع الكود في regions مع امكانية عمل Collapse والخ. وتحديات وضع النصوص في Quotes وتلوينها بلون مختلف حتى ولو كان النص يحتوي على كلمه محجوزه. وتحديات تحديد الأقواس ووضع الفراغات حتى تساعد على فهم الكود. وتحديات جعل المحرر صالح للعمل مع أكثر من Syntax بدون التعديل عليه الا قليلا. والكثير والكثير جدا من التحديات وأكبرهم هو جعل كل ذلك يعمل بسرعة البرق ولا يجعل الشخص الذي يكتب يتعطل ولو لحظه.اقتباسلقد قرات الموضوع البارحة واعتقد انه لا يوجد عبقرية ولا يحزنون
أتفق معك اخي معتز فيما قلت :
أخي Dr.Pain : هي المشكلة البطئ الذي تعاني منه انت حتى مع استخدام regular expression .
والسبب هوا عملية التضليل وتبديل الألوان ثم إعادة مسح التضليل وهكذا . وعلى فكرة ان قمت بالتكرار وكتابة الأحرف بشكل سريع سوف تلاقي اخطاء تضهر لك وقت التشغيل .
السبب ببساطة اننا نستخدم الدوال الخاصة بعملية إعادة الرسم على text الموجود وهذا بدورة يقوم بعمليات عدة على الـ text حتى يقوم بعملية تحديث الألوان بالنسبة للكلمات المحجوزة . وغيرة .
حقيقة :
كانت لدي فكرة وهي أنه لنفهم كيف يقوم صندوق النص text العادي بالتعامل مع الأحرف . متى يتم الإداخال متى أعرف فين موقع المؤشر وغيرة .بعد ذلك
يتم وضع جميع الأحرف في الذاكرة على شكل مصفوفات . وبالتالي عند معالجة الآلوان ومعرفة الكلمة المحجوزة من غيرها . يكون الأمر مجرد بحث سريع في مصفوفة الأحرف الموجودة في الذاكرة بحيث يحدد موقع الكلمة ونهايتها . وبعدين يتم إعادة رسم المنطقة المحددة على text الخاص بنا بالإلوان المطلوبه .
يعني وكأنة نحتاج ان نبني text من الصفر . لأننا سوف نتخكم به وفق ما نريد .
ومن خلال البرنامج FireEdit نلاحض ان text Editor مبني من الصفر . وهوا اصغر من الكود الخاص بالمحرر مفتوح المصدر #Devloper (هوا برنامج مفتوح المصدر عبارة عن ID به الـ Text Editor مفتوح المصر . ولكن يبلغ عدد اسطرة أكثر من 10 سطر . يعني دوخ لما فتهم شي منه . والمصيبة الأخرى أنه مبرمج باستخدام Full OOP ويتعامل مع مبرمجين فطاحلة في البرمجة لأنه لما شفت طريقة ترتيب الكود وعمليات التوريث وغيرها . تعقدت .
ما رأيكم لنبدا بعمل محرر نص عادي من الصفر نضع الأفكار ثم نبحث في النت عسى نلاقي برنامج او ملف pdf يشرح لنا كيف نعمل مثل هذه الأشياء .
وفعلا هي رائعة لما تنجح بعمل محرر من هذا النوع شوف القدارت البرمجية لديك كيف تتحول .
:unsure:
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
السلام عليكم جميعا
أحب أشكر الأخ فواز على طرحه لمثل هذه المواضيع ، كما لا أخفي بإعجابي الشديد باستاذي معتز شمس ، حقيقة أول ما تعلمت السي شارب كانت فكرتي أني أصمم محرر لتلوين الكلمات المحجوزة مع وضع ترقيم تلقائي للأسطر
قطعت شوط في تصميم المحرر وبعدين توقفت بسبب عدم وجود الأساس لدي لكيفية مبدأ عمل محررات النصوص
استطعت وضع ترقيم تلقائي وكمان تلوين الكلمات المحجوزة . لكن كانت المشكلة هو في بطء عملية المعالجة كل ما زاد عدد الكلمات المحجوزة وعدد الأسطر لأني استخدمت طريقة المصفوفات
عموما بعد فترة اكتشفت أنه المحررات ذات الشهرة الواسعة مثل محرر الدوت نيت وغيرها جميعها تستخدم طريقة XML
عموما هذا كتاب لبرنامج مفتوح المصدر ( محرر للسي شارب ) تجدون بداخله شرح لمعلية تلوين الكلمات المحجوزة باستخدام XML المشكلة ما عرفت كيف اربط ملف XML مع textBox أو خلافه
تفضلوا
http://www.apress.com/free/content/Dissect...Application.pdf
شكرا لك اخي CNE :
فعلا هي مشكلة تواهنا جميعاُ وهي مشكلة البطئ لماذا لاأننا لا نعلم الخوارزميات التي يتم بها أو التي هي أساس عمل المحررات:
المشكلة لا تكمن في عدد الكلمات المحجوزة . ونعم أنا معاك الكثيرمن المحررات اصبحت تستخدم Xml في عملية
بناء الكلمات المحجوزة لمرونتها في التعامل وكذلك لإمكانية جعل المحرر اكثر مرونه بمعنى أنه يمكن ان يستخدم ليكون محرر لأكثر من لغة .
أنا جربت ذلك وستخدمت xml . لكن الفكرة هي كيف التعامل مع التلوين أي ماهي الطريقة التي تم فيها رسم الألوان .
وكذلك معرفة التعليقات من نوع */ */ وغيرها . هذه العمليات جدا معقدة . بالنسبة لي الأني لا أعلم كيف تعمل . وكل ما اريده هوا الأساس لبناء محرر . ولأصح هوا كيف نبني محرر من الصفر كما يتم في المحررات . حيث اني شاهدت الكثير وقد تحدث عن ذلك في مشاركتي في الأعلى انه يتم عمل محرر نصوص أولا. ثم بعد ذلك يتم معالجة الكلمات المحجوزة وهذه المعالجات مجهولة بالنسبة لي .
فيا ريت لو حد لدية خبرة أوشاف موضوع يشارك معنا .
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
أنا أشكركم كثيراً على هذا الموضوع ،
حيث أنني مهتم جداً بهذا الموضوع ،
و لكن لأني مبتديء في البرمجة فأرجو توضيح الخطوات خطوة خطوة .
أشكركم
اللهم اني اشكو اليك ضعف قوتي و قلة حيلتي
فاغفر اللهم لي ذنوبي