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

هيا نبدأ التطبيق العملي في بناء المترجمات

مغلق
بدأه Delphawi في 8 فبراير 2008 · 4 رد · 3,558 مشاهدة · في قسم التقنيات الجديدة (لإفتتاح أقسام خاصة بها لاحقا)
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

السلام عليكم إخواني الكرام ...

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

ولكن ما ساضعه من أكواد سيكون بـVB

لذا , من لديه خبرة في VB و C++ , Assembly , C# يمكه مشكورا تحويل الأكواد إلى اللغات التي يجيدها

لأكبر إفادة إن شاء الله

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

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

ويرجى مثلا ممن يريد إضافة تطبيق على درس ما , أن يضع الدرس , والقسم والجزئية التي يشرحها والمشروع مباشرة

مثل :

اقتباس
الدرس الأول

القسم الثاني

مثال عن المسح

رابط التحميل

وأرجو عدم وضع روابط لمواقع هندسة مترجمات (يمكن وضعها في موضوع فكرة إنشاء منتدى مترجمات)

ومن لن يضع مشروعا أو غيره , يفضل زر الشكر

حتى يسهل وصول الأأعضاء إن شاء الله إلى المشاريع بسهولة

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

طبعا نحن لن نبدأ بـ Classes أو Functions

كل ما سنبدأ به ونطبق عليه هي الأوامر التالية :

MsgBox

Print

تم تعديل هذه المشاركة بواسطة Ala2 VB في 8 فبراير 2008 في 21:27

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#2

المثال الأول

الدرس الأول

القسم الأول

يشرح المثال :

اقتباس

"يجب أن يقو المترجم بتحسين برنامج الدخل بطريقة ذكية"

ولكن ألم نقل أننا لا يجب أن نعدل ؟

نعم , ولكن القاعدة الأولى تعني تغيير بطريقة تغير المعنى

مثلا المستخدم كتب :

Print "A" + "B" + "C"

نحولها إلى :

Print "ABC"

ولا نحولها إلى

Print "CB" + "A"

الكود :


Text2.Text = "Print " & Mid(Text1.Text, 7, 1) & Mid(Text1.Text, 11, 1) & Mid(Text1.Text, 15, 1)
Else
Exit Sub
End If
If Left(Text1.Text, 5) = "Print" And Mid(Text1.Text, 9, 1) = "+" And Mid(Text1.Text, 13, 1) = "+" Then

شرح الكود :

في السطر الأول نتأكد أن أول 5 حروف من اليسار تكون الكلمة Print ونتأكد أن الحرف التاسع والثالث عشر هما رمز الجمع (+)

في السطر الثاني نقوم بتعديل قيمة مربع النص الثاني إلى شيفرة محسنة تبعا للاقتباس السابق

السطر الرابع , إن لم يتحقق الشرط السابق نخرج من الإجراء

Ala2_VB___Compilers_Lessons__1.rar

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#3

المثال الثاني

الدرس الأول

القسم الثاني

هذا الأمر عبارة عن برنامج يعرض رسالة من خلال مدخلاتك , مثلا , لو انت كتبت في مربع النص

msgbox Ala2VB

يعرض رسالة فيها Ala2VB

لو كتبت

msgbox Compilers

يعرض رسالة فيها Compilers

If Mid(Text1.Text, 1, 6) = "msgbox" Then

	   MsgBox Mid(Text1.Text, 7, Len(Text1.Text)), , "Msgbox"
	 Else
		 Exit Sub
	 End If

شرح الكود :

في السطر الأول نتأكد من أن أول كلمة هي msgbox

في السطر الثاني نعرض رسالة محتواها عبارة عن الجزء الأخير ابتداء من الحرف 8 إلى نهاية السلسلة النصية (باعتبار أن الحروف الستة الأولى هي حروف كلمة msgbox والحرف السابع هو مسافة)

وعنوان الرسالة هو "Msgbox"

في السطر الرابع , نخرج من الإجراء إن لم تكن الكلمة الأولى هي msgbox

Ala2_VB___Show_Msgbox.rar

تم تعديل هذه المشاركة بواسطة Ala2 VB في 8 فبراير 2008 في 23:40

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#4

المثال الثالث

الدرس الأول

القسم الثاني

يشرح المثال :

اقتباس

Noun verb adjective noun endmark

وسنحاول إن شاء الله أن نطبق هذه السلسلة من الكلمات المجردة مع قواعد الجمل للغة الإنجليزية

1 Sentence = Subject verb Object endmark

2 Subject = noun

3 Subject = Modifier noun

4 Object = noun

5 Object = Modifier noun

6 Modifier = adjective

…

من خلال التدقيق , وباستخدام القواعد أعلاه , تصبح الجملة السابقة كالتالي :

__ Sentence

1 Subject verb Object endmark

2 noun verb Object endmark

3 noun verb Modifier noun endmark

4 noun verb adjective noun endmark

لكي نفهم فيما إذا كانت الجملة "Compilers are engineered objects." هي جملة صحيحة في اللغة الإنجليزية , سنقوم أولاً بالتأكد أن كل كلمة من الجملة موجودة في اللغة الإنكليزية بعلمية بحث معجمي , ثم نقوم باستبدال كل كلمة بالصنف التركيبي لإنشاء تمثيل أكثر تجريدا لتلك الجملة , حسب القاعدة التالية :

الكود :

Dim s As Variant
Dim StrArr() As String
	StrArr() = Split(Text1.Text, " ")

		For Each s In StrArr
			If s = "Ala2" Then
				Text2.Text = Text2.Text & " Noun"
			ElseIf s = "Is" Then
				Text2.Text = Text2.Text & " Verb"
			ElseIf s = "Hero" Then
				Text2.Text = Text2.Text & " Adjective"
			Else
				Text2.Text = Text2.Text & s
			End If
		Next

شرح الكود :

في السطر الأول نعرف عن متغير لحفظ السلسلة النصية الواقعة بين مسافتين

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

السطر الثالث استعمال الدالة Split لاستخراج سلسلة نصية تقع بين سلسلتين (السلسلتين هنا هما المسافتان)

السطر الرابع استخدمنا دوارة For Each للمرور على جميع عناصر المصفوفة

السطر الخامس والسابع والتاسع للتحقق أن السلسة التي تمر عليها الدوارة الآن تساوي كلمة أخرى

(في حالة المترجمات , يجب التأكد أنها تساوي عدة كلمات)

السطر السادس والثامن والعاشر لإضافة معانيها القواعدية

السطرين العاشر والحادي عشر خاصين بمعرفة هل السلسلة الحالية لا تساوي شيئا مما سبق , حينها تنزل كما هي

أمثلة على الكود :

إدخال /

Ala2 Is Hero

إخراج /

Noun Verb Adjective

إدخال /

Is Ala2 Hero ?

إخراج /

Verb Noun Adjective ?

Ala2_VB___Compilers_Lessons__3.rar

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#5

المثال الرابع

الدرس الأول

مثال عام

يشرح المثال :

عملية ترجمة سريعة عن طريق تقسيم النص إلى قسمين , مثلاً :

"رسالة علاء عادل هو عضو في منتديات الفريق العربي للبرمجة"

القسم الأول هو "رسالة"

القسم الثاني هو "علاء عادل هو عضو في منتديات الفريق العربي للبرمجة"

وهو مثال جيد على عمل مترجم عربي

وقد صممته بلغة visual Basic.NET 2005

الكود :


If Mid(TextBox2.Text, 1, 6) = "Msgbox" Then
MsgBox(Mid(TextBox2.Text, 8))
End If
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If Mid(TextBox1.Text, 1, 5) = "رسالة" Then
MsgBox(Mid(TextBox1.Text, 7))
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

شرح الكود :

في السطر الأول نتأكد أن أول ستة حروف من مربع النص الأول = كلمة Msgbox

فإن كانت كذلك نظهر رسالة فيها بقية محتويات مربع النص

السطر الأول من الجزء الثاني من الكود نتأكد فيه أن أول خمسة حروف من مربع النص الاول = كلمة رسالة

فإن كانت كذلك نقوم بعرض رسالة فيها بقية محتويات مربع النص الثاني

مثال :

مربع النص الأول :

Msgbox ArabTeam

يظهر رسالة فيها ArabTeam

مربع النص الثاني :

رسالة علاء عادل

يظهر رسالة فيها علاء عادل

تم إرفاق المثال

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

Ala2_VB___Two_Languages_Compiler.rar

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

هذا الموضوع مغلق.

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

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

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

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

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