A 10. óra vázlata: Példák Ismert a római számk halmaza, amely intuitív szintaxissal rendelkezik, hiszen pl. IIV-t VX-et vagy IIII-t nem fgadjuk el római számnak (habár v.ö. tarkk-kártya vagy némely óra számlapja) Olyan szintaxis utasítja el ezeket a jelsrzatkat, amely szerint megelőző helyzetben legföljebb egy jel lehet megelőző helyzetben csak 10-hatvány lehet legföljebb hárm egyfrma jel állhat egymás mellett Reguláris nyelvtankkal kapcslatsan mst egy engedményt teszünk: Nemcsak az A x illetve az A xb frmákat fgadjuk el, hanem az A p illetve az A pb frmákat is, ahl p T* (Előadásn beláttuk, hgy ez az engedmény megtehető a generálási képesség kiterjesztése nélkül: azaz a lazább értelemben definiált reguláris nyelvtank ugyanazkat a nyelveket generálják, mint a szigrúak.) Ennek az engedménynek az alkalmazásával tekintsük mst a következő nyelvtant (a római számjegyeket mst kisbetűvel jelöljük, hangsúlyzva, hgy ők a terminálisk): G 1 = ({i, v, x, l, c, d, m}, {R}, R, H), ahl H elemei:
R i R ii R iii R iiii (eldönthetjük, hgy ezt a 4-est bevesszük-e vagy sem) R iv R xlviii R xlix R il (ismét eldönthetjük, hgy az eltérő szintaxisú, de azns szemantikájú [a római szám szemantikája az értéke!] jelsrzatkat bevesszük-e a nyelvbe) R l R mmmcmxcix A G 1 nyelvtannak van egy nagyn fnts tanulsága: Minden véges nyelv reguláris. Tekintsük mst a következő G 2 nyelvtant: G 2 = ({i, v, x, l, c, d, m}, {R, M, C, X, I}, R, H), ahl H elemei (itt bevezetünk egy összevnási lehetőséget: ha a nyelvtanban szerepel egy P Q 1 és egy P Q 2 szabály, akkr ezeket összevntan P Q 1 Q 2 alakban írjuk): R MCXI M mmm mm m C cm dccc dcc dc d cd ccc cc c X xc lxxx lxx lx l xl xxx xx x I ix viii vii vi iv v iii ii i
Mindjárt felhívjuk a figyelmet két generálás szempntjából fnts különbségre: G 2 nem engedi meg a szintaktikai variánskat (iiii, il) L(G 1 ) míg L(G 2 ) Ez utóbbi kérdés a -tartalmazás kérdése: mi legyen az álláspntunk akkr, ha két nyelv csak abban tér el, hgy az egyik tartalmazza a -t, a másik nem ettől eltekintve egyenlők? A válasz az, hgy nyelvtani szempntból tekinthetők egyenlőnek, van ugyanis egy tétel, amely szerint minden grammatika -mentessé tehető, ami alatt azt kell érteni, hgy az új (és egyébként ekvivalens) grammatikában sehl sem frdul elő helyettesítési szabály jbb ldalán, kivéve esetleg az S szabályt, azaz a ha mégis be akarjuk venni a nyelvbe közvetlenül a mndatszimbólumból levezethető (de csakis abból). Van aznban még egy nagyn fnts különbség G 1 és G 2 között: G 1 reguláris, G 2 környezetfüggetlen. (Gyakrlat: Miért? Keressük meg G 2 helyettesítési szabályai között azt a szabályt [segítség: egy ilyen van], amely G 2 -t környezetfüggetlenné teszi.) Kérdés, hgy a római számk halmaza (nyelve) ettől környezetfüggetlen nyelvvé vált-e. Nyilván nem. A nyelv Chmsky-sztályát ugyanis a legmagasabb indexű grammatika határzza meg, amellyel generálható. G 1 -gyel megmutattuk, hgy a római számk generálhatók reguláris (azaz 3-as indexű) grammatikával, vagyis a nyelv Chmskysztálya 3-as. Legyen az a törekvésünk, hgy a szintaxist közelítsük a szemantikáhz! Tekintsük ennek érdekében a
következő G 3 nyelvtant: G 3 = ({i, v, x, l, c, d, m}, {R, M, C, C 300, X, X 30, I, I 3 }, R, H), ahl H elemei R MCXI M mmm mm m C 300 ccc cc c C C 300 dc 300 cd cm X 30 xxx xx x X X 30 lx 30 xl xc I 3 iii ii i I I 3 vi 3 iv ix Vegyük észre előszöris, hgy L(G 2 ) = L(G 3 ), tehát a két nyelvtan ekvivalens. A G 3 nyelvtan visznt valamivel beszédesebb : a tízhatványk hármas csprtsításával többet árul el a római számk szemantikájából, mint a G 2. (És nem mellesleg csak 29 szabályból áll, szemben a G 2 -vel, amely 35-ből.) Házifeladat: lyan G 4 grammatikát készíteni, amely a megelőző helyzeteket is hasnlóan szemantikusan kezeli. Vizsgáljuk mst a következő G 5 nyelvtant (nemterminálisk kisbetűk, terminálisk nagybetűk, mndatszimbólum az S): S xs S ys S zs S Könnyen látható, hgy L(G 5 ) = {x, y, z}* = T*. T* tehát reguláris nyelv. Kérdés, mi generálja T + nyelvet. Ha az az első ötletünk, hgy a G 6
S xs S ys S zs nyelvtan, akkr ez a gndlat téves. Ugyanis L(G 6 ) =. Ehelyett tekintsük a G 7 S xs S ys S zs S x S y S z nyelvtant! Amint könnyen megfntlható: L(G 7 ) = T +. Vegyük észre, hgy G 7 úgy nyerhető G 5 -ből, hgy - mentesítést végzünk, de az S szabályt (szándéksan) nem alkalmazzuk! Vizsgáljuk mst azt a nyelvet, amelynek a terminális halmaza ugyancsak {x, y, z}, de a nyelvbe csak a head(p) = x tulajdnságú jelsrzatk tartznak bele. Egyszerű megfgalmazással: azk a p-k, amelyek x- szel kezdődnek. (A head függvény leválasztja a jelsrzat első elemét.) Megfntltuk, hgy ezt a nyelvet az alábbi G 8 nyelvtan generálja: S xa A xa A ya A za A Végül keressünk nyelvtant a length x (p) = 1 tulajdnságú nyelvnek! (Ezek lyan srzatk, amelyeken
pntsan egy x van.) A következő G 9 nyelvtant találtuk erre a célra: S AxA A ya A za A Könnyen belátható, hgy L(G 9 ) = {p length x (p) = 1}. Igen ám, de G 9 környezetfüggetlen nyelvtan. Kérdés, hgy vajn {p length x (p) = 1} környezetfüggetlen nyelv-e. Házifeladat: {p length x (p) = 1}-nek reguláris grammatikát keresni.