Kontekstinė laisvoji gramatika yra formali gramatika, kurios sintaksę arba struktūrą galima apibūdinti naudojant be konteksto gramatiką (CFG), formaliosios gramatikos tipą. Gramatika turi keturias eilutes: (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.>
Sakoma, kad gramatika yra gramatika be konteksto, jei kiekviena produkcija yra tokia:
G ->(V∪T)*, kur G ∊ V>
- Ir kairėje G pusėje, čia pavyzdyje gali būti tik kintamasis, tai negali būti terminalas.
- Bet dešinėje pusėje tai gali būti kintamasis arba terminalas arba kintamojo ir terminalo derinys.
Aukščiau pateikta lygtis teigia, kad kiekviena produkcija, kurioje yra bet koks „V“ kintamojo arba „T“ terminalo derinys, yra laikoma gramatika be konteksto.
Pavyzdžiui, gramatika A = { S, a,b, P,S}, turinti produkciją:
- Čia S yra pradžios simbolis.
- {a,b} yra terminalai, paprastai vaizduojami mažais simboliais.
- P yra kintamas kartu su S.
S->aS S-> bSa>
bet
Gramatikos be konteksto apribojimai
Be visų bekontekstinės gramatikos naudojimo būdų ir svarbos kompiliatoriaus kūrime ir informatikos srityje, yra keletas apribojimų, į kuriuos reikia atsižvelgti, ty CFG yra mažiau išraiškingi ir nei anglų, nei programavimo kalbos negalima išreikšti naudojant be konteksto. Gramatika. Gramatika be konteksto gali būti dviprasmiška, tai reiškia, kad galime sugeneruoti kelis tos pačios įvesties analizavimo medžius. Kai kurioms gramatikoms be konteksto gramatika gali būti mažiau efektyvi dėl eksponentinio laiko sudėtingumo. Ir ne toks tikslus klaidų ataskaitų teikimas kaip CFG klaidų ataskaitų sistema nėra tokia tiksli, kad galėtų pateikti išsamesnius klaidų pranešimus ir informaciją.