التحليل

التحليل النحوي ، أو تحليل التركيب ، هو عملية تحليل سلسلة من الرموز ، سواء في اللغة الطبيعية أو لغات البرمجة أو هياكل البيانات ، وفقًا لقواعد النحو الرسمي عن طريق تقسيمها إلى أجزاء. مصطلح " التحليل النحوي" مشتق من الكلمة اللاتينية pars ( orationis )، والتي تعني جزء (من الكلام) . [ 1 ]

يُستخدم هذا المصطلح بمعانٍ مختلفة قليلاً في فروع اللغويات وعلوم الحاسوب . ويُجرى تحليل الجملة التقليدي عادةً كوسيلة لفهم المعنى الدقيق للجملة أو الكلمة، وأحيانًا بمساعدة أدوات مثل مخططات الجمل . ويركز عادةً على أهمية التقسيمات النحوية كالفاعل والمسند .

في مجال اللغويات الحاسوبية، يُستخدم هذا المصطلح للإشارة إلى التحليل الرسمي الذي يُجريه الحاسوب لجملة أو سلسلة كلمات أخرى إلى مكوناتها، مما ينتج عنه شجرة تحليلية تُظهر علاقاتها النحوية ببعضها البعض، والتي قد تحتوي أيضًا على معلومات دلالية . تُنشئ بعض خوارزميات التحليل غابة تحليلية أو قائمة بأشجار التحليل من سلسلة نصية غامضة نحويًا . [ 2 ]

يُستخدم هذا المصطلح أيضًا في علم اللغة النفسي عند وصف فهم اللغة. في هذا السياق، يشير التحليل النحوي إلى الطريقة التي يحلل بها البشر الجملة أو العبارة (في اللغة المنطوقة أو المكتوبة) "من حيث المكونات النحوية، وتحديد أجزاء الكلام، والعلاقات التركيبية، وما إلى ذلك". [ 1 ] يشيع استخدام هذا المصطلح بشكل خاص عند مناقشة المؤشرات اللغوية التي تساعد المتحدثين على تفسير الجمل المعكوسة .

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

في تحليل البيانات، يُستخدم المصطلح غالبًا للإشارة إلى عملية استخراج المعلومات المطلوبة من البيانات، على سبيل المثال، إنشاء إشارة سلسلة زمنية من مستند XML .

اللغات البشرية

الأساليب التقليدية

يتضمن التحليل النحوي التقليدي، المعروف أحيانًا بتحليل الجملة ، تفكيك النص إلى أجزائه الكلامية المكونة له ، مع شرح شكل كل جزء ووظيفته وعلاقته النحوية. [ 3 ] ويُحدد ذلك إلى حد كبير من خلال دراسة تصريفات الأفعال والأسماء في اللغة، والتي قد تكون معقدة للغاية في اللغات ذات التصريفات الكثيرة . فعلى سبيل المثال، يتطلب تحليل عبارة "رجل يعض كلبًا" ملاحظة أن الاسم المفرد "رجل" هو فاعل الجملة، والفعل "يعض" هو صيغة المفرد الغائب من الفعل "يعض"، والاسم المفرد "كلب" هو مفعول به . وتُستخدم أحيانًا تقنيات مثل مخططات الجمل لتوضيح العلاقة بين عناصر الجملة.

كان التحليل النحوي في السابق عنصراً أساسياً في تدريس قواعد اللغة في جميع أنحاء العالم الناطق باللغة الإنجليزية، وكان يعتبر على نطاق واسع أساسياً لاستخدام اللغة المكتوبة وفهمها.

الأساليب الحسابية

في بعض أنظمة الترجمة الآلية ومعالجة اللغة الطبيعية ، تُحلل البرامج الحاسوبية النصوص المكتوبة باللغات البشرية. [ 4 ] يصعب على البرامج تحليل الجمل البشرية، نظرًا لوجود غموض كبير في بنية اللغة البشرية، التي تُستخدم لنقل المعنى (أو الدلالة ) ضمن نطاق واسع من الاحتمالات، ولكن بعضها فقط ذو صلة بالحالة المحددة. [ 5 ] لذا، فإن عبارة "رجل يعض كلبًا" مقابل "كلب يعض رجلًا" محددة في تفصيل واحد، ولكن في لغة أخرى قد تظهر على شكل "رجل يعض كلبًا" بالاعتماد على السياق الأوسع للتمييز بين هذين الاحتمالين، إذا كان هذا الاختلاف مهمًا بالفعل. من الصعب وضع قواعد رسمية لوصف السلوك غير الرسمي حتى وإن كان من الواضح اتباع بعض القواعد.

لتحليل بيانات اللغة الطبيعية، يجب على الباحثين أولاً الاتفاق على القواعد النحوية المستخدمة. ويتأثر اختيار التركيب النحوي باعتبارات لغوية وحاسوبية؛ فعلى سبيل المثال، تستخدم بعض أنظمة التحليل النحوي قواعد نحوية وظيفية معجمية ، ولكن من المعروف عمومًا أن التحليل النحوي لهذا النوع من القواعد النحوية يُعدّ مسألة NP-كاملة . وتُعدّ قواعد بنية العبارة الموجهة بالرأس شكلاً لغويًا آخر شائعًا في مجال التحليل النحوي، إلا أن جهودًا بحثية أخرى ركزت على أشكال أقل تعقيدًا، مثل تلك المستخدمة في بنك بيانات Penn Treebank . ويهدف التحليل النحوي السطحي إلى إيجاد حدود المكونات الرئيسية فقط، مثل العبارات الاسمية. ومن الاستراتيجيات الشائعة الأخرى لتجنب الجدل اللغوي تحليل قواعد التبعية .

تعتمد معظم المحللات اللغوية الحديثة، جزئيًا على الأقل، على الإحصاءات؛ أي أنها تعتمد على مجموعة بيانات تدريبية مُعَلَّمة مسبقًا (مُحَلَّلة يدويًا). يُمكِّن هذا النهج النظام من جمع معلومات حول تكرار ظهور التراكيب المختلفة في سياقات محددة. (انظر: التعلّم الآلي ). تشمل الأساليب المُستخدمة قواعد النحو الاحتمالية الخالية من السياق ( PCFGs ) [ 6 ] ، وخوارزمية أقصى إنتروبيا [ 7 والشبكات العصبية [ 8 ] . تستخدم معظم الأنظمة الأكثر نجاحًا الإحصاءات المعجمية (أي أنها تأخذ في الاعتبار هوية الكلمات المُستخدمة، بالإضافة إلى نوعها النحوي ). مع ذلك، فإن هذه الأنظمة عُرضة للتجاوز في التخصيص ، وتتطلب نوعًا من التنعيم لتكون فعّالة.

لا يمكن لخوارزميات تحليل اللغة الطبيعية الاعتماد على امتلاك القواعد النحوية لخصائص "مثالية" كما هو الحال مع القواعد المصممة يدويًا للغات البرمجة. وكما ذُكر سابقًا، يصعب تحليل بعض الصيغ النحوية حسابيًا؛ فعمومًا، حتى لو لم يكن التركيب المطلوب خاليًا من السياق ، يُستخدم نوع من التقريب الخالي من السياق للقواعد النحوية لإجراء تحليل أولي. غالبًا ما تعتمد الخوارزميات التي تستخدم قواعد نحوية خالية من السياق على أحد متغيرات خوارزمية CYK ، عادةً مع بعض الطرق الاستدلالية لاستبعاد التحليلات غير المحتملة لتوفير الوقت. (انظر تحليل المخططات ). مع ذلك، تُفضّل بعض الأنظمة السرعة على الدقة باستخدام، على سبيل المثال، إصدارات خطية من خوارزمية الإزاحة والاختزال . ومن التطورات الحديثة نسبيًا إعادة ترتيب التحليل، حيث يقترح المحلل عددًا كبيرًا من التحليلات، ويختار نظام أكثر تعقيدًا الخيار الأفضل. في تطبيقات فهم اللغة الطبيعية ، تُحوّل المحللات الدلالية النص إلى تمثيل لمعناه. [ 9 ]

علم اللغة النفسي

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

يُفهم علم اللغة العصبي عمومًا أن التحليل النحوي وظيفة من وظائف الذاكرة العاملة، أي أن التحليل النحوي يُستخدم للاحتفاظ بأجزاء متعددة من الجملة في الذهن في آنٍ واحد، بحيث تكون جميعها متاحة بسهولة للتحليل عند الحاجة. ولأن الذاكرة العاملة البشرية محدودة، فإن وظيفة التحليل النحوي للجملة محدودة أيضًا. [ 10 ] ويتضح ذلك من خلال أنواع مختلفة من الجمل المعقدة نحويًا والتي تُظهر مشكلات محتملة في التحليل النحوي للجمل.

أول أنواع الجمل، وربما أشهرها، التي تُشكّل تحديًا لقدرة القارئ على التحليل النحوي هي جملة "المسار المُضلِّل". تُصمَّم هذه الجمل بحيث يبدو تفسيرها الأكثر شيوعًا خاطئًا نحويًا، ولكن عند التدقيق فيها، يتضح أنها سليمة نحويًا. يصعب تحليل جمل "المسار المُضلِّل" لاحتوائها على عبارة أو كلمة لها أكثر من معنى، وغالبًا ما يكون معناها الأكثر شيوعًا جزءًا مختلفًا من الكلام. [ 11 ] على سبيل المثال، في جملة "the horse raced past the barn fell"، تُفسَّر كلمة raced في البداية على أنها فعل ماضٍ، ولكنها في هذه الجملة تعمل كجزء من عبارة وصفية. [ 12 ] وبما أن التحليل النحوي يُستخدم لتحديد أجزاء الكلام، فإن هذه الجمل تُشكِّل تحديًا لقدرة القارئ على التحليل النحوي.

هناك نوع آخر من الجمل يصعب تحليله وهو غموض الإلحاق، والذي يتضمن عبارة يمكن أن تعدل أجزاء مختلفة من الجملة، وبالتالي يمثل تحديًا في تحديد العلاقة النحوية (مثل "رأى الصبي السيدة بالتلسكوب"، حيث يمكن للعبارة الغامضة "بالتلسكوب" أن تعدل "رأى الصبي" أو "السيدة"). [ 11 ]

ثمة نوع ثالث من الجمل يُشكّل تحديًا لقدرة التحليل، وهو التضمين المركزي، حيث توضع العبارات في مركز عبارات أخرى متشابهة في التركيب (مثل: "الفأر الذي ضربه الرجل، القط الذي طارده، ركض إلى المصيدة"). وتُعدّ الجمل التي تحتوي على تضمينين مركزيين، أو ثلاثة في الحالات القصوى، صعبة التحليل الذهني، وذلك بسبب غموض العلاقة النحوية. [ 13 ]

توجد في علم اللغة العصبي نظريات متعددة تهدف إلى وصف كيفية حدوث التحليل النحوي في الدماغ. أحد هذه النماذج هو النموذج التوليدي التقليدي لمعالجة الجمل، والذي يفترض وجود وحدة مميزة داخل الدماغ مُخصصة لتحليل الجمل، تسبقها عملية التعرف على المفردات واسترجاعها، ثم تليها معالجة نحوية تُعنى بنتيجة نحوية واحدة للتحليل، ولا تعود لمراجعة هذا التفسير النحوي إلا في حال اكتشاف مشكلة محتملة. [ 14 ] أما النموذج المعاصر المقابل، فيفترض أن معالجة الجملة في الدماغ ليست نمطية، أو تحدث بتسلسل صارم. بل يفترض إمكانية النظر في عدة احتمالات نحوية مختلفة في الوقت نفسه، لأن الوصول إلى المفردات والمعالجة النحوية وتحديد المعنى تحدث بالتوازي في الدماغ. وبهذه الطريقة، تتكامل هذه العمليات. [ 15 ]

على الرغم من أن هناك الكثير مما يجب تعلمه حول علم الأعصاب الخاص بالتحليل النحوي، فقد أظهرت الدراسات أدلة على أن عدة مناطق في الدماغ قد تلعب دورًا في هذه العملية. تشمل هذه المناطق: القطب الصدغي الأمامي الأيسر، والتلفيف الجبهي السفلي الأيسر، والتلفيف الصدغي العلوي الأيسر، والتلفيف الجبهي العلوي الأيسر، والقشرة الحزامية الخلفية اليمنى، والتلفيف الزاوي الأيسر. وبالرغم من عدم إثبات ذلك بشكل قاطع، فقد أشير إلى أن هذه البنى المختلفة قد تُفضل إما تحليل بنية العبارة أو تحليل بنية التبعية، مما يعني أن أنواعًا مختلفة من التحليل النحوي قد تُعالج بطرق مختلفة لم تُفهم بعد. [ 16 ]

تحليل الخطاب

يدرس تحليل الخطاب طرق تحليل استخدام اللغة والأحداث السيميائية. ويمكن تسمية اللغة المقنعة بالبلاغة .

لغات البرمجة

محلل نحوي

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

عادةً ما تكون مدخلات المحلل اللغوي نصًا مكتوبًا بلغة برمجة معينة ، ولكنها قد تكون أيضًا نصًا بلغة طبيعية أو بيانات نصية أقل تنظيمًا، وفي هذه الحالة، تُستخرج أجزاء معينة من النص فقط، بدلًا من إنشاء شجرة تحليل. تتراوح المحللات اللغوية من دوال بسيطة جدًا مثل دالة scanf ، إلى برامج معقدة مثل واجهة المستخدم لمترجم لغة C++ أو محلل HTML لمتصفح الويب . يُعد استخدام التعابير النمطية فئة مهمة من التحليل البسيط ، حيث تُعرّف مجموعة من التعابير النمطية لغة منتظمة ، ويقوم محرك التعابير النمطية تلقائيًا بإنشاء محلل لغوي لتلك اللغة، مما يسمح بمطابقة الأنماط واستخراج النص. في سياقات أخرى، تُستخدم التعابير النمطية قبل التحليل اللغوي، كخطوة تحليل معجمي، ويستخدم المحلل اللغوي مخرجاتها لاحقًا.

يختلف استخدام المحللات اللغوية باختلاف المدخلات. ففي لغات البيانات، غالبًا ما يُستخدم المحلل اللغوي كأداة لقراءة الملفات في البرنامج، مثل قراءة نصوص HTML أو XML ؛ وهذه أمثلة على لغات الترميز . أما في لغات البرمجة ، فيُعدّ المحلل اللغوي مكونًا من مكونات المترجم أو المفسر ، حيث يقوم بتحليل الشفرة المصدرية للغة البرمجة لإنشاء تمثيل داخلي؛ ويُمثل المحلل اللغوي خطوة أساسية في واجهة المترجم . عادةً ما تُحدد لغات البرمجة باستخدام قواعد نحوية حتمية خالية من السياق، نظرًا لإمكانية كتابة محللات لغوية سريعة وفعالة لها. بالنسبة للمترجمات، يمكن إجراء التحليل اللغوي في عملية واحدة أو عدة عمليات - انظر: المترجم ذو العملية الواحدة والمترجم ذو العمليات المتعددة .

يمكن التغلب على عيوب المترجم ذي المرور الواحد إلى حد كبير بإضافة عمليات تصحيح ، حيث يُتاح نقل التعليمات البرمجية أثناء المرور الأمامي، وتُطبّق عمليات التصحيح عكسيًا عند اكتمال مقطع البرنامج الحالي. ومن الأمثلة على فائدة آلية التصحيح هذه عبارة GOTO الأمامية، حيث يكون هدف GOTO غير معروف حتى اكتمال مقطع البرنامج. في هذه الحالة، يتأخر تطبيق التصحيح حتى يتم التعرف على هدف GOTO. في المقابل، لا تتطلب عبارة GOTO العكسية تصحيحًا، لأن الموقع سيكون معروفًا مسبقًا.

تُعدّ القواعد النحوية الخالية من السياق محدودة في قدرتها على التعبير عن جميع متطلبات اللغة. والسبب، ببساطة، هو محدودية ذاكرة هذه اللغة. فلا تستطيع القاعدة النحوية تذكّر وجود بنية ما ضمن مدخلات طويلة جدًا؛ وهذا ضروري للغة التي، على سبيل المثال، يجب فيها تعريف الاسم قبل الإشارة إليه. مع ذلك، لا يمكن تحليل القواعد النحوية الأكثر قوة، التي تستطيع التعبير عن هذا القيد، بكفاءة. لذا، من الاستراتيجيات الشائعة إنشاء محلل نحوي مرن للقواعد النحوية الخالية من السياق، يقبل مجموعة فرعية من بنيات اللغة المطلوبة (أي أنه يقبل بعض البنيات غير الصالحة)؛ وفي وقت لاحق، يمكن تصفية البنيات غير المرغوب فيها في خطوة التحليل الدلالي (التحليل السياقي).

على سبيل المثال، في لغة بايثون، الكود التالي صحيح نحوياً:

x : int = 1 print ( x )

ومع ذلك، فإن الكود التالي صحيح نحويًا من حيث قواعد اللغة الخالية من السياق، مما ينتج عنه شجرة بناء جملة بنفس بنية الكود السابق، ولكنه ينتهك القاعدة الدلالية التي تتطلب تهيئة المتغيرات قبل استخدامها:

x : int = 1 print ( y )

نظرة عامة على العملية

تدفق البيانات في محلل نموذجي
تدفق البيانات في محلل نموذجي

يوضح المثال التالي الحالة الشائعة لتحليل لغة حاسوبية بمستويين من القواعد النحوية: المعجمية والنحوية.

المرحلة الأولى هي توليد الرموز، أو التحليل المعجمي ، حيث يتم تقسيم سلسلة الأحرف المدخلة إلى رموز ذات معنى محددة بواسطة قواعد نحوية من التعابير النمطية . على سبيل المثال، ينظر برنامج الآلة الحاسبة إلى مدخل مثل " 12 * (3 + 4)^2" ويقسمه إلى الرموز 12، *، (، 3، ، +، 4، )، ^، 2، حيث يمثل كل رمز منها معنى في سياق تعبير حسابي. يحتوي المحلل المعجمي على قواعد تُخبره بأن الأحرف *، +، ^، (و )تُشير إلى بداية رمز جديد، وبالتالي لن يتم توليد رموز لا معنى لها مثل " 12*" أو " ".(3

المرحلة التالية هي التحليل النحوي، وهو التحقق من أن الرموز تُشكّل تعبيرًا صحيحًا. ويتم ذلك عادةً بالرجوع إلى قواعد نحوية خالية من السياق، تُعرّف بشكلٍ متكرر المكونات التي تُشكّل التعبير، والترتيب الذي يجب أن تظهر به. مع ذلك، لا يُمكن التعبير عن جميع قواعد لغات البرمجة باستخدام القواعد النحوية الخالية من السياق وحدها، مثل صحة النوع والإعلان الصحيح عن المعرّفات. يُمكن التعبير عن هذه القواعد رسميًا باستخدام قواعد نحوية سماتية .

المرحلة الأخيرة هي التحليل الدلالي ، وهي استخلاص دلالات التعبير الذي تم التحقق منه واتخاذ الإجراء المناسب. [ 17 ] في حالة الآلة الحاسبة أو المفسر، يتمثل الإجراء في تقييم التعبير أو البرنامج؛ أما المترجم، فيقوم بتوليد نوع من التعليمات البرمجية. ويمكن أيضًا استخدام قواعد السمات لتحديد هذه الإجراءات.

أنواع المحللات

تتمثل مهمة المحلل اللغوي أساسًا في تحديد ما إذا كان من الممكن اشتقاق المدخلات من رمز البداية في القواعد النحوية، وكيفية القيام بذلك . ويمكن تحقيق ذلك بطريقتين رئيسيتين:

التحليل من أعلى إلى أسفل
يمكن النظر إلى التحليل من أعلى إلى أسفل على أنه محاولة لإيجاد الاشتقاقات اليسرى لتدفق المدخلات من خلال البحث عن أشجار التحليل باستخدام توسيع من أعلى إلى أسفل لقواعد النحو الرسمية المعطاة . تُستهلك الرموز من اليسار إلى اليمين. يُستخدم الاختيار الشامل لمعالجة الغموض عن طريق توسيع جميع الجوانب اليمنى البديلة لقواعد النحو. [ 18 ] يُعرف هذا باسم نهج الحساء البدائي. يشبه الحساء البدائي إلى حد كبير رسم مخططات الجمل، حيث يُحلل مكونات الجمل. [ 19 ]
التحليل من الأسفل إلى الأعلى
يمكن للمحلل اللغوي أن يبدأ بالمدخلات ويحاول إعادة كتابتها إلى رمز البداية. وبشكل بديهي، يحاول المحلل تحديد العناصر الأساسية، ثم العناصر التي تحتوي عليها، وهكذا. تُعد محللات LR أمثلة على المحللات التصاعدية. ويُستخدم مصطلح آخر لهذا النوع من المحللات وهو تحليل الإزاحة والاختزال .

تُعدّ محللات LL ومحللات النزول التكراري أمثلةً على المحللات التنازلية التي لا تدعم قواعد الإنتاج التكرارية اليسرى . على الرغم من الاعتقاد السائد بأنّ التطبيقات البسيطة للتحليل التنازلي لا تدعم التكرار الأيسر المباشر وغير المباشر، وقد تتطلب تعقيدًا زمنيًا ومكانيًا أُسّيًا عند تحليل قواعد نحوية خالية من السياق غامضة ، فقد طوّر فروست وحافظ وكالاغان [ 20 ] [ 21 ] خوارزميات أكثر تطورًا للتحليل التنازلي، تدعم الغموض والتكرار الأيسر في وقت متعدد الحدود، وتُنتج تمثيلات متعددة الحدود لعدد أشجار التحليل الذي قد يكون أُسّيًا. تستطيع خوارزميتهم إنتاج كلٍّ من الاشتقاقات اليسرى واليمنى للمدخلات بالنسبة لقواعد نحوية خالية من السياق مُعطاة .

يُعدّ التمييز بين المُحلِّلات النحوية، سواءً أكانت تُولِّد اشتقاقًا يساريًا أم اشتقاقًا يمينيًا (انظر قواعد اللغة الخالية من السياق )، تمييزًا هامًا. تُولِّد مُحلِّلات LL اشتقاقًا يساريًا ، بينما تُولِّد مُحلِّلات LR اشتقاقًا يمينيًا (وإن كان ذلك عادةً بالعكس). [ 18 ]

بعضتم تصميم خوارزميات التحليل الرسومي للغات البرمجة المرئية. [ 22 ] [ 23 ] وتعتمد محللات اللغات المرئية أحيانًا علىقواعد الرسم البياني. [ 24 ]

تم استخدام خوارزميات التحليل التكيفي لإنشاء واجهات مستخدم للغة الطبيعية "ذاتية التوسع" . [ 25 ]

تطبيق

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

أساليب بديلة لتنفيذ المحلل اللغوي:

  • تستدعي محللات الدفع معالجات مُسجلة ( وظائف رد نداء ) بمجرد أن يكتشف المحلل رموزًا ذات صلة في دفق الإدخال. وقد يتجاهل محلل الدفع أجزاءً من الإدخال غير ذات صلة (مثال على ذلك كلمة Expat ).
  • محللات السحب ، مثل المحللات التي تستخدمها عادةً واجهات المترجمات الأمامية عن طريق "سحب" نص الإدخال.
  • المحللات التزايدية (مثل محللات المخططات التزايدية ) التي لا تحتاج إلى إعادة تحليل الملف بالكامل عند قيام المستخدم بتحرير نص الملف.
  • المحللات النشطة مقابل المحللات السلبية [ 26 ] [ 27 ]

برنامج تطوير المحلل اللغوي

تتضمن بعض أدوات تطوير المحلل اللغوي المعروفة ما يلي:

نظرة مستقبلية

برنامج مكتوب بلغة C لا يمكن تحليله باستخدام أقل من رمزين للتنبؤ المسبق. أعلى: مقتطف من قواعد لغة C. [ 28 ] أسفل: محلل نحوي قام بتحليل الرموز " " وهو على وشك اختيار قاعدة لاستنتاج Stmt . بالنظر فقط إلى رمز التنبؤ المسبق الأول " "، لا يستطيع المحلل تحديد أي من البديلين يختار لـ Stmt ؛ يتطلب الخيار الثاني النظر إلى الرمز الثاني.intv;main(){v

تحدد خاصية "التوقع المسبق" الحد الأقصى للرموز الواردة التي يمكن للمحلل اللغوي استخدامها لتحديد القاعدة التي يجب تطبيقها. وتكتسب هذه الخاصية أهمية خاصة في محللات LL و LR و LALR ، حيث يُشار إليها غالبًا بشكل صريح بإلحاقها باسم الخوارزمية بين قوسين، مثل LALR(1).

تُعرَّف معظم لغات البرمجة ، وهي الهدف الرئيسي للمحللات اللغوية، بدقة بحيث يمكن لمحلل لغوي ذي نطاق بحث محدود، عادةً واحد، تحليلها، لأن المحللات اللغوية ذات نطاق البحث المحدود غالبًا ما تكون أكثر كفاءة. وقد طرأ تغيير هام على هذا التوجه في عام 1990 عندما ابتكر تيرينس بار برنامج ANTLR لأطروحته للدكتوراه، وهو مولد محللات لغوية فعالة من نوع LL( k )، حيث k قيمة ثابتة.

عادةً ما يكون لدى محللات LR عدد قليل من الإجراءات بعد رؤية كل رمز مميز. وهي: الإزاحة (إضافة هذا الرمز المميز إلى المكدس للاختزال لاحقًا)، والاختزال (إزالة الرموز المميزة من المكدس وتكوين بنية نحوية)، والإنهاء، والخطأ (لا توجد قاعدة معروفة تنطبق)، أو التعارض (لا يعرف ما إذا كان يجب الإزاحة أو الاختزال).

تتمتع تقنية التطلع المسبق بميزتين.

  • يساعد ذلك المحلل اللغوي على اتخاذ الإجراء الصحيح في حالة وجود تعارضات. على سبيل المثال، تحليل عبارة if في حالة وجود عبارة else.
  • يُزيل هذا الأسلوب العديد من الحالات المُكررة ويُخفف عبء استخدام مكدس إضافي. سيحتوي مُحلل لغة AC غير المُعتمد على التنبؤ على حوالي 10000 حالة، بينما سيحتوي مُحلل لغة AC المُعتمد على التنبؤ على حوالي 300 حالة.

مثال: تحليل التعبير 1 + 2 * 3

مجموعة قواعد تحليل التعبيرات (وتسمى القواعد النحوية) هي كما يلي:
القاعدة 1:E → E + Eالتعبير هو مجموع تعبيرين.
القاعدة الثانية:E → E * Eالتعبير هو نتاج تعبيرين.
القاعدة 3:E → رقمالتعبير هو رقم بسيط
القاعدة الرابعة:علامة الجمع (+) لها أولوية أقل من علامة النجمة (*).

تُعطي معظم لغات البرمجة (باستثناء بعض اللغات مثل APL وSmalltalk) والصيغ الجبرية أولوية أعلى للضرب على الجمع، وفي هذه الحالة يكون التفسير الصحيح للمثال أعلاه هو 1 + (2 × 3) . لاحظ أن القاعدة الرابعة أعلاه هي قاعدة دلالية. من الممكن إعادة كتابة القواعد النحوية لدمجها في بناء الجملة. مع ذلك، لا يمكن ترجمة جميع هذه القواعد إلى بناء جملة.

إجراءات محلل بسيطة بدون استباق

المدخلات الأولية = [1، +، 2، *، 3]

  1. انقل القيمة "1" من المدخلات إلى المكدس (استعدادًا للقاعدة 3). المدخلات = [+, 2, *, 3] المكدس = [1]
  2. يُختزل الرقم "1" إلى التعبير "E" بناءً على القاعدة 3. المكدس = [E]
  3. انقل علامة "+" إلى المكدس من المدخلات (استعدادًا للقاعدة 1). المدخلات = [2، *، 3] المكدس = [E، +]
  4. انقل القيمة "2" من المدخلات إلى المكدس (استعدادًا للقاعدة 3). المدخلات = [*, 3] المكدس = [E, +, 2]
  5. اختزل عنصر المكدس "2" إلى التعبير "E" بناءً على القاعدة 3. المكدس = [E, +, E]
  6. قلل عناصر المكدس [E, +, E] والمدخل الجديد "E" إلى "E" بناءً على القاعدة 1. المكدس = [E]
  7. انقل "*" إلى المكدس من المدخلات (استعدادًا للقاعدة 2). المدخلات = [3] المكدس = [E,*]
  8. انقل القيمة "3" من المدخلات إلى المكدس (استعدادًا للقاعدة 3). المدخلات = [] (فارغة) المكدس = [E, *, 3]
  9. اختزل عنصر المكدس "3" إلى التعبير "E" بناءً على القاعدة 3. المكدس = [E, *, E]
  10. قلل عناصر المكدس [E, *, E] والمدخل الجديد "E" إلى "E" بناءً على القاعدة 2. المكدس = [E]

إن شجرة التحليل والرمز الناتج عنها غير صحيحين وفقًا لدلالات اللغة.

لتحليل البيانات بشكل صحيح دون استخدام خاصية التوقع المسبق، هناك ثلاثة حلول:

  • يتعين على المستخدم وضع التعبيرات بين قوسين. وهذا غالباً ليس حلاً عملياً.
  • يحتاج المحلل اللغوي إلى منطق أكثر دقة للتراجع وإعادة المحاولة كلما تم انتهاك قاعدة أو لم تكتمل. ويتم اتباع أسلوب مماثل في المحللات اللغوية LL.
  • بدلاً من ذلك، يحتاج المحلل النحوي أو القواعد إلى منطق إضافي لتأخير الاختزال، بحيث يُختزل فقط عندما يكون متأكدًا تمامًا من القاعدة التي يجب اختزالها أولاً. تُستخدم هذه الطريقة في محللات LR. تُحلل هذه الطريقة التعبير بشكل صحيح، ولكن مع عدد أكبر من الحالات وعمق مكدس أكبر.
إجراءات محلل التوقع
  1. قم بنقل العنصر رقم 1 إلى المكدس عند إدخال العنصر رقم 1 تحسباً للقاعدة 3. لن يتم تقليله فوراً.
  2. اختزل العنصر الأول من المكدس إلى تعبير بسيط عند إدخال + بناءً على القاعدة 3. التوقع هو +، لذا فنحن على المسار إلى E +، وبالتالي يمكننا اختزال المكدس إلى E.
  3. قم بنقل + إلى المكدس عند إدخال + تحسباً للقاعدة 1.
  4. قم بنقل العنصر رقم 2 إلى المكدس عند إدخال العنصر رقم 2 تحسباً للقاعدة رقم 3.
  5. يُختزل العنصر الثاني من المكدس إلى تعبير على المدخل * بناءً على القاعدة 3. يتوقع عنصر التوقع * التعبير E فقط قبله.
  6. الآن، تحتوي المكدسة على E + E، وما زال المدخل هو *. أمامها خياران: إما الإزاحة بناءً على القاعدة 2 أو الاختزال بناءً على القاعدة 1. بما أن * لها أسبقية أعلى من + بناءً على القاعدة 4، فإننا ننقل * إلى المكدسة تحسبًا للقاعدة 2.
  7. قم بنقل العنصر رقم 3 إلى المكدس عند إدخال العنصر رقم 3 تحسباً للقاعدة رقم 3.
  8. قم بتقليص العنصر الثالث في المكدس إلى تعبير بعد رؤية نهاية الإدخال بناءً على القاعدة 3.
  9. قم بتقليل عناصر المجموعة E * E إلى E بناءً على القاعدة 2.
  10. قم بتقليل عناصر المجموعة E + E إلى E بناءً على القاعدة 1.

شجرة التحليل الناتجة صحيحة وأكثر كفاءة من محللات اللغة التي لا تعتمد على التنبؤ المسبق. هذه هي الاستراتيجية المتبعة في محللات LALR .

قائمة خوارزميات التحليل اللغوي

انظر أيضاً

مراجع

  1. 1 2 "Parse" . dictionary.reference.com . تم الاطلاع عليه بتاريخ 27 نوفمبر 2010 .
  2. ماسارو توميتا (6 ديسمبر 2012). تحليل LR المعمم . سبرينغر ساينس آند بيزنس ميديا. ISBN 978-1-4615-4034-2.
  3. "القواعد والإنشاء" . مؤرشف من الأصل بتاريخ 2016-12-01 . تم الاطلاع عليه بتاريخ 2012-11-24 .
  4. ^ كريستوفر د. مانينغ. كريستوفر د. مانينغ؛ هينريش شوتز (1999). أسس معالجة اللغات الطبيعية الإحصائية . مطبعة معهد ماساتشوستس للتكنولوجيا. رقم ISBN 978-0-262-13360-9.
  5. جورافسكي، دانيال (1996). "نموذج احتمالي للوصول المعجمي والنحوي وإزالة الغموض". العلوم المعرفية . 20 (2): 137-194 . CiteSeerX 10.1.1.150.5711 . doi : 10.1207/s15516709cog2002_1 . 
  6. كلاين، دان، وكريستوفر د. مانينغ. " التحليل النحوي غير المعجمي الدقيق ". وقائع الاجتماع السنوي الحادي والأربعين لجمعية اللغويات الحاسوبية - المجلد 1. جمعية اللغويات الحاسوبية، 2003.
  7. شارنياك، يوجين. " محلل نحوي مستوحى من مبدأ أقصى إنتروبيا ". مؤرشف بتاريخ 1 أبريل 2019 في أرشيف الإنترنت . وقائع المؤتمر الأول لفرع أمريكا الشمالية لجمعية اللغويات الحاسوبية. جمعية اللغويات الحاسوبية، 2000.
  8. تشين، دانكي، وكريستوفر مانينغ. " محلل تبعية سريع ودقيق باستخدام الشبكات العصبية ". وقائع مؤتمر 2014 حول الأساليب التجريبية في معالجة اللغة الطبيعية (EMNLP). 2014.
  9. جيا، روبن؛ ليانغ، بيرسي (2016-06-11). "إعادة تركيب البيانات للتحليل الدلالي العصبي". arXiv : 1606.03622 [ cs.CL ].
  10. ساندرا هـ. فوس، توماس س. غونتر، هربرت شريفيرز، وأنجيلا د. فريديريتشي (2001) التحليل النحوي والذاكرة العاملة: تأثيرات التعقيد النحوي، ومدى القراءة، والحمل المتزامن، اللغة والعمليات المعرفية، 16:1، 65-103، DOI: 10.1080/01690960042000085
  11. 1 2 بريتشيت، ب. ل. (1988). ظواهر مسار الحديقة والأساس النحوي لمعالجة اللغة. اللغة، 64(3)، 539-576. https://doi.org/10.2307/414532
  12. توماس جي بيفر (1970). الأساس المعرفي للبنى اللغوية . OCLC 43300456 . 
  13. كارلسون، ف. (2010). قيود الذاكرة العاملة على تضمين المراكز المتعددة. وقائع الاجتماع السنوي لجمعية العلوم المعرفية، 32. تم الاسترجاع من https://escholarship.org/uc/item/4j00v1j2
  14. فيريرا، ف.، وكليفتون، س. (1986). استقلالية المعالجة النحوية. مجلة الذاكرة واللغة، 25(3)، 348-368. https://doi.org/10.1016/0749-596X(86)90006-9
  15. أطلس، جيه دي (1997). حول نمطية معالجة الجملة: العمومية الدلالية ولغة الفكر. اللغة والتصور، 213-214.
  16. لوبوبولو، أليساندرو، فان دن بوش، أنتال، بيترسون، كارل ماغنوس، ورويل م. ويليمز؛ تمييز العمليات النحوية في الدماغ: التبعية وتحليل بنية العبارة. علم الأحياء العصبي للغة 2021؛ 2 (1): 152-175. doi: https://doi.org/10.1162/nol_a_00029
  17. بيرانت، جوناثان، وبيرسي ليانغ. " التحليل الدلالي عبر إعادة الصياغة ". وقائع الاجتماع السنوي الثاني والخمسين لجمعية اللغويات الحاسوبية (المجلد 1: الأوراق الطويلة). 2014.
  18. 1 2 Aho, AV, Sethi, R. and Ullman, JD (1986) "المترجمات: المبادئ والتقنيات والأدوات." Addison-Wesley Longman Publishing Co., Inc. بوسطن، ماساتشوستس، الولايات المتحدة الأمريكية.
  19. سيكل، كلاس (1997). مخططات التحليل النحوي : إطار عمل لتحديد وتحليل خوارزميات التحليل النحوي . برلين: سبرينغر. ISBN  9783642605413. OCLC 606012644 . 
  20. Frost, R., Hafiz, R. and Callaghan, P. (2007) " التحليل النحوي المعياري والفعال من أعلى إلى أسفل للقواعد النحوية اليسارية الغامضة المؤرشفة في 2018-08-22 على Wayback Machine ." ورشة العمل الدولية العاشرة حول تقنيات التحليل النحوي (IWPT)، ACL-SIGPARSE ، الصفحات: 109 - 120، يونيو 2007، براغ.
  21. Frost, R., Hafiz, R. and Callaghan, P. (2008) " مُركِّبات المُحلِّل النحوي للقواعد النحوية اليسارية الغامضة ." الندوة الدولية العاشرة حول الجوانب العملية للغات التصريحية (PADL)، ACM-SIGPLAN ، المجلد 4902/2008، الصفحات: 167 - 181، يناير 2008، سان فرانسيسكو.
  22. ريكرز، جان، وآندي شور. " تعريف وتحليل اللغات المرئية باستخدام قواعد الرسم البياني الطبقية ." مجلة اللغات المرئية والحوسبة 8.1 (1997): 27-55.
  23. ريكرز، جان، و أ. شور. " نهج قواعد الرسم البياني للتحليل الرسومي ". وقائع المؤتمر الدولي الحادي عشر لـ IEEE حول اللغات المرئية. IEEE، 1995.
  24. تشانغ، دا-كيان، كانغ تشانغ، وجيانونغ كاو. " صيغة قواعد الرسم البياني الحساسة للسياق لتحديد اللغات المرئية ." مجلة الكمبيوتر 44.3 (2001): 186-200.
  25. جيل فين ليمان (6 ديسمبر 2012). التحليل التكيفي: واجهات اللغة الطبيعية ذاتية التوسع . سبرينغر ساينس آند بيزنس ميديا. ISBN 978-1-4615-3622-2.
  26. باتريك بلاكبيرن وكريستينا ستريجنيتز. "تقنيات معالجة اللغة الطبيعية في برولوج" .
  27. سونغ-تشون تشو. "خوارزميات التحليل الكلاسيكية" .
  28. مقتبس من برايان دبليو. كيرنيغان ودينيس إم. ريتشي (أبريل 1988). لغة البرمجة سي . سلسلة برنتيس هول للبرمجيات ( الطبعة الثانية). إنجلوود كليفس/نيوجيرسي: برنتيس هول. ISBN  0131103628.(الملحق أ.13 "القواعد"، ص.193 وما بعدها)

للمزيد من القراءة