<?xml version="1.0" encoding="utf-8"?>
	<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>مدونة سلام</title>
		<link>http://www.salamm.com/</link>
		<language>ar-sy</language>
		<description>مدونة سلام ، مدونة شخصية تحوي مواضيع منوعة</description>
		<pubDate>Fri, 22 Feb 2008 11:00:00 GMT</pubDate>
		<generator>Notepad++</generator>
		<managingEditor>salamj@gmail.com</managingEditor>
		<webMaster>salamblog@gmail.com</webMaster>
		
		<item>
			<title>مشروع المترجمات</title>
			<link>http://www.salamm.com/7</link>
			<description>اليوم انتهيت من مشروع المترجمات (Compiler) ، قضيت 10 ساعات متواصلة في كتابة الكود ، حوالي 500 سطر جافا.&lt;br /&gt;
أعتقد أنه إنجاز جيد بالنسبة لي لعدة اعتبارات :&lt;br /&gt;
&lt;br /&gt;
- تغلبت قليلا على &lt;a href=&quot;http://www.salamm.com/18&quot; title=&quot;كسل&quot;&gt;الكسل&lt;/a&gt;.&lt;br /&gt;
- هذه أول مرة أكتب برنامج بلغة Java ، معرفتي بها ضعيفة ، سأتوسع بها فيما بعد.&lt;br /&gt;
- استخدام طريقة جديدة في الترجمة تتمثل في استخدام الـXML كمرحلة ، و استخدام المكدس Stack في التحليل و هذا ما أعجب الأستاذ &lt;img src=&quot;http://www.salamm.com/images/smiles/26.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; .&lt;br /&gt;
&lt;br /&gt;
مراحل عمل المترجم :&lt;br /&gt;
&lt;br /&gt;
1 - قراءة الكود الذي يقوم المستدم بكتابته في ملف.&lt;br /&gt;
2 - تقسيم الكود إلى مقاطع و وضعها في ملف XML .&lt;br /&gt;
3 - جلب البيانات من ملف الـ XML و تحليل كل مقطع و حفظ قائمة بالأخطاء.&lt;br /&gt;
4 - في حال عدم وجود أخطاء ، بناء برنامج java مكافئ.&lt;br /&gt;
5 - توليد ملف .class من ملف الجافا الناتج.&lt;br /&gt;
&lt;br /&gt;
بالطبع هو مترجم متخلف جدا ، لكن نظرا لضيق الوقت ، و لأن ليس بالمشروع الضخم ، هو مجرد تطبيق لبعض المفاهيم مثل طرق التحليل من أدنى لأعلى و الأساليب المستخدمة في التحقق من صحة عبارة بواسطة جدول Shift Reduce.&lt;br /&gt;
&lt;br /&gt;
اللغة التي يقبلها المترجم هي لغة بسيطة تتكون من الآتي :&lt;br /&gt;
&lt;br /&gt;
- يبدأ البرنامج بكلمة start و ينتهي بكلمة end .&lt;br /&gt;
- يعرف المتحول على أنه إما String أو int بواسطة الكلمة def مثل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;def test int;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة if  لها الشكل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;if (exp){}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة for لها الشكل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;for x  = y to z { }&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة الإدخال هي :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;input(x)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- عبارة الإخراج لها الشكل :&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span&gt;output(x)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
- تقبل اللغة حلقات for و حلقات if متداخلة.&lt;br /&gt;
&lt;br /&gt;
هذه صورة توضح الطريقة المتبعة في معالجة حلقة For ، يتم بناء مكدس أو مصفوفة تحوي في عناصرها تعابير نظامية Regular Expression كل منها يعبر عن محتوى يجب أن يكون ، تتم معالجة الجملة بحيث نقوم بتجميع الحروف حتى نصل للفراغ ثم مقارنة النص الناتج مع قمة المكدس ، إذا حصل تطابق matches ننفذ الطريقة pop التي تحذف قمة المكدس ، و في نفس الوقت نكون قد حذفنا الأحرف المشكلة للكلمة التي تم تحليلها.&lt;br /&gt;
هناك حالتان لوقوع الخطأ : &lt;br /&gt;
- في حال انتهاء العبارة و عدم انتهاء المكدس.&lt;br /&gt;
- في حال وجود حالة عدم تطابق في إحدى المراحل.&lt;br /&gt;
صورة توضيحية ( بعض الشيء ) :  اضغط على الصورة للتكبير -&lt;br /&gt;
&lt;div style=&quot;text-align:center;&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.salamm.com/pics/stack-pop.png&quot;&gt;&lt;img src=&quot;http://www.salamm.com/pics/stack-pop-small.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
بشكل عام ، كان المشروع مقبول قياسا بمدة الإنجاز و الوقت المتوفر  ولو أنه كان هناك بعض الأخطاء.&lt;br /&gt;
ما أزعجني في النهاية هو مايكروسوفت وورد 2007 ، فأنا أبغض الكتابة فيه و هذه أول مرة أستخدم الإصدار 2007 و هذا ما جعلني أبحث طويلا عن كل أمر ، لأنه كان مطلوبا أن نكتب بعض الشرح عن آلية المترجم و هذا ما كتبناه بـ 3 صفحات شديدة الاختصار.  &lt;img src=&quot;http://www.salamm.com/images/smiles/1.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt;  </description>
			<pubDate>Thu, 15 May 2008 02:27:05 +0000</pubDate>
