Leksinen analyysi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 2. huhtikuuta 2022 tarkistetusta versiosta . tarkastukset vaativat 10 muokkausta .

Tietojenkäsittelytieteessä leksikaalinen analyysi ("tokenization", englanniksi tokenizing ) on ​​prosessi , jossa syötetyn merkkijonon jäsentäminen analyyttisesti tunnistetuiksi ryhmiksi  - lekseemiksi - saadakseen tunnistetut sekvenssit ulostulossa, nimeltään " tokens " (samanlainen kuin ryhmittely ). kirjaimet sanoissa ) .  

Merkitys

Yksinkertaisissa tapauksissa käsitteet "lekseema" ja "tunnus" ovat identtisiä, mutta monimutkaisemmat tokenisaattorit luokittelevat lisäksi tunnukset eri tyyppeihin ("tunniste", "operaattori", "puheen osa" jne.). Leksistä analyysiä käytetään ohjelmointikielten kääntäjissä ja lähdekooditulkeissa sekä erilaisissa luonnollisten kielten sanan jäsentimissä .

Pääsääntöisesti leksikaalinen analyysi suoritetaan tietyn muodollisen kielen tai kielijoukon suhteen. Kieli, tai pikemminkin sen kielioppi , määrittelee tietyn joukon lekseemejä, jotka voidaan kohdata prosessin syötteessä.

On perinteistä organisoida leksikaalisen analyysin prosessi pitämällä merkkien syöttösekvenssiä merkkivirtana. Tässä organisaatiossa prosessi hallitsee itsenäisesti yksittäisten merkkien valintaa syöttövirrasta.

Lekseemit tunnistetaan kieliopin yhteydessä yleensä tunnistamalla (tai luokittelemalla) ne kielen kieliopin määrittelemien merkkien tunnisteiden (tai luokkien) mukaan. Tässä tapauksessa mikä tahansa syöttövirran merkkijono (token), jota ei kieliopin mukaan voida tunnistaa kielitunnukseksi, katsotaan yleensä erityiseksi virhetunnisteeksi.

Jokainen merkki voidaan esittää rakenteena, joka sisältää merkkitunnisteen (tai token-luokan tunnisteen) ja tarvittaessa syöttövirrasta poimitun tunnuksen merkkijonon (merkkijono, numero jne.) .

Tällaisen muunnoksen tarkoituksena on yleensä valmistella syöttösekvenssi toiselle ohjelmalle, kuten kieliopin jäsentimelle , ja säästää se määrittelemästä leksikaalisia yksityiskohtia yhteydettömässä kielioppissa (mikä tekisi kieliopin monimutkaisempaa).

Esimerkki

Esimerkiksi seuraavan ohjelmarivin lähdekoodi

netto_arvo_tulevaisuus = ( varat - velat );

voidaan muuntaa seuraavaksi merkkivirraksi:

NAME "net_worth_future" TEHTÄVÄ OPENING_BRACKET NAME "omaisuudet" MIINUS NAME "velat" CLOSING_BRACKET PUOLIPISTE

Leksinen analysaattori

Leksikaalinen analysaattori ( eng.  lexical Analyzer , lexer ; tai "tokenizer" tokenisaattorista ) on ohjelma tai ohjelman osa, joka suorittaa leksikaalista analyysiä. Leksikaalinen analysaattori toimii yleensä kahdessa vaiheessa: skannaus ja arviointi .

Ensimmäisessä vaiheessa, skannauksessa, leksikaalinen analysaattori toteutetaan yleensä tilakoneena , joka määritellään säännöllisillä lausekkeilla . Se koodaa tietoa mahdollisista merkkisarjoista, joita voi esiintyä tokeneissa. Esimerkiksi "kokonaisluku" voi sisältää minkä tahansa desimaalilukusarjan. Monissa tapauksissa ensimmäistä ei-välilyöntimerkkiä voidaan käyttää määrittämään seuraavan merkin tyyppi, minkä jälkeen syötettyjä merkkejä käsitellään yksitellen, kunnes havaitaan merkki, joka ei ole kyseisen merkin kelvollisten merkkien joukossa. Joillakin kielillä tunnisteiden jäsennyssäännöt ovat hieman monimutkaisempia ja vaativat palaamista luettavassa järjestyksessä.

Näin saatu merkki sisältää raakalähdetekstin (merkkijonon). Jotta saadaan merkki, jonka arvo vastaa tyyppiä (esimerkiksi kokonaisluku tai murtoluku), tämä merkkijono arvioidaan - kulkee merkkien läpi ja laskee arvo.

Tunnus, jossa on tyyppi ja vastaava arvo, välitetään jäsentimen sisäänmenoon .

Leksisen analysaattorin generaattorit

  • lex  - Unix-standardin generaattori
  • Flex  on vaihtoehto klassiselle lex -apuohjelmalle
  • re2c - luo optimoituja ei-taulukkoleksereita, jotka keskittyvät työskentelyyn C:n, C ++:n, Go:n ja Rustin kanssa
  • JLex  - Javan generaattori
  • ANTLR
  • Lexertl

Katso myös

Kirjallisuus

  • Alfred W. Aho , Monica S. Lam , Ravi Seti , Jeffrey D. Ullman . Kääntäjät: periaatteet, tekniikat ja työkalut = kääntäjät: periaatteet, tekniikat ja työkalut. - 2. painos - M .: Williams , 2008. - ISBN 978-5-8459-1349-4 .
  • Robin Hunter . Kääntäjän peruskäsitteet = Kääntäjien olemus. - M . : "Williams" , 2002. - S. 256. - ISBN 5-8459-0360-2 .

Linkit