Jäsentäminen
Jäsentäminen tarkoittaa kohteen syntaktista analyysiä. Jäsennys saa syötteenään jonon tokeneita ja se tarkistaa niiden rakenteen enemmän tai vähemmän muodolliseen kielioppiin verrattuna. Luonnollisen kielen jäsennys tarkoittaa lauseiden sanojen kuvaamista kielioppisääntöjen mukaan eli sen selvittämistä, mikä sana on minäkin lauseenjäsenenä. Ohjelmakoodin jäsennys tarkoittaa kääntäjän tekemää semanttista tarkistusta ohjelmointikielen sääntöjen mukaan.
Ohjelmointikielet
[muokkaa | muokkaa wikitekstiä]Jäsennystä käytetään yleisimmin tietokonekielisen ohjelman kääntämiseen kahdella tasolla: leksikaaliseen ja syntaktiseen tarkistukseen.
Ensimmäinen vaihe on tokenien luonti tai leksikaalinen analysointi, joissa syöte (lähdekoodi) pilkotaan merkityksellisiksi symboleiksi usein säännöllisten lausekkeiden kieliopin mukaan. Esimerkiksi (tasku)laskinohjelma selaa syötettyjä näppäilyjä "12*(3+4)^2" ja pilkkoo sen tokeneiksi: 12, *, (, 3, +, 4, ), ^, ja 2. Kukin on merkityksellinen symboli aritmeettisen lauseen kontekstissa. Jäsentimessä voi olla sääntö, että merkit *, +, ^, ( ja ) ovat uuden tokenin aloitusmerkkejä ja numero aloittaa luvun. Leksikaalinen analysaattori tai "skanneri" varmistaa sääntöjensä mukaan, että merkityksettömiä tokeneita kuten 12* tai (3 ei generoida.
Seuraava vaihe on syntaktinen analyysi, jossa tarkistetaan, että tokenit (välisymbolit, päätössymbolit) muodostavat hyväksyttävän lausekkeen. Ohjelmointikielen syntaksi määritellään yleensä formaalisti BNF-notaatiolla. Tämä notaatio määrittää kontekstivapaan kieliopin. Kielioppi määrittelee rekursiivisesti tokenit, jotka voivat muodostaa lausekkeen ja missä järjestyksessä niiden on esiinnyttävä. Kuitenkaan kaikkia ohjelmointikielen määritteleviä sääntöjä ei voida esittää kontekstista vapailla kieliopeilla yksinään. Esimerkkeinä tyypin kelvollisuus ja tunnuksen ominaisuusmäärittelyt. Nämä säännöt voidaan esittää attribuuttikielioppien kanssa.
Viimeinen vaihe on semanttinen jäsennys tai analyysi. Laskinohjelmaesimerkissä toiminto on laskea lausekkeen arvo tai toisaalta kääntäjä, joka luo pätkän ohjelmaa. Näihin toimintoihin voidaan käyttää attribuuttikielioppeja.
Jäsennin
[muokkaa | muokkaa wikitekstiä]- Pääartikkeli: Jäsennin
Jäsennin on tietokoneohjelma, joka ottaa lisää merkkijonon analysoi rakennetta ja tarvittaessa jäsentää sen toiseen muotoon.
Katso myös
[muokkaa | muokkaa wikitekstiä]- Lex, ohjelma, jolla luodaan leksikaalisia analysaattoreita säännöllisen kielen avulla
- Yacc, ohjelma, joka luo yhteydettömän kieliopin sääntöjen mukaan LALR-jäsentimen
Kirjallisuutta
[muokkaa | muokkaa wikitekstiä]- Chapman, Nigel P., LR Parsing: Theory and Practice, Cambridge University Press, 1987. ISBN 052130413X
- Grune, Dick; Jacobs, Ceriel J.H., Parsing Techniques - A Practical Guide, VU University Amsterdam, Amsterdam, The Netherlands. Originally published by Ellis Horwood, Chichester, England, 1990; ISBN 0136514316