شجرة بناء الجملة المجردة

بينما b لا يساوي صفرًا : إذا كان a أكبر من b : a := a - b وإلا : b := b - a أعد aشجرة بناء الجملة المجردة ( AST ) هي بنية بيانات تُستخدم في علوم الحاسوب لتمثيل بنية برنامج أو جزء من التعليمات البرمجية. وهي تمثيل شجري للبنية النحوية المجردة للنص (غالبًا ما يكون شفرة مصدرية ) مكتوبًا بلغة رسمية . تشير كل عقدة في الشجرة إلى بنية موجودة في النص. ويُطلق عليها أحيانًا اسم شجرة بناء الجملة فقط .
إنّ بناء الجملة "مجرد" بمعنى أنه لا يُمثّل كل التفاصيل الواردة في بناء الجملة الحقيقي، بل يُمثّل فقط التفاصيل البنيوية أو المتعلقة بالمحتوى. على سبيل المثال، تُعتبر أقواس التجميع ضمنية في بنية الشجرة، لذا لا يلزم تمثيلها كعقد منفصلة. وبالمثل، يمكن الإشارة إلى بنية نحوية مثل عبارة "إذا-شرط-ثم" بواسطة عقدة واحدة بثلاثة فروع.
هذا ما يميز أشجار بناء الجملة المجردة عن أشجار بناء الجملة الملموسة، والتي تُعرف تقليديًا بأشجار التحليل النحوي . تُبنى أشجار التحليل النحوي عادةً بواسطة محلل نحوي أثناء عملية ترجمة وتجميع شفرة المصدر . بعد بنائها، تُضاف معلومات إضافية إلى شجرة بناء الجملة المجردة من خلال معالجة لاحقة، مثل التحليل السياقي .
تُستخدم أشجار بناء الجملة المجردة أيضًا في أنظمة تحليل البرامج وتحويل البرامج .
التطبيق في المترجمات
تُعدّ أشجار بناء الجملة المجردة هياكل بيانات شائعة الاستخدام في المترجمات لتمثيل بنية شيفرة البرنامج. وعادةً ما تكون شجرة بناء الجملة المجردة نتاجًا لمرحلة تحليل بناء الجملة في المترجم. وغالبًا ما تُستخدم كتمثيل وسيط للبرنامج عبر عدة مراحل يتطلبها المترجم، ولها تأثير كبير على الناتج النهائي للمترجم.
تحفيز
يحتوي نموذج شجرة بناء الجملة المجردة (AST) على العديد من الخصائص التي تساعد في الخطوات الإضافية لعملية التجميع:
- يمكن تعديل شجرة بناء الجملة المجردة (AST) وإضافة معلومات إليها، مثل الخصائص والتعليقات التوضيحية، لكل عنصر من عناصرها. يستحيل إجراء هذا التعديل والتعليق على شفرة المصدر للبرنامج، لأنه يستلزم تغييرها.
- بالمقارنة مع شفرة المصدر ، فإن شجرة بناء الجملة المجردة (AST) لا تتضمن علامات الترقيم والفواصل غير الأساسية (الأقواس، الفواصل المنقوطة، الأقواس، إلخ).
- تحتوي شجرة بناء الجملة المجردة (AST) عادةً على معلومات إضافية حول البرنامج، نتيجةً لمراحل التحليل المتتالية التي يجريها المترجم. على سبيل المثال، قد تخزن موقع كل عنصر في شفرة المصدر، مما يسمح للمترجم بطباعة رسائل خطأ مفيدة.
تتسم اللغات بطبيعتها بالغموض . ولتجنب هذا الغموض، تُحدد لغات البرمجة عادةً باستخدام قواعد نحوية خالية من السياق (CFG). مع ذلك، توجد جوانب في لغات البرمجة لا تستطيع قواعد النحو الخالية من السياق التعبير عنها، لكنها جزء لا يتجزأ من اللغة وموثقة في مواصفاتها. هذه تفاصيل تتطلب سياقًا لتحديد صحتها وسلوكها. على سبيل المثال، إذا سمحت لغة ما بتعريف أنواع جديدة، فلا يمكن لقواعد النحو الخالية من السياق التنبؤ بأسماء هذه الأنواع ولا بكيفية استخدامها. حتى لو كانت اللغة تحتوي على مجموعة أنواع محددة مسبقًا، فإن فرض الاستخدام الصحيح يتطلب عادةً سياقًا ما. مثال آخر هو " التصنيف الديناميكي" ، حيث يمكن أن يتغير نوع العنصر تبعًا للسياق. يُعد تحميل المعاملات الزائد حالة أخرى يعتمد فيها الاستخدام الصحيح والوظيفة النهائية على السياق.
تصميم
غالباً ما يرتبط تصميم شجرة بناء الجملة المجردة (AST) ارتباطاً وثيقاً بتصميم المترجم وخصائصه المتوقعة.
تشمل المتطلبات الأساسية ما يلي:
- يجب الحفاظ على أنواع المتغيرات، وكذلك موقع كل تعريف في شفرة المصدر.
- يجب تمثيل ترتيب العبارات القابلة للتنفيذ بشكل صريح ومحدد جيدًا.
- يجب تخزين المكونات اليسرى واليمنى للعمليات الثنائية وتحديدها بشكل صحيح.
- يجب تخزين المعرفات وقيمها المخصصة لعبارات التخصيص.
يمكن استخدام هذه المتطلبات لتصميم بنية البيانات الخاصة بشجرة بناء الجملة المجردة (AST).
تتطلب بعض العمليات دائمًا عنصرين، مثل حدّي الجمع. مع ذلك، تتطلب بعض بنيات اللغة عددًا كبيرًا من العناصر الفرعية، مثل قوائم الوسائط المُمرَّرة إلى البرامج من سطر الأوامر . ونتيجةً لذلك، يجب أن تكون شجرة بناء الجملة المجردة (AST) المستخدمة لتمثيل التعليمات البرمجية المكتوبة بهذه اللغة مرنةً بما يكفي للسماح بإضافة عدد غير معروف من العناصر الفرعية بسرعة.
لدعم عملية التحقق من صحة المترجم، ينبغي أن يكون من الممكن تحويل شجرة بناء الجملة المجردة (AST) إلى شكل شفرة مصدرية. يجب أن تكون الشفرة المصدرية الناتجة مشابهةً للشفرة الأصلية في الشكل ومتطابقةً في التنفيذ عند إعادة الترجمة. تُستخدم شجرة بناء الجملة المجردة (AST) بكثافة أثناء التحليل الدلالي ، حيث يتحقق المترجم من الاستخدام الصحيح لعناصر البرنامج واللغة. كما يُنشئ المترجم جداول رموز بناءً على شجرة بناء الجملة المجردة (AST) أثناء التحليل الدلالي. يتيح اجتياز الشجرة بالكامل التحقق من صحة البرنامج.
بعد التحقق من صحة شجرة بناء الجملة المجردة (AST)، تُستخدم كأساس لتوليد الشفرة . وغالبًا ما تُستخدم هذه الشجرة لتوليد تمثيل وسيط (IR)، يُسمى أحيانًا لغة وسيطة ، وذلك لأغراض توليد الشفرة .
استخدامات أخرى
التفاضل AST
تُعرف عملية مقارنة شجرة بناء الجملة المجردة (AST)، أو اختصارًا "مقارنة الشجرة"، بحساب قائمة الاختلافات بين شجرتي بناء جملة مجردتين. [ 1 ] [ 2 ] تُسمى هذه القائمة عادةً "نص التحرير". يشير نص التحرير مباشرةً إلى شجرة بناء الجملة المجردة للبرنامج. على سبيل المثال، قد ينتج عن عملية التحرير إضافة عقدة جديدة في شجرة بناء الجملة المجردة تُمثل دالة.
الكشف عن الاستنساخ
يُعدّ AST تجريدًا قويًا لإجراء عملية الكشف عن نسخ التعليمات البرمجية . [ 3 ]
تعريف
الفنون
يتركأن تكون مجموعة من نوع ما ، فإن عدد العناصر هو زوج مرتب، ل، وتكتب أيضًا علىوبشكل أدق،.
يترككنعائلة مفهرسة من مجموعات منفصلة من المؤثرات . إذاعدد المعاملاتنقول ذلكنوعولهنوع من أنواع الجدال.
ASTs
يصلحأن تكون مجموعة منتهية من نوع ما، وأنعائلة مفهرسة من مجموعات منفصلة من المؤثرات . ليكنكنعائلة من المتغيرات المنفصلة المفهرسة.أصغر أنواع أشجار بناء الجملة المجردة ، أو AST sعائلة من المجموعات المنفصلة المفهرسة والمغلقة في ظل الشروط التالية:
- المتغيرات هي عبارة عن هياكل شجرة بناء الجملة المجردة (ASTs): إذا، ثم.
- يقوم المشغلون بدمج أنظمة AST: إذاهو عامل من نوع، وللجميع، ثم.
انظر أيضاً
- الرسم البياني الدلالي المجرد (ASG)، ويسمى أيضًا الرسم البياني للمصطلحات
- نمط مركب
- مخطط تدفق التحكم
- الرسم البياني الموجه غير الدوري (DAG)
- نموذج كائن المستند (DOM)
- شجرة التعبير
- شكل باكوس-ناور الموسع
- لغة ليسب ، وهي عائلة من اللغات المكتوبة على شكل أشجار، مع وحدات ماكرو لمعالجة أشجار التعليمات البرمجية
- شجرة التحليل ، والمعروفة أيضًا باسم شجرة بناء الجملة الملموسة
- شجرة الحل الدلالي (SRT)
- خوارزمية ساحة التحويل
- بناء الجملة (لغات البرمجة)
- جدول الرموز
- TreeDL
- مترجمات شجرة بناء الجملة المجردة
مراجع
- ↑ فلوري، بيات؛ وورش، مايكل؛ بينزجر، مارتن؛ غال، هارالد (2007). "تقطير التغييرات: تفاضل الشجرة لاستخراج تغييرات دقيقة من شفرة المصدر" . معاملات IEEE في هندسة البرمجيات . 33 (11): 725-743 . Bibcode : 2007ITSEn..33..725F . doi : 10.1109/tse.2007.70731 . ISSN 0098-5589 . S2CID 13659557 .
- ↑ فاليري، جان ريمي؛ موراندا، فلوريال؛ بلان، خافيير؛ مارتينيز، ماتياس؛ مونبيروس، مارتن (2014). "مقارنة دقيقة وشاملة لشفرة المصدر". وقائع المؤتمر الدولي التاسع والعشرين لجمعية ACM/IEEE حول هندسة البرمجيات الآلية . الصفحات 313-324 . doi : 10.1145/2642937.2642982 . ISBN 978-1-4503-3013-8.
- ↑ كوشكه، راينر؛ فالكه، رايمار؛ فرينزل، بيير (2006). "الكشف عن الاستنساخ باستخدام أشجار لواحق بناء الجملة المجردة" . المؤتمر الثالث عشر للعمل حول الهندسة العكسية لعام 2006. معهد مهندسي الكهرباء والإلكترونيات. الصفحات 253-262 . doi : 10.1109/wcre.2006.18 . ISBN 0-7695-2719-1. S2CID 6985484 .
للمزيد من القراءة
- جونز، جويل. "مصطلحات تنفيذ شجرة بناء الجملة المجردة" (ملف PDF) . مؤرشف من الأصل (ملف PDF) في 21 يوليو 2024. تم الاطلاع عليه في 9 نوفمبر 2011 .(نظرة عامة على تطبيق شجرة بناء الجملة المجردة في مختلف عائلات اللغات)
- نيامتيو، يوليان؛ فوستر، جيفري س.؛ هيكس، مايكل (17 مايو 2005). فهم تطور شفرة المصدر باستخدام مطابقة شجرة بناء الجملة المجردة . MSR'05. سانت لويس، ميزوري: ACM. CiteSeerX 10.1.1.88.5815 .
- Würsch, Michael. تحسين اكتشاف تغييرات التعليمات البرمجية المصدرية القائمة على شجرة بناء الجملة المجردة (أطروحة دبلوم).
- لوكاس، جيسون (16 أغسطس 2006). "أفكار حول شجرة بناء الجملة المجردة في Visual C++ (AST)" .
- روبرت هاربر (2016). الأسس العملية للغات البرمجة (الطبعة الثانية). مطبعة جامعة كامبريدج.
روابط خارجية
- عرض شجرة بناء الجملة المجردة (AST View ): إضافة لبرنامج Eclipse لعرض شجرة بناء الجملة المجردة في لغة جافا.
- "شجرة بناء الجملة المجردة ومعالجة كود جافا في بيئة تطوير إكليبس المتكاملة" . eclipse.org .
- "تمثيل CAST" . cs.utah.edu .
- مشروع إيلي : تحليل شجرة بناء الجملة المجردة
- "التحديث القائم على الهندسة المعمارية - ADM: نمذجة البيانات الوصفية لشجرة بناء الجملة المجردة - ASTM" .( معيار OMG ).
- مكتبة JavaParser : توفر لك مكتبة JavaParser شجرة بناء جملة مجردة لرمز Java الخاص بك. يتيح لك هيكل شجرة بناء الجملة المجردة التعامل مع رمز Java الخاص بك بطريقة برمجية سهلة.
- سبون : مكتبة لتحليل وتحويل وإعادة كتابة وترجمة شفرة جافا المصدرية. تقوم بتحليل ملفات المصدر لبناء شجرة بناء جملة مجردة (AST) مصممة جيدًا مع واجهة برمجة تطبيقات قوية للتحليل والتحويل.
- مستكشف AST : موقع ويب للمساعدة في تصور ASTs في العديد من اللغات الشائعة مثل Go و Python و Java و JavaScript.
- الأشجار (هياكل البيانات)
- اللغات الرسمية
