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

كيف ابرمج مثل ذلك البرنامج " محرر ويب "

بدأه Mahmoud Kelany في 24 يوليو 2010 · 18 رد · 1,049 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اهلا بيكم فى اجازه الصيف وتقريبا اجازه المنتدى هنا بردوا

لكن لا بأس

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

لكنى اريد منكم توضيح الفكره

لانى حاسس انها سهله ولكن بالنسبه لى الفكره غير واضحه فهى واضح منه شىء بسيط ولكن الباقى غير واضح

البرنامج قد رائيته اليوم فى منتدى صفحات الويب

من هذا الرابط /index.php?showtopic=225465

لكنى اريد ان اقوم ببرمجه مثله بالجافا على سبيل التعلم والله مش اكتر

هل من يوضح لى الفكره فى عمل مثل ذلك المحرر ؟

كيف يتم التلوين و والشغل بتاع المحرر يعنى :blink:

Software Developer
Mahmoudkelany.com


 

#3

بشكل أساسي الموضوع متعلق بالمترجمات

scanner و parser و أشياء أخرى كثيرة

لست مهتم بهذا المجال

ولا أعرف عنه الكثير

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4
محمد عرسان كتب:

اهلا محمد

اصلا بأي لغة تم ذلك البرنامج؟؟

و على كل

ممكن تساعدك هذه الصفحة http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/editorpane.html

تقريبا كدا هيا ببلغه C# او VB

لان انا وقفت على الايكونات الموجوده تحت القوائم

post-217802-045412500 1279999274_thumb.p

ظهر لى ToolStripButton

فلم بحث عنها تقريبا تنمتى لتلك اللغه

على ايه حال انا فتحت الصفحه اهووو وسوف اتفحصها ان شاء الله

وجارى النقاش وربنا يسهل باذن الله

المرفقات
g.png

Software Developer
Mahmoudkelany.com


 

#5

انا شوفت اللينك بتاعك اخى

ولكن بردوا حاسس انى مش فاهم ايه صلته بالمحرر هذا

اللغه المستخدمه هيا

vb.net

زى ما قال صاحب المووضوع

Software Developer
Mahmoudkelany.com


 

#6

ما تريده هو syntax highlighter .. هناك كثير من المكتبات في جافا بهذا الخصوص، مثلا:

https://jhighlight.dev.java.net/

http://code.google.com/p/jsyntaxpane/

أما لتطبيق ذلك بنفسك، فكما ذكر الاخ علاء عليك بعمل parse لكل ما يتم كتابته (عن طريق Thread مخصص للفحص) وتقوم بتلوين كل كلمة محجوزة في اللغه (بالطبع عليك بتخزين كل الكلمات المحجوزة لأي لغه تريد أن يدعمها هذا الHighlighter).

اذا كنت على عجلة من أمرك وتريد التركيز على المنتج النهائي فاستخدم أي مكتبة وسوف تحل الموضوع بسهولة.

أما اذا أردت التعلم فهذه فرصه جيدة..

بالتوفيق..

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#7
Wajdy Essam كتب:

ما تريده هو syntax highlighter .. هناك كثير من المكتبات في جافا بهذا الخصوص، مثلا:

https://jhighlight.dev.java.net/

http://code.google.com/p/jsyntaxpane/

أما لتطبيق ذلك بنفسك، فكما ذكر الاخ علاء عليك بعمل parse لكل ما يتم كتابته (عن طريق Thread مخصص للفحص) وتقوم بتلوين كل كلمة محجوزة في اللغه (بالطبع عليك بتخزين كل الكلمات المحجوزة لأي لغه تريد أن يدعمها هذا الHighlighter).

اذا كنت على عجلة من أمرك وتريد التركيز على المنتج النهائي فاستخدم أي مكتبة وسوف تحل الموضوع بسهولة.

أما اذا أردت التعلم فهذه فرصه جيدة..

بالتوفيق..

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

جزاكى الله خيرا جزيلا

انا اشكرك على ما عرضته من معلومات لى عن المشروعات

فعلا تقربيا معظم البرنامج هو انى اعمل تلوين للكلمات المحجوزه و جعل قائمه منسدله

اعتقد هذا الاساسى فى هذا البرنامج

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

بس سوالى

فى الجزئيه اللى حضرتك قولتها بناء على كلام الاخ علاء

لكن بجد انا مش فاهم معناها ايه او تتعمل ازاى ؟؟؟

يعنى مثال صغير كدا

اقتباس

أما لتطبيق ذلك بنفسك، فكما ذكر الاخ علاء عليك بعمل parse لكل ما يتم كتابته (عن طريق Thread مخصص للفحص) وتقوم بتلوين كل كلمة محجوزة في اللغه (بالطبع عليك بتخزين كل الكلمات المحجوزة لأي لغه تريد أن يدعمها هذا الHighlighter).

وشكرا جزيلا

Software Developer
Mahmoudkelany.com


 

#8

اخ محمود

ال Parsing هو اختيار كلمات معينة من نص بناءا على تركيب النص

مثلا يوجد XML Parser و هي منتشرة بكثرة مثل Xerces

حيث يتم تصفية صفحة ال XML من ال XML Tags و البيانات اللا مرغوب فيها

مثلا:

<Start>
<Name>
Mohammad
</Name>
</Start>

باستخدام الParser يمكنك استخرج كلمة Mohammad فقط ليتم التعامل معها لاحقا.

اما في حالتك يمكنك عمل ال Parser الخاص فيك

مثلا تفصل الكلمات بواسطة (المسافة) و تحول كل الكلمات في مصفوفة و تقارنها بقاموس الكلمات لديك لتلونها حسب مهو محفوظ لديك.

ارجو ان تكون بعض الامور قد اتضحت

تم تعديل هذه المشاركة بواسطة محمد عرسان في 26 يوليو 2010 في 23:24

#9

كيف لى ان اتعلم الـ parsing

كيف اقوم بعمل الـparsing

الخاص بى

ولدى سوال

هل يمكن لى ان افعل Thread

ويقوم هذا الThread بالبحث اثناء الكتابه

وتلوين الكلمات ؟

فهل هذا احسن من الـ parsing ام ماذا ؟

وهل يوم كتب لتعلم الـ parsing

ممكن تساعدونى

لانى حاسس انى غرقان خالص

مع انى الفكره سهله لكن صعبه بالنسبه لى فالتنفيذ

Software Developer
Mahmoudkelany.com


 

#10

يقصد بالparse تطبيق عملية معينة على نص ما للحصول على نص معين أيضا..

في حالتك ستقوم بعمل Thread يقوم بالتقاط كل كلمة يكتبها المستخدم .. ويقوم بعدها بالبحث في مصفوفة الكلمات ويقوم بتلوين تلك الكلمة اذا وجدها في المصفوفة.

الparse هنا في هذه الحالة هو استخلاص الكلمة التي يكتبها المستخدم.. مثلا كل حرف يكتبه المستخدم تقوم بادخاله في متغير String وتتوقف عن الادخال في المتغير اذا كان الحرف القادم هو space أو Enter . وبالتالي تعتبر ماهو موجود في المتغير هي الكلمة ..

الحالات الأخرى التي عليك استخلاصها هي النص الموجود في جمل الطباعه "مثل هذا" .. وهنا عليك بمعرفة متى كتب " ومتى وضع النهايه " وتقوم بتلوين النص الموجود حتى ان احتوى على مسافة..

بالنسبة للذي ذكره أخ محمد وهو الحصول على جملة معينة داخل ملف XML أو HTML وهنا يستوجب عمل parse للملف حتى تصل للمعلومة التي تريد.. لكن في حالتك هذه الparsing يكون مباشره فور الكتابة On-the Fly .

هذه الفكرة بشكل مبسط..

بالتوفيق...

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#11

إدخل قسم CS :D

http://www.antlr.org/

#12
هويدي كتب:

إدخل قسم CS :D

http://www.antlr.org/

انت قصدك علشان الكومبيلر يعنى هههههههه

لا مش للدرجه دى

بصراحه اانا كنت عاوز CS

لكن دلوقتى محتار اكتر بين IT واحتمال اكيد IT

Software Developer
Mahmoudkelany.com


 

#13

لا موش عشان الكومبايلر بس,,,

إحنا في حلوان مكنش عندنا غير IS و CS وبالتالي مقدرش أتلكم في حق ال IT ... و ع العموم في سوق العمل موش بتفرق,, بس بتفرق معاك إنت شخصيا...

#14
Wajdy Essam كتب:

يقصد بالparse تطبيق عملية معينة على نص ما للحصول على نص معين أيضا..

في حالتك ستقوم بعمل Thread يقوم بالتقاط كل كلمة يكتبها المستخدم .. ويقوم بعدها بالبحث في مصفوفة الكلمات ويقوم بتلوين تلك الكلمة اذا وجدها في المصفوفة.

الparse هنا في هذه الحالة هو استخلاص الكلمة التي يكتبها المستخدم.. مثلا كل حرف يكتبه المستخدم تقوم بادخاله في متغير String وتتوقف عن الادخال في المتغير اذا كان الحرف القادم هو space أو Enter . وبالتالي تعتبر ماهو موجود في المتغير هي الكلمة ..

الحالات الأخرى التي عليك استخلاصها هي النص الموجود في جمل الطباعه "مثل هذا" .. وهنا عليك بمعرفة متى كتب " ومتى وضع النهايه " وتقوم بتلوين النص الموجود حتى ان احتوى على مسافة..

بالنسبة للذي ذكره أخ محمد وهو الحصول على جملة معينة داخل ملف XML أو HTML وهنا يستوجب عمل parse للملف حتى تصل للمعلومة التي تريد.. لكن في حالتك هذه الparsing يكون مباشره فور الكتابة On-the Fly .

هذه الفكرة بشكل مبسط..

بالتوفيق...

معذره على عدم الرد بالامس النت فصل بعد ما رديت على الاخ هويدى :wacko:

طيب دلوقتى انا هاعمل بحث اثناء الكتابه صح ؟

ازاى اتعامل مع االكلمات حسب المسافه

يعنى اعرف انه انهى الكلام ازاى

ابحث بدوال الـ String ولا فيه طريقه تانيه

وايه هيا الحالات التانيه اللى تقصدها اخى الكريم؟؟

لم افهمك جيدا

ياه لو مثال صغنون كدا

ممكن العمليه تتضح اكتر

ان امكن

شكرا جزيلا وجزاك الله خيرا

Software Developer
Mahmoudkelany.com


 

#15

الفكرة التي لدى هي تشغيل Thread يقوم بأخذ كل حرف char يكتبه المستخدم ووضعه في متغير نصي وليكن X .. ثم اختبار اذا كان الحرف char هو حرف انهاء الكلمة (مسافة space أو سطر جديد enter) فتوقف من ادخال الحرف في الكلمة واعتبر ما هو موجود الان في المتغير X هو الكلمة وقم بالتعامل معها.. والا اذا كان الحرف char حرف عادي (ليس مسافة ولا سطر جديد) فقم باسناده الى المتغير X .. واستمر في هذا كلما يكتب المستخدم شيء ما..

التعامل مع الكلمة يتم عبر البحث في مصفوفة الكلمات المحجوزة.. فاذا وجدتها قم بتلوينها... بعد ذلك قم بعمل rest للمتغير X (بجعله متغير empty) ..حتى يستقبل الكلمة التالية.

هذه الفكرة الأولية لتلوين الكلمات المحجوزة.. أرجوا أن تكون قد اتضحت الآن.

أما الحالات الأخرى التي أقصدها مثلا تلوين النصوص التي تكون بين علامتين " و " .. وربما تحتاج لتلوين الأرقام numbers أيضا.. أيضا للأحرف بين 'A' .. أيضا ربما لل true و الfalse .. وهكذا لكل القيم التي يمكن أن توضع في أنواع المتغيرات ..

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

عندما نقول تخزين الجملة .. فهذا قد يعني أنك قد تحفظ الجملة في متغير نصي .. ولكنك أيضا ستحتاج لحفظ موقع بداية الجمله ونهايتها indexes .. لأنك ستحتاج تلوينها بعد ذلك .. وأسهل شيء هو من خلال حفظ الIndexes ومن ثم تلوين الجمله في ذلك الموقع..

بالتوفيق أخي محمود ..

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 30 يوليو 2010 في 11:38

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#16

كتابة Lexer/Parser مش بالشئ الهين خصوصا للغات البرمجة وبالإضافة لعدم وجود المعرفة الكافية للنظرية وخوارزمياتها فهيكون صعب جدا قدرتك على تنفيذ المشروع فأحسنلك تستخدم مكون جاهز

مكون اضافى http://fifesoft.com/rsyntaxtextarea/

بالإضافة لسورس jEdit متوفر فيه ال Modes وتطبيقها

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#17
Wajdy Essam كتب:

الفكرة التي لدى هي تشغيل Thread يقوم بأخذ كل حرف char يكتبه المستخدم ووضعه في متغير نصي وليكن X .. ثم اختبار اذا كان الحرف char هو حرف انهاء الكلمة (مسافة space أو سطر جديد enter) فتوقف من ادخال الحرف في الكلمة واعتبر ما هو موجود الان في المتغير X هو الكلمة وقم بالتعامل معها.. والا اذا كان الحرف char حرف عادي (ليس مسافة ولا سطر جديد) فقم باسناده الى المتغير X .. واستمر في هذا كلما يكتب المستخدم شيء ما..

التعامل مع الكلمة يتم عبر البحث في مصفوفة الكلمات المحجوزة.. فاذا وجدتها قم بتلوينها... بعد ذلك قم بعمل rest للمتغير X (بجعله متغير empty) ..حتى يستقبل الكلمة التالية.

هذه الفكرة الأولية لتلوين الكلمات المحجوزة.. أرجوا أن تكون قد اتضحت الآن.

أما الحالات الأخرى التي أقصدها مثلا تلوين النصوص التي تكون بين علامتين " و " .. وربما تحتاج لتلوين الأرقام numbers أيضا.. أيضا للأحرف بين 'A' .. أيضا ربما لل true و الfalse .. وهكذا لكل القيم التي يمكن أن توضع في أنواع المتغيرات ..

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

عندما نقول تخزين الجملة .. فهذا قد يعني أنك قد تحفظ الجملة في متغير نصي .. ولكنك أيضا ستحتاج لحفظ موقع بداية الجمله ونهايتها indexes .. لأنك ستحتاج تلوينها بعد ذلك .. وأسهل شيء هو من خلال حفظ الIndexes ومن ثم تلوين الجمله في ذلك الموقع..

بالتوفيق أخي محمود ..

تمام اتضحت الفكره

وهذا ما كنت افكر فيه فعلا

لكن لدى سوال

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

لكن اجد الـ string فارغ

استبدلته بـ StringBuffer ولكن لا فائده ايضا

وهذا الكود الذى استخدمته فى كلتا الحالتين

   private void docTextPaneKeyTyped(java.awt.event.KeyEvent evt) {
        StringBuffer x= new StringBuffer();
        x.append(evt.getKeyChar());
        if (evt.getKeyChar() == KeyEvent.VK_ENTER) {
            System.out.println(x);
            System.out.println("Done");
        }
    }

وهذ الكود الخاص بالـ String

    private void docTextPaneKeyTyped(java.awt.event.KeyEvent evt) {
        String x = "";
        x += evt.getKeyChar();

        if (evt.getKeyChar() == KeyEvent.VK_ENTER) {
            System.out.println(x);
            System.out.println("Done");
            x = "";
        }
    }

اذا اخرجت امر الطباعه للمتغير x

هذه الجمله يعنى

System.out.println(x);

خارج الكود الخاص بـ if

فانه يطبع كل حرف ادخله

لكن لا يتم اضافه الحرف الجديد على الحرف السابق

فما المشكله فى ذلك ؟

Software Developer
Mahmoudkelany.com


 

#18

محمود, دعني أسألك سؤالا...

ما الحكمه من عمل إقتباس لكل الموضوع الذي تريد الرد عليه,,, يكفي أن تتحدث إلى من تريد التوجيه الكلام إيه ... كما أنك مازلت تستخدم bold font !!

هههههه... :D

#19

ماشى اخى وجدى

هاشوفها وارد عليك لانى بهدلت الكود خالص

من بعض ما الاخ احمد ادانى لينك المكتبه دى

وانا مندمج معاها مكتبه بجد روعه ايه دا

هتلاقيها مستغرقه سنين وسنين

انا دلوقتى بستخدمها فى عمل المشروع

ربنا يسهل واضعه هنا باذن الله :)

===

ماشى يا اخ هويدى مقتبستش اهووو :)

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

انما بالنسبه للـ bold علشان اللى لابس نظاره مش نوجع عنيه ولا ايه رايك :P

احبك فالله

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 30 يوليو 2010 في 15:36

Software Developer
Mahmoudkelany.com


 

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