CFG tarkoittaa yhteydetöntä kielioppia. Se on muodollinen kielioppi, jota käytetään luomaan kaikki mahdolliset merkkijonomallit tietyllä muodollisella kielellä. Kontekstiton kielioppi G voidaan määritellä neljällä monitolla seuraavasti:
G = (V, T, P, S)
Missä,
G on kielioppi, joka koostuu tuotantosäännöstä. Sitä käytetään luomaan kielen merkkijono.
T on terminaalisymbolin viimeinen joukko. Se on merkitty pienillä kirjaimilla.
SISÄÄN on ei-päätteisen symbolin viimeinen joukko. Se on merkitty isoilla kirjaimilla.
P on joukko tuotantosääntöjä, joita käytetään korvaamaan ei-päätesymbolit (tuotannon vasemmalla puolella) merkkijonossa muilla pääte- tai ei-päätesymboleilla (tuotannon oikealla puolella).
staattinen vuonna c
S on aloitussymboli, jota käytetään merkkijonon johtamiseen. Voimme johtaa merkkijonon korvaamalla toistuvasti ei-päätettä tuotannon oikealla puolella, kunnes kaikki ei-pääte on korvattu terminaalisymboleilla.
Esimerkki 1:
Muodosta CFG kielelle, jolla on mikä tahansa määrä a:ita joukon ∑= {a} yli.
Ratkaisu:
Kuten tiedämme, yllä olevan kielen säännöllinen lauseke on
r.e. = a*
Säännöllisen lausekkeen tuotantosääntö on seuraava:
S → aS rule 1 S → ε rule 2
Jos nyt haluamme johtaa merkkijonon 'aaaaaa', voimme aloittaa aloitussymboleilla.
S aS aaS rule 1 aaaS rule 1 aaaaS rule 1 aaaaaS rule 1 aaaaaaS rule 1 aaaaaaε rule 2 aaaaaa
R.e. = a* voi luoda joukon merkkijonoa {ε, a, aa, aaa,.....}. Meillä voi olla nollamerkkijono, koska S on aloitussymboli ja sääntö 2 antaa S → ε.
Esimerkki 2:
Muodosta CFG säännölliselle lausekkeelle (0+1)*
Ratkaisu:
on proteiinirasvaa
CFG:n voi antaa
Production rule (P): S → 0S | 1S S → ε
Säännöt ovat 0:n ja 1:n yhdistelmässä aloitussymbolin kanssa. Koska (0+1)* tarkoittaa {ε, 0, 1, 01, 10, 00, 11, ....}. Tässä joukossa ε on merkkijono, joten säännössä voimme asettaa säännön S → ε.
Esimerkki 3:
Muodosta CFG kielelle L = missä w € (a, b)*.
Ratkaisu:
Tietylle kielelle luotava merkkijono on {aacaa, bcb, abcba, bacab, abbcbba, ....}
Kielioppi voisi olla:
S → aSa rule 1 S → bSb rule 2 S → c rule 3
Jos nyt haluamme johtaa merkkijonon 'abbcbba', voimme aloittaa aloitussymboleilla.
S → aSa S → abSba from rule 2 S → abbSbba from rule 2 S → abbcbba from rule 3
Siten mikä tahansa tämäntyyppinen merkkijono voidaan johtaa annetuista tuotantosäännöistä.
Esimerkki 4:
Muodosta CFG kielelle L = anb2nmissä n>=1.
Ratkaisu:
merkintä kuvilla
Merkkijono, joka voidaan luoda tietylle kielelle, on {abb, aabbbb, aaabbbbbb....}.
Kielioppi voisi olla:
S → aSbb | abb
Jos nyt haluamme johtaa merkkijonon 'aabbbb', voimme aloittaa aloitussymboleilla.
S → aSbb S → aabbbb