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

مترجم البيرل Perl

مغلق
بدأه بن العيد في 3 نوفمبر 2007 · 0 رد · 1,902 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم

الهدف من هذا الموضوع إبراز كيفية تطوير برنامج لترجمة أكواد البيرل. ليس تطوير مترجم في حد ذاته بل IDE

post-91400-1194045788_thumb.jpg

لتجربت هذا الكود لابد من تنصيب ال ActivePerl

الجزء الرئيسي من الكود هو التالي حيث قمت بتشغيل الملف التنفيذي cmd.exe وأسندت له الأمر Perl ليفهم أنه بصدد تنفيذ سكريبت بيرل.

public void Run()
	   {
		  StreamWriter txtWriter = new StreamWriter(FileName);
		  string[] textLines = CodeArea.Lines;
		  foreach (string line in textLines)
		  txtWriter.WriteLine(line);
		  txtWriter.WriteLine("$file = <STDIN>;");
		  txtWriter.Close();
		   Process process = null;
			 try
			  {
			   process = new Process();
			   process.StartInfo.WorkingDirectory = string.Format(@"C:\windows\system32\cmd.exe");
			   process.StartInfo.FileName = FileName;
			   process.StartInfo.Arguments = string.Format("Perl ");
			   process.StartInfo.CreateNoWindow = true;
			   process.Start();
			  }
			catch (Exception ex)
			{ MessageBox.Show(string.Format("Exception :{0},{1}", ex.Message, ex.StackTrace.ToString())); }
	   }

الكود الذي يكتب في ال يتم حفظه في ملف ليتم إستدعائه عند التنفيذ

الطريقة المعتادة في ترجمة السكريبت بيرل هي كما يلي:

post-91400-1194047297_thumb.jpg

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

المرحلة القادمة تتمثل في تغير وجهة المخرجات كي يتمكن المطور من تتبع الأخطاء. يوجد لذلك الدالة ReadConsoleOutput

المعرفة بالكيفية التالية

[DllImport ("kernel32.dll", EntryPoint="ReadConsoleOutput", SetLastError=true, CharSet=CharSet.Unicode)]	  
   extern static bool ReadConsoleOutput (IntPtr handle, 
										 void *buffer, 
										 Coord bsize, 
										 Coord bpos, 
										 ref SmallRect region);

يمكن أيضا الإنطلاق من التعليمات التالية:

	process.StartInfo.CreateNoWindow = false;
	process.StartInfo.RedirectStandardOutput = true;

يمكن أيضا المساهمة بعدة تطويرات أخرى. كل وإمكانياته

أذكر مجددا أن الغاية الأساسية من هذا الموضوع هو الإفادة.

PerlCompiler.zip

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

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