سؤال

والخلفية: - هناك لغات رسمية للتعبير عن لغة البرمجة معجم صالح وتركيب - مثل هذه التأكيدات (مثل العادية التعبير والقواعد الخالية من السياق) يمكن تجميعها تلقائيا إلى تحليل معجم / بناء الجملة من أجل بعض لغة البرمجة باستخدام بعض الأدوات (مثل LEX وYACC)

والأسئلة: - هل هناك مثل هذه اللغات الرسمية لتحديد دلالات لغة البرمجة؟ - هناك المجمعين لأتمتة توليد رمز للمحلل الدلالي على أساس هذه اللغات الرسمية؟ - أي موارد لقراءة بخصوص التحليل الدلالي شفرة المصدر

والملاحظات: - قد تجد سؤالي غير واقعي، أنها على ما يرام ... أنا مبتدئ إلى المجمعين؟ - من خلال التحليل الدلالي أنا حقا يعني جمع المعلومات اللازمة من الشفرة المصدرية للخطوات المقبلة التحسين رمز وجيل ... وهذا ينبغي أن تشمل نوع الفحص / الحدود ... الخ

وآمل أن أكون قدمت نفسي واضح جزيل الشكر مقدما

هل كانت مفيدة؟

المحلول

وهناك العديد من البرامج لتحديد معاني الكلمات من لغات البرمجة: دلالات معلم ب (التي تقوم بتعيين جملة في الوظائف التي حساب الدولة برنامج)؛ دلالات التشغيلية (والتي تبلغ المترجمين بناء لغتك)، دلالات التحويلية (التي تبلغ ترجمة languauge لآخر اللغة التي بعض دلالات أخرى موجودة بالفعل)، وما إلى ذلك.

وقليل جدا منهم يؤدي حاليا إلى أنظمة قابلة للاستخدام لغات البرمجة الحقيقية. واحدة من الإجابات الأخرى هنا يشير سنتور كنظام الذي يحاول القيام بذلك. <وأ href = "http://books.google.com/books؟id=JDABqGkxi_gC&dq=Peter+Mosses+Action+Semantics&printsec=frontcover&source=bl&ots=5ctTcJss24&sig=2GYHmBHSYPONOTbvirnuKoqVEb0&hl=en&ei=TYutSvz6DYykMPi6tfIN&sa=X&oi=book_result&ct=result&resnum=1#v = onepage وف = & F = كاذبة "يختلط =" نوفولو noreferrer "> دلالات العمل التي كتبها بيتر موسيس هي واحدة من محاولات أكثر جدية الأخيرة.

لأنظمة حقيقية، أكثر بدلا الإعلان أساليب خاصة في الوقت الحاضر أكثر فعالية. هذه الأنظمة inlude الذي يمكن أن يكون بناء الجملة المعجمية والنحوية فعال تعريف (كما المتغيرات من LEX وYACC)، وبناء الأشجار تلقائيا. السمة قواعد النحو تسمح للمواصفات الحسابية على الأشجار، والتي تسمح احد لتحديد بعض أنواع التحليلات، مثل جدول الرموز بناء أو مقاييس (من الناحية الفنية هل يمكن القيام دلالات معلم ب بهذه الطريقة). معظم لغات التقليدية (C، جافا، C #، كوبول، ...) كل ديها هياكل مماثلة نسبيا بشأن التحكم في التدفق و تدفق البيانات، ونتيجة لذلك يمكن للمرء أن بناء الروتينية تحليل تدفق العامة السماح لأحد أن يرشد حول هذه لغة أدبية.

وأخيرا، كنت في حاجة الى غرض التحليل الدلالي الخاص بك: ما الحقائق بالضبط هل تريد استخراج؟ تحليل ثابت متاح النظم والهجينة / أساليب كود الإجرائية يحركها نمط ل جمع لغوي، جدول الرموز، وتدفق قائع الفائدة لحساب إجابات محددة على أسئلة محددة.

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

ونظام واحد أن يتبع نهج أكثر مخصصة أعلاه هو لدينا DMS برنامج إعادة هندسة أدوات ، التي لديها أيضا تعاريف الدلالات العامة (لغوي، والجداول رمز، anlaysis تدفق البيانات) أكملت لريال مدريد لغات مثل جافا، C، C ++ وكوبول. يمكن تطبيق DMS مصدر إلى مصدر التحولات إلى ASTS مشروطة بواسطة مختلف الإجراءات لجمع الواقع، وهذا يتيح للكتلة التحول من التعليمات البرمجية بطريقة موثوقة.

نصائح أخرى

وهناك العديد من اللغات الرسمية للدلالات languauge البرمجة - نظرة على ويكيبيديا دخول للحصول على بعض مزيد من المصطلحات إلى Google. لقد فعلت ذلك لكمية صغيرة من Z في مسيرتي في وقت مبكر (التي تصل إلى الطرق ويكي الرسمي مكان آخر ممكن لبدء استكشاف). أنا أقترح طالبا في امدا المنتدى النهائي حيث الناس هناك استخدام بعض منهم، و يمكن أن تشير إلى ما لاستخدام لأي حالة استخدام لديك في الاعتبار؛ هذه الورقة يبدو مرتبطة إلى حد ما ما سألت عنه من حيث توليد المجمعين - تحتاج كل من دلالات اللغة ووصف الجهاز المستهدف لإنشاء المجمع.

وعلى وجه التحديد لتحليل ساكنة، والنظر في HTTP: //rw4.cs. uni-sb.de/~martin/pag/

ما تصفون هو بالضبط ما كان المشروع سنتور عن:

http://www-sop.inria.fr/croap/centaur /centaur.html

في الواقع، هل يمكن بعيدة جدا في وصف دلالات اللغة الخاصة بك، إلى النقطة التي كان النظام قادرا على إعطائك مترجم لتلك اللغة (وهذا عند وصفه دلالات تماما). لكن لم يكن لديك ليذهب كل في طريقه. هل يمكن أن تفعل أقل وصف عمل، ولا يزال الحصول على محرر منظم وtypechecker لجهودكم.

وعلى الرغم من أن العمل توقف في المشروع (بقدر ما استطيع ان اقول)، قد تجد مقالات مثيرة للاهتمام وتحميل في الروابط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top