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

موقع كبير جدا للمترجمات

بدأه MohamedIBrahim في 24 أبريل 2011 · 14 رد · 6,450 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

تحية للجميع

موقع www.compilers.net من أهم المواقع الخاصة ببناء المترجمات بشكل كبير

أهم الوصلات :

في الصفحة الرئيسية توجد عدة وصلات , اهمها :

People queen / اهم الباحثين في مجال المترجمات

Books study / مكتبة كبيرة لكتب بناء المترجمات

Papers study / أوراق ومقالات عديدة

Decompiling Twisted Evil / صفحة خاصة بتقنيات إعادة الترجمة , (الترجمة العكسية)

Scanner generators Idea / أمثلة على المسح

Parser generators Idea / أمثلة على التحليل

Tutorials Idea / دورات وتدريبات

Library study / المكتبة , وفيها مجموعة كتب

Grammars study / قواعد مهمة

Backend generators Idea / أمثلة على النهاية الخلفية

Compiler Compilers affraid / مجموعة من المترجمات والبرامج

Courses study / دروس تعليمية

FAQ Question / الأسئلة الشائعة

Misc jocolor / منوعات

Translators Exclamation / مترجمات

Free queen / رابط مهم جدا , وفيه الكثير الكثير من الموارد المجانية

Companies Idea / شركات

Tools Idea / أدوات

Dotnet Idea / أمثلة بتقنيات الدوت نت .NET

What is a compiler Question / ما هو المترجم

Encyclopedia study / الموسوعة

أيضا تجد العديد من الأخبار والمقالات ...

زيارة ممتعة إن شاء الله تعالى

GoodBye

#2

شكرا

#3
sameh nassr كتب:

شكرا

عفوا

GoodBye

#4

كخطوه اوليه للدخول الي عالم تصميم المترجمات

اولا فهم نظريه الاتمته

ثانيا تطبيق بعض الامثله البسيطه "برمجه" في نظريه الاتمته

ثالثا التعرف علي كيفيه تصميم ال grammar

رابعا حلول مشاكل الgrammar مثال

eliminating embiguaty

eliminating left recursion

eliminating left factoring

خامسا التعرف علي طرق تطبيق المترجمات ومن اشهرها top down recursive descent

ومن ثم بناء ال lexer و ال parser

وتوليد intermedate code

الى اخره

بعد هيك تطبيق مراحل بناء المترجم السبعه علي mini pascal grammar

بعد هيك بتصير محترف تصمم مترجمات

اهم خطوه التعرف علي نظريه الاتمته وبرمجه بعض الامثله البسيطه يعني عمليه parsing مش اكتر

اي استفسار يمكن المراسله

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

بذكر اول محاضره في تصميم المترجمات كانت اول عباره للبريفيسور "احنا بنعلمكو تصميم المترجمات عل شان تصيرو شطرين في البرمجه"

#5
sameh nassr كتب:

كخطوه اوليه للدخول الي عالم تصميم المترجمات

اولا فهم نظريه الاتمته

ثانيا تطبيق بعض الامثله البسيطه "برمجه" في نظريه الاتمته

ثالثا التعرف علي كيفيه تصميم ال grammar

رابعا حلول مشاكل الgrammar مثال

eliminating embiguaty

eliminating left recursion

eliminating left factoring

خامسا التعرف علي طرق تطبيق المترجمات ومن اشهرها top down recursive descent

ومن ثم بناء ال lexer و ال parser

وتوليد intermedate code

الى اخره

بعد هيك تطبيق مراحل بناء المترجم السبعه علي mini pascal grammar

بعد هيك بتصير محترف تصمم مترجمات

اهم خطوه التعرف علي نظريه الاتمته وبرمجه بعض الامثله البسيطه يعني عمليه parsing مش اكتر

اي استفسار يمكن المراسله

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

بذكر اول محاضره في تصميم المترجمات كانت اول عباره للبريفيسور "احنا بنعلمكو تصميم المترجمات عل شان تصيرو شطرين في البرمجه"

معذرة .. ايش الاتمته!

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#7

جميل جدا الآن فرأتها مع تحسسي لمعناها اللفظي "الأتمتة" .. تعريب ظريف أول مرة أسمع به حقيقة.

وهي بدون العجمة "نظرية التشغيل الذاتي" كما وجدتها في ويكيبيديا هنا .

شكرا لك "نظام معطل"! wacko.gif

تم تعديل هذه المشاركة بواسطة A.S Hack في 28 أبريل 2011 في 01:55

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#8

اطلع علي الكتاب الاتي لتعرف ما هي نظريه الاتمته Automata Theory

An Introductionto Formal Languages and Automata

Peter Linz

#9
sameh nassr كتب:

كخطوه اوليه للدخول الي عالم تصميم المترجمات

اولا فهم نظريه الاتمته

ثانيا تطبيق بعض الامثله البسيطه "برمجه" في نظريه الاتمته

ثالثا التعرف علي كيفيه تصميم ال grammar

رابعا حلول مشاكل الgrammar مثال

eliminating embiguaty

eliminating left recursion

eliminating left factoring

خامسا التعرف علي طرق تطبيق المترجمات ومن اشهرها top down recursive descent

ومن ثم بناء ال lexer و ال parser

وتوليد intermedate code

الى اخره

بعد هيك تطبيق مراحل بناء المترجم السبعه علي mini pascal grammar

بعد هيك بتصير محترف تصمم مترجمات

اهم خطوه التعرف علي نظريه الاتمته وبرمجه بعض الامثله البسيطه يعني عمليه parsing مش اكتر

اي استفسار يمكن المراسله

تسلم على الشرح يا غالى ونتمنى منك المزيد

sameh nassr كتب:

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

بذكر اول محاضره في تصميم المترجمات كانت اول عباره للبريفيسور "احنا بنعلمكو تصميم المترجمات عل شان تصيرو شطرين في البرمجه"

منتدى هندسة البرمجيات يندرج تحته تصميم المترجمات وايضا تصميم نظم التشغيل

لذا فضع ما تريد عن المترجمات وتصميمها هنا

GoodBye

#10
sameh nassr كتب:

اطلع علي الكتاب الاتي لتعرف ما هي نظريه الاتمته Automata Theory

An Introductionto Formal Languages and Automata

Peter Linz

نسخة pdf الكترونية من الكتاب

http://www.mediafire.com/?763ua5iu3eco6oe

GoodBye

#11

شكرا للافادة وجزاك الله خيرا

d22.jpg
#12
فوفو الأميرة كتب:

شكرا للافادة وجزاك الله خيرا

العفوا ونورتى الموضوع اختى الكريمة

GoodBye

#13

السلام عليكم

المثال الاتي يشرح طريقه top down recursive descent

اللغه الاتيه تتكون من عدد لا نهائي من حرف a متبوع بحرف واحد b علي الاقل a واحده مثال

ab

aab

aaab

aaaaaaaaaab

توضيح syntax diagram

coolarab.com-68a407bb27.jpg

قواعد اللغه grammar

A->aBb

B->aB | Ɛ

كود البرمجه وفقا لطريقه recursive descent

الطريقه الاتيه فعاله جداا وهي من افضل الطرق في تصميم المترجمات ولكن يجب ان يكون ال grammar خالي من اي مشاكل

public class Token {

	int location;
	char ch;

	public Token(int location, char ch)
	{
		this.location=location;
		this.ch=ch;	
	}

}

import java.util.ArrayList;

public class SimpleLang {

	/**
	 * @param args
	 */

	private static ArrayList<Token> list = new ArrayList<Token>();
	private static String message="";
	private static int index=0;
	private static Token nextToken=null;
    private static StringBuffer output = new StringBuffer();

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Boolean ok=lexer(new StringBuffer("aa a a ab "));

		if(ok)
		{
			A();
		}

		System.out.println(output.toString());
        System.out.println(message);
	}

	public static Boolean lexer(StringBuffer buffer)
	{
		Boolean ok=true;
		Token token=null;

		for(int i=0;i<buffer.length();i++)
		{
			if(buffer.charAt(i)=='a'||buffer.charAt(i)=='b'||buffer.charAt(i)==' ')
			{
				if(buffer.charAt(i)!=' ')
				{
					token = new Token(i, buffer.charAt(i));
					list.add(token);
				}
			}
			else
			{
				message="\"Lexer\"--> error at location "+i+", "+buffer.charAt(i)+" is not in [a,b]";
				ok=false;
				break;
			}

		}

		return ok;
	}

	public static void getNextToken()
	{
		if(list.size()!=index)
		{			
			nextToken=list.get(index);
			index++;
		}
		else
		{
			nextToken=null;
		}		
	}

	public static void match(char ch)
	{
		if(ch==nextToken.ch)
		{
			if(nextToken.ch=='a')
			{
				output.append(0);
			}
			else if(nextToken.ch=='b')
			{
				output.append(1);
			}	
			getNextToken();
		}
		else
		{
			//System.exit(0);
			System.out.println("\"Parser\"--> error at location "+nextToken.location+" "+nextToken.ch);
		}	
	}

	public static void A()
	{
		getNextToken();
		match('a');
		B();	
		match('b');	

		if(nextToken!=null)
		{
			match(' ');
		}

	}

	public static void B()
	{		
		if(nextToken.ch=='a')
		{
		   match('a');
		   B();
	    }
	}



}

الكود الاتي يحتاج الي عمليه

refactoring

وهو مكتوب في لغه الجافا

متطلبات هذه الطريق

اولا the grammar must be unambiguous

ثانيا the grammar must has no left recursion

ambiguous

A->AaA

left recursion

A->Aa

قبل البدء في المثال حاول فهم كيف رسم ال syntax diagram واشتقاق ال grammar

بعد اشتقاق ال grammar فهم ما هوا ال ambiguous وما هوا ال left recursion وتقديم حل للمشكلتين

بعد ذالك يمكنك تطبيق ال grammar

في طريقه ال recursive descent كل non terminal; تحتاج الي method or function

المثال الاتي يوضح ما هوا ال nonterminal

A->a

ال A هي nonterminal وهي تبدا في حرف كبير

ال a هي terminal

#14

في المثال السابق يقول اثناء عمليه ال parsing يقول بتحويل كل حرف a الي 0 وكل حرف b الي 1

وظيفه ال lexer تجميع ال tokens وحذف المسافات بينها وفحص التوكن هل هي متغيرات ام كلمات محجوزه

دول ال A وال B

لتمثيل ال nonterminal وعمل ال parsing

داله ال match اساسيه في عمل ال parsing

#15

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

GoodBye

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