گرامر پیوست نوعی دستور زبان رسمی است . برای توصیف نحو زبانها به صورت عمده زبانهای کامپیوتری است ، با استفاده از رویکردی بر اساس اینکه چگونه زبان طبیعی صرف میشود. [۱]
قواعد دستوری یک گرامر پیوستی، قواعد دستور زبان مستقل از متن است، با این تفاوت که بخشهای خاصی در نماد های غیر پایانه ( پیوستها ) به عنوان آرگومان استفاده میشوند. اگر یک پیوست چندین بار در یک قانون اتفاق بیفتد، مقدار آن باید مطابقت داشته باشد ، یعنی باید در همه جا یکسان باشد. در برخی از انواع گرامر پیوست، روابط پیچیده تری بین مقادیر پیوست امکان پذیر است.
ما می توانیم یک قطعه بسیار ساده از زبان انگلیسی را به روش زیر توصیف کنیم
این دستور زبان مستقل از متن جملات ساده ای را توصیف میکند مانند:
با اسامی و افعال بیشتر و قوانین بیشتر برای معرفی بخش های دیگر گفتار، طیف وسیعی از جملات انگلیسی را می توان توصیف کرد. بنابراین این یک رویکرد امیدوارکننده برای توصیف نحو زبان انگلیسی است.
با این حال، دستور زبان داده شده جملاتی مانند زیر را توصیف میکنند:
این جملات اشتباه هستند: در زبان انگلیسی فاعل و فعل دارای یک عدد دستوری هستند که باید مطابقت داشته باشند.
گرامر پیوستی می تواند مستقیماً چنین چیزی را بیان کند:
این دستور زبان فقط جملات صحیح انگلیسی را توصیف می کند، اگرچه می توان استدلال کرد که:
هنوز نادرست است و در عوض باید بخوانید:
اگر ابزار توصیف روابط بین مقادیر مختلف پیوست به اندازه کافی قدرتمند باشد، میتوان آن را با استفاده از پیوست ترکیب کرد. همانطور که در بالا ذکر شد، این ابزارها به نوع گرامر پیوستی انتخاب شده بستگی دارد.
در سادهترین نوع از گرامر پیوست، پیوست ها فقط میتوانند مقادیری را از یک دامنه متناهی بگیرند و مقادیر آنها مانند مثالها فقط از طریق توافق و قانون میتوانند با هم مرتبط شوند. با استفاده از این روش، پیوست ها فشردگی گرامرها را افزایش می دهند، اما قدرت بیانی را اضافه نمی کنند.
رویکرد دیگر این است که به پیوستها اجازه دهیم رشتههای دلخواه را بهعنوان مقادیر بگیرند و اجازه دهیم از ترکیب پیوستها در قوانین استفاده کنند. محدوده مقادیر مجاز برای پیوست ها را می توان با گرامرهای مستقل از متن توصیف کرد. این امر تعریف رسمی گرامرهای دو سطحی را ایجاد می کند که به گرامرهای Van Wijngaarden یا گرامرهای 2VW نیز معروف هستند. این پیوست ها باموفقیت برای توصیف زبان های پیچیده، به ویژه نحو زبان برنامه نویسی Algol 68 استفاده شده اند. با این حال، به نظر می رسد که، حتی اگر مقادیر پیوست را بتوان با ترکیب رشته ها تغییر داد، این تعریف رسمی تورینگ کامل است . از این رو، حتی ابتدایی ترین سؤالات در مورد زبان توصیف شده توسط گرامر دلخواه 2VW به طور کلی غیرقابل تصمیم گیری هستند.
Extended Affix Grammars که در دهه 1980 توسعه یافت، نسخه محدودتری از همین ایده است. آنها عمدتاً برای توصیف گرامر زبان های طبیعی مانند انگلیسی به کار می روند.
امکان دیگر این است که اجازه دهید مقادیر پیوست ها با کد نوشته شده در برخی از زبان های برنامه نویسی محاسبه شوند. دو رویکرد اساسی استفاده شده است: