Контекстно-вільна граматика — це формальна граматика, синтаксис або структуру формальної мови можна описати за допомогою контекстно-вільної граматики (CFG), типу формальної граматики. Граматика має чотири кортежі: (V,T,P,S).
V - It is the collection of variables or nonterminal symbols. T - It is a set of terminals. P - It is the production rules that consist of both terminals and nonterminals. S - It is the Starting symbol.>
Граматика називається безконтекстною граматикою, якщо кожна продукція має форму:
G ->(V∪T)*, де G ∊ V>
- І ліва частина G, тут у прикладі може бути лише змінною, вона не може бути терміналом.
- Але праворуч тут може бути змінна чи термінал або обидві комбінації змінної та терміналу.
Наведене вище рівняння стверджує, що кожна продукція, яка містить будь-яку комбінацію змінної «V» або терміналу «T», називається контекстно-вільною граматикою.
Наприклад, граматика A = { S, a,b, P,S} має виробництво:
- Тут S є початковим символом.
- {a,b} — термінали, які зазвичай представлені маленькими символами.
- P є змінною разом із S.
S->aS S-> bSa>
але
a->bSa або a->ba не є CFG, оскільки ліворуч є змінна, яка не відповідає правилу CFG.>
У галузі інформатики часто використовуються контекстно-вільні граматики, особливо в областях формальної теорії мови, розробки компілятора та обробки природної мови. Він також використовується для пояснення синтаксису мов програмування та інших формальних мов.
Обмеження безконтекстної граматики
Крім усіх застосувань і важливості контекстно-вільної граматики в дизайні компілятора та в галузі інформатики, є деякі обмеження, які розглядаються, тобто CFG є менш виразними, а ні англійська мова, ні мова програмування не можуть бути виражені за допомогою контекстно-вільної мови. Граматика. Контекстно-вільна граматика може бути неоднозначною, це означає, що ми можемо генерувати кілька дерев розбору одного введення. Для певної граматики контекстно-вільна граматика може бути менш ефективною через експоненціальну часову складність. І менш точне повідомлення про помилки, оскільки система звітування про помилки CFG не є настільки точною, щоб надати більш докладні повідомлення про помилки та інформацію.