8. Kieliopit ja kielet Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää siipiään" on kieliopillisesti oikein muodostettu. Subjekti = "mies, predikaatti="räpyttää"ja objekti "siipiään". Lause on siis muodollisesti eli syntaktisesti oikein muodostettu, vaikka lauseen sisältö eli semantiikka olisi pielessä. "Mies räpytys siivet" ei ole kieliopillisesti oikein muodostettu lause, koska se ei noudata Suomen kielen kielioppia. Formaali kieli Luonnollisen kielen eli puhutun kielen syntaksi on aina äärimmäisen monimutkainen. Itse asiassa ei ole mahdollista kuvata kaikkia puhutun kielen kielioppisääntöjä. Kielen syntaksin tutkimus on johtanut käsitteeseen Formaali kieli: Kieltä, jossa kielen kielioppi on kuvattu tarkasti hyvin määritellyillä säännöillä. Lingvistiikan lisäksi formaalilla kielillä on sovelluksia ohjelmointikielten tutkimuksessa ja tietoliikenteessä Kääntäjät, ohjelmointikielten syntaksi, bittijonojen käsittely jne.
8.1. Määritelmiä Kieli on kokoelma sanoja ja sanojen yhdistämistapoja, joita käyttää tai ymmärtää jokin yhteisö. Aakkosto on äärellinen, ei-tyhjä joukko merkkejä (eli symboleja, kirjaimia) Tavallisia aakkostoja ovat suomen kielen kirjaimet (mukaanlukien sanavälit ja välimerkit) sekä bitit 0 ja 1. Sana on äärellinen jono kirjaimia. Tyhjä sana λ on sana, jossa ei ole yhtään kirjainta. Sanan w pituus w on w:n sisältämien kirjaimien lukumäärä. Esimerkiksi aabbc = 5 ja 1 + 2 = 3 = 5. Tyhjälle sanalle on λ = 0. Sanojen katenaatio Kaksi sanaa w 1 ja w 2 ovat samat (merkitään w 1 = w 2 ), jos niissä molemmissa esiintyvät samat kirjaimet samassa järjestyksessä. Esimerkiksi abba abab, mutta aabλ = aab. Sanojen perusoperaatio on katenaatio eli sanojen kirjoittaminen peräkkäin. Sanojen w 1 ja w 2 katenaatiota (tässä järjestyksessä) merkitään w 1 w 2 :lla. Esimerkiksi sanojen aaba ja ccad katenaation on sana aabaccad. Yleensä sana w 1 w 2 w 2 w 1. Lisäksi wλ = w kaikilla sanoilla w.
Sanojen potenssi Sanan w n:s (katenaatio) potenssi on sana w n = ww w }{{}. n kpl Erikseen on määritelty, että w 1 = w ja w 0 = λ. Lisäksi aina λ n = λ. Sanan peilikuva Sanan w peilikuva w R on sana, joka saadaan w:stä ottamalla kirjaimet oikealta vasemmalle. Jos w = a 1 a 2 a n, niin w R = a n a n 1 a 2 a 1. Erityisesti λ R = λ. Selvästi on (w 1 w 2 ) R = w R 2 w R 1.
Osasanat Sana u on sanan w alkuosa, jos w = uv jollakin sanalla v. Sana u on sanan w loppuosa, jos w = vu jollakin sanalla v. Sana u on sanan w osasana, jos w = v 1 uv 2 joillakin sanoilla v 1, v 2. Sanojen lukumäärä Huom. Aakkoston sanoja on numeroituvasti ääretön määrä. Toisin sanoen aakkoston sanat voidaan kirjoittaa päättymättömäksi listaksi.
Määritelmä Formaali kieli on joukko jonkin aakkoston sanoja. Kieli on äärellinen, jos se sisältää äärellisen määrän sanoja. Tyhjä kieli on kieli, joka ei sisällä yhtään sanaa. Kieli {λ} on kieli, joka sisältää vain tyhjän sanan. Yhden sanan muodostama kieli {w} ja sana w yleensä samaistetaan ja merkitään myös kieltä w:llä. Kielille käytetään joukko-opin merkintöjä:,,, \. Sanan w kuuluminen kieleen merkitään w L. Vastaavasti merkintä w / L tarkoittaa, että w ei ole kielen L sana. Aakkoston V kaikkien sanojen muodostamaa kieltä merkitään V :llä. Myös λ V. Kieli V + = V \ {λ} eli kaikkien aakkoston V ei tyhjien sanojen muodostama kieli.
Kielten ylinumeroituvuus Kieliä on selvästi ääretön määrä. Lause 8.1.Aakkoston kieliä on ylinumeroituvasti ääretön määrä. Toisin sanoen aakkoston kieliä ei voida kirjoittaa listaksi, Tod. Vastaoletus:Kaikki aakkoston V kielet voidaan kirjoittaa listaksi L 1, L 2,... L i, L i+1,.... Kirjoitetaan aakkoston V sanat listaksi w 1, w 2,.... Määritellään kieli L seuraavasti: w i L täsmälleen silloin kun w i / L i, kun i = 1, 2,... Vastaoletuksen perusteella L = L n jollakin n. Kielen L määritelmän perusteella: Jos w n L n, niin w / L ja jos w n / L n, niin w L. Sana w n esiintyy vain toisessa kielistä L ja L n. Siis L L n, mikä on ristiriita. Kielten operaatioita Kielten L 1 ja L 2 katenaatio (tässä järjestyksessä) on kieli L 1 L 2 = {w 1 w 2 w 1 L 1 ja w 2 L 2 }. Kielen L n:s (katenaatio) potenssi on kieli L n = {w 1 w 2 w n w 1, w 2,..., w n L}. Erityisesti L 1 = L, L 0 = {λ}. Myös 0 = λ.
Kielen katenaatiosulkeuma Kielen L katenaatiosulkeuma on kieli L = n=0 L n. eli L on kieli joka muodostuu sanoista jotka saadaan kielen L sanoista katenoimalla. Myös λ L. Vastaavasti kieli L + = n=1 L n, jossa sana λ on mukana vain jos λ L. Voidaan osoittaa, että L + = LL = L L. Säännölliset kielet Säännölliset kielet aakkostossa V : 1., {λ} ja {a}, a V ovat säännöllisiä kieliä. 2. Jos L ja L ovat säännöllisiä kieliä, niin myös L L, LL ja L ovat säännöllisiä kieliä. Esimerkki Kieli {ab n n =, 0, 1,...} on säännöllinen, sillä {ab n n =, 0, 1,..., } = {a}{λ, b, b 2, b 3,...} = {a}{b}.
Säännölliset ilmaisut Säännöllinen kieli kuvataan usein säännöllisen ilmaisun avulla. Säännölliset ilmaisut aakkostossa V: 1., {λ} ja a, a V ovat säännöllisiä ilmaisuja 2. Jos R ja S ovat säännöllisiä ilmaisuja, niin myös (R), R + S, R S ja R ovat säännöllisiä ilmaisuja. Esimerkki. Aakkoston {0, 1} säännöllisiä ilmaisuja: λ, 0, 1, λ + 1, 0 + (1 0)0 1 Operaattoreiden suoritusjärjestys Sulkujen vähentämiseksi on sovittu säännöllisen ilmaisun operaatioille suoritusjärjestys: ensin, senjälkeen, ja viimeiseksi +. Esimerkiksi säännöllinen ilmaisu a + b a on sama kuin (a + (b (a ))). Jos sekaannusta ei synny, jätetään merkitsemättä. Esimerkiksi edellisen säännöllinen ilmaisu voidaan esittää muodossa a + ba.
Jokainen säännöllinen ilmaisu R määrää säännöllisen kielen L(R) seuraavasti: L( ) =, L(λ) = {λ}, L(a) = {a}, L(R + S) = L(R) L(S), L(RS) = L(R)L(S) ja L(R ) = (L(R)). Esimerkiksi L(a + bc ) = L(a) (L(b)L(c )) = {a} (L(b)L(c) ) = {a} ({b}{λ, c, c 2,...}) = {a, b, bc 2, bc 3, bc 4...}. Jokainen säännöllisen ilmaisun määräämä kieli on säännöllinen. Jokaisen säännöllisen kielen määrää säännöllinen ilmaisu. Kaksi säännöllistä ilmaisua R ja S ovat samat, jos L(R) = L(S). Esimerkki. Määrää aakkoston {0, 1} säännöllinen ilmaisu, jonka määräämä kieli sisältää täsmälleen kaikki parillisen pituiset bittijonot. Ratk....