سلام رفقا! امروز میخوایم یه سری به دنیای عجیب و غریب گرامرها بزنیم و یه چیزی رو به اسم "فرم نرمال Backus-Naur" یا همون BNF خودمون رو بررسی کنیم. شاید اسمش یکم intimidating باشه، ولی نگران نباشید، قراره با یه زبون خودمونی و به زبون آدمیزاد توضیحش بدیم.
فرض کنید میخواید یه زبون جدید اختراع کنید. خب، باید یه سری قوانین و گرامر واسش تعریف کنید، درسته؟ BNF یه جور زبون برای تعریف کردن همین گرامرهاست. یه جور فرمولبندی که بهمون کمک میکنه قواعد یه زبون برنامهنویسی یا یه پروتکل رو به صورت دقیق و استاندارد بنویسیم. اسمش رو از دو تا دانشمند بزرگ به نامهای جان بکوس و پیتر نائر گرفته.
حالا ممکنه بپرسید اصلاً چرا باید وقتمون رو صرف یادگیری BNF کنیم؟ خب، چند تا دلیل مهم داره:
BNF از یه سری نماد و قاعده برای تعریف گرامر استفاده میکنه. مهمترین نمادهاش اینا هستن:
بیاید با یه مثال ساده، کار BNF رو بهتر درک کنیم. فرض کنید میخوایم گرامر یه عدد صحیح رو با BNF تعریف کنیم:
<عدد_صحیح> ::= <رقم> | <عدد_صحیح> <رقم> <رقم> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
توی این مثال، <عدد_صحیح> یه non-terminal هست که میتونه یا یه <رقم> باشه، یا یه <عدد_صحیح> باشه که بهش یه <رقم> اضافه شده. <رقم> هم یه non-terminal هست که میتونه یکی از رقمهای 0 تا 9 باشه.
یه نسخه پیشرفتهتر از BNF هم وجود داره به اسم EBNF (Extended Backus-Naur Form). EBNF یه سری امکانات اضافی به BNF اضافه کرده که کار تعریف گرامرها رو آسونتر میکنه. مثلاً توی EBNF میتونیم از علامتهای زیر استفاده کنیم:
با استفاده از EBNF، مثال عدد صحیح رو میتونیم اینطوری بنویسیم:
<عدد_صحیح> ::= <رقم> { <رقم> } <رقم> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
ویژگی | BNF | EBNF |
---|---|---|
تکرار | ندارد (باید از بازگشت استفاده کرد) | دارد ({}) |
اختیاری بودن | ندارد (باید از چندین قانون استفاده کرد) | دارد ([]) |
پیچیدگی | گاهی پیچیدهتر | معمولا سادهتر |
خب، تا اینجا فهمیدیم BNF چیه، چرا مهمه و چطوری کار میکنه. یادگیری BNF میتونه یه ابزار قدرتمند برای هر کسی باشه که با زبونهای برنامهنویسی، کامپایلرها یا پروتکلها سروکار داره. امیدوارم این مطلب براتون مفید بوده باشه.
وقتی به BNF به عنوان مخفف Backus Normal Form اشاره می کنیم، منظور این است که BNF با گرفتن حروف اولیه هر کلمه مهم در Backus Normal Form تشکیل می شود. این فرآیند عبارت اصلی را به شکلی کوتاه تر و قابل مدیریت تر فشرده می کند و در عین حال معنای اصلی خود را حفظ می کند. بر اساس این تعریف، BNF مخفف Backus Normal Form است.
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved