Kontekstfri grammatikk er formell grammatikk, syntaksen eller strukturen til et formelt språk kan beskrives ved hjelp av kontekstfri grammatikk (CFG), en type formell grammatikk. Grammatikken har fire tupler: (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.>
En grammatikk sies å være den kontekstfrie grammatikken hvis hver produksjon er i form av:
G ->(V∪T)*, hvor G ∊ V>
- Og venstre side av G, her i eksemplet kan bare være en Variabel, den kan ikke være en terminal.
- Men på høyre side her kan det være en variabel eller terminal eller begge kombinasjoner av variabel og terminal.
Ovenstående ligning sier at hver produksjon som inneholder en kombinasjon av 'V'-variabelen eller 'T'-terminal sies å være en kontekstfri grammatikk.
For eksempel grammatikken A = { S, a,b, P,S} som har produksjon:
- Her er S startsymbolet.
- {a,b} er terminalene vanligvis representert med små tegn.
- P er variabel sammen med S.
S->aS S-> bSa>
men
a->bSa, eller a->ba er ikke en CFG da det på venstre side er en variabel som ikke følger CFGs regelen.>
I informatikkfeltet brukes kontekstfrie grammatikker ofte, spesielt innenfor områdene formell språkteori, kompilatorutvikling og naturlig språkbehandling. Den brukes også til å forklare syntaksen til programmeringsspråk og andre formelle språk.
Begrensninger for kontekstfri grammatikk
Bortsett fra all bruken og viktigheten av kontekstfri grammatikk i kompilatordesignet og datavitenskapsfeltet, er det noen begrensninger som tas opp, det vil si at CFG-er er mindre uttrykksfulle, og verken engelsk eller programmeringsspråk kan uttrykkes ved bruk av kontekstfritt Grammatikk. Kontekstfri grammatikk kan være tvetydig betyr at vi kan generere flere parse-trær med samme inngang. For noen grammatikk kan kontekstfri grammatikk være mindre effektiv på grunn av den eksponentielle tidskompleksiteten. Og den mindre presise feilrapporteringen som CFGs feilrapporteringssystem er ikke så presis som kan gi mer detaljerte feilmeldinger og informasjon.