<category>شعر</category>

			<comments>http://www.salamm.com/7#comments</comments>
			<dc:creator>salam</dc:creator>

		</item>
		
		<item>
			<title>نظام التدوين salamBlog</title>
			<link>http://www.salamm.com/7</link>
			<description>نظام التدون المستخدم هنا في مدونتي هو من برمجتي و سميته salamBlog.&lt;br /&gt;
هذه أول مدونة لي على الانترنت و كنت قد تعاملت مسبقا مع أنظمة تدوين كثيرة و لكن في النهاية قررت برمجة مدونتي بنفسي ، لماذا ؟&lt;br /&gt;
أريدها خفيفة ، سريعة التصفح ، آمنة ، لها خصوصية ، صديقة لمحركات البحث ، أفهمها جدا بحيث أتمكن دائما من تطويرها حسب رغبتي و و لأن أغلب أنظمة التدوين التي تعاملت معها كنت أرى فيها أشياء تنقصني و أشياء إضافية.&lt;br /&gt;
ما هي ميزات نظام التدوين المستخدم هنا :&lt;br /&gt;
1 - خفيف جدا.&lt;br /&gt;
2 - آمن.&lt;br /&gt;
3 - تصنيفات Tags.&lt;br /&gt;
4 - صديقة لمحركات البحث.&lt;br /&gt;
5 - إدارة عالية الديناميكية.&lt;br /&gt;
6 - سهولة تغيير التصميم و التطوير.&lt;br /&gt;
7 - مراعية للمعايير القياسية بنسبة كبيرة جدا.&lt;br /&gt;
8 - إمكانية إضافة CSS و javascript في رأس الصفحة عند إضافة موضوع بالإضافة إلى الـ keys و الـ description 
...&lt;br /&gt;
&lt;br /&gt;
نواقص سأكملها :&lt;br /&gt;
&lt;br /&gt;
1 - &lt;del&gt;RSS&lt;/del&gt; Atom&lt;br /&gt;
2 -&lt;del&gt; التعليقات ( حاليا لا يمكن التعليق و ربما لن أضيف هذه الميزة).&lt;/del&gt;&lt;br /&gt;
4 -&lt;del&gt; صور ، معرض صور خفيف ملائم.&lt;/del&gt; استخدمت فلكر.&lt;br /&gt;
5 - ما بعرف شو بيطلع معي أفكار...&lt;br /&gt;
&lt;br /&gt;
هذا النظام للتدوين ليس مفتوح المصدر إنه فقط للاستخدام الشخصي ، قد أعمل في المستقبل على تطويره أكثر و نشره كمنتج مجاني مفتوح المصدر.</description>
			<pubDate>Sat, 02 Feb 2008 00:00:00 +0000</pubDate>
<category>شعر</category>

			<comments>http://www.salamm.com/7#comments</comments>
			<dc:creator>salam</dc:creator>

		</item>
		
	</channel>
	</rss>