interpretacija programa leksi ka...
TRANSCRIPT
![Page 1: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/1.jpg)
Interpretacija programaLeksička analiza
Krunoslav Puljić
![Page 2: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/2.jpg)
Leksička analiza
• Prvi korak u radu jezičnog procesora– Prvi korak analize
• Leksički analizator:– Prima niz znakova izvornog programa– Vraća niz leksičkih jedinki
• Niz leksičkih jedinki se prosljeđuje sintaksnom analizatoru
• Ponekad se leksička i sintaksna analiza odvijaju zajedno
![Page 3: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/3.jpg)
Zadaci leksičkog analizatora:
1. Slijedno čita tekst izvornog programa znak po znak2. Stvara učinkovit zapis znakova izvornog programa3. Odbacuje znakove koji se ne koriste u daljnjim
koracima4. Grupira znakove u leksičke jedinke5. Određuje klase leksičkim jedinkama6. Provjerava leksička pravila7. Pronalazi pogreške i određuje im mjesto u izvornom
programu8. Zapisuje parametre leksičkih jedinki u tablicu
znakova9. Čuva tekstualnu strukturu izvornog programa
![Page 4: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/4.jpg)
1. Slijedno čitanje izvornog teksta
• Jedini korak koji izravno pristupa znakovima izvornog programa
• Koriste se ulazno izlazne naredbe nekog višeg programskog jezika– read, scanf, cin...
![Page 5: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/5.jpg)
2. Stvaranje učinkovitog zapisa
• Kodiranje znakova izvornog programa– Npr. ASCII kod
• U leksičkoj analizi nije potrebno razlikovati sve znakove, nego samo grupe znakova– Jedinstveni kod definiramo za cijelu grupu znakova
• Primjer: ako su u nizu znakova isključivo znamenke, onda je leksička jedinka u klasi cjelobrojnih konstanti
![Page 6: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/6.jpg)
3. Odbacivanje suvišnih znakova
• Odbacuju se znakovi koji se ne koriste u daljnjim fazama rada jezičnog procesora
• Izbacuju se npr.– Komentari– Znakovi koji određuju tekstualnu strukturu programa
• Bjeline• Tabulatori• Znak novog reda (LF)• Znak vraćanja na početak reda (CR)
![Page 7: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/7.jpg)
4. Grupiranje znakova u leksičke jedinke
• Leksičke jedinke zapisuju se na dva načina:– Odvajanjem pomoću prekidnih znakova– Slobodnim zapisom
• Uz prekidne znakove postupak grupiranja je znatno pojednostavljen– Tijekom grupiranja traže se prekidni znakovi– Svi znakovi između dva susjedna prekidna znaka čine
leksičku jedinku– Prekidni znakovi su bjeline, operatori, interpunkcija, itd.
![Page 8: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/8.jpg)
4. Grupiranje znakova u leksičke jedinke
• Slobodan način zapisa ne traži odvajanje jedinki prekidnim znakovima– Zato grupiranje nije moguće provesti na temelju pronalaženja
prekidnih znakova
• Algoritmi grupiranja i određivanja klasa ujedinjuju se u jedinstvenu cjelinu:– Čitanjem znak po znak nastoji se odrediti klasa leksičke jedinke– Ako je pročitanom nizu znakova moguće odrediti klasu, onda se niz
znakova grupira u leksičku jedinku– Ako nije moguće odrediti klasu, čita se idući znak– Čitanje znakova se nastavlja sve dok se niz znakova ne svrsta u
jednu od klasa
• Znakovi se ponekad mogu grupirati na više različitih načina, što uzrokuje nejednoznačnost
![Page 9: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/9.jpg)
5. Određivanje klase leksičkim jedinkama
• Središnji algoritam leksičkog analizatora• Za sve klase leksičkih jedinki definiraju se
pravila koja određuju pripadnost niza znakova pojedinoj klasi
• Primjer: klasa identifikatora– ako su u nizu znakova slova i znamenke
• ako je krajnje lijevi znak slovo– onda je leksička jedinka u klasi identifikatora
• Primjena konačnih automata– Leksička pravila većine programskih jezika
omogućuju primjenu konačnih automata za razvrstavanje leksičkih jedinki u klase
![Page 10: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/10.jpg)
6. Provjeravanje leksičkih pravila
• Leksički analizator provjerava da li leksička jedinka zadovoljava pravila klase u koju je svrstana
• Za opis pravila klasa koriste se regularni izrazi
![Page 11: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/11.jpg)
7. Pronalaženje pogrešaka
• Ako nije moguće leksičku jedinku svrstati u jednu od klasa, leksički analizator ispisuje pogrešku– Određuje se mjesto pogreške u izvornom programu– Opisuje se pogreška
• Određivanje mjesta i opisa pogreške nije jednostavan postupak
![Page 12: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/12.jpg)
8. Zapisivanje parametara u tablicu znakova
• Leksički analizator stvara zapise u tablici znakova za sve leksičke jedinke izvornog programa
• Tablica znakova je osnovna podatkovna struktura leksičkog analizatora– Tu se sprema leksička jedinka u obliku u kojem je
zapisana u izvornom programu– Spremaju se i razni parametri leksičkih jedinki
• Npr. tip konstante
![Page 13: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/13.jpg)
9. Čuvanje tekstualne strukture izvornog programa
• Nakon leksičke analize nestaje tekstualna struktura izvornog programa– Izostavljene su bjeline, tabulatori, prijelazi u novi
redak, itd.
• Najjednostavniji način čuvanja tekstualne strukture jest brojanje znakova novog reda– Tako se određuje i redak izvornog programa u kojem
je nastala pogreška
• Danas je uobičajeno da se izvorni program u potpunosti sačuva i da se u njemu označe pogreške
![Page 14: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/14.jpg)
Prilagodba zapisa znakova
• Prethodi leksičkoj analizi• Niz znakova izvornog programa prevodi se
iz standardnog koda (npr. ASCII) u kod koji je posebno prilagođen leksičkoj analizi
![Page 15: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/15.jpg)
Primjer: Prilagodba zapisa znakova
A 41
B 42
... ...
Z 5A
00 01 (Slovo, A)
00 02 (Slovo, B)
... ...
00 1A (Slovo, Z)
0 30
1 31
... ...
9 39
* 2A
+ 2B
... ...
01 00 (Znamenka, 0)
01 01 (Znamenka, 1)
... ...
01 09 (Znamenka, 9)
02 0A (Operator, *)
02 0B (Operator, +)
... ...
Prilagodba zapisa
znakova
Znak ASCII Klasa Vrijednost Mnemonik
![Page 16: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/16.jpg)
Osnovne klase leksičkih jedinki
• Leksičke jedinke – nizovi znakova izvornog programa
• Primjeri osnovnih klasa:– Ključne riječi
• Npr. ako, onda, inače
– Operatori• Zbrajanje, oduzimanje, množenje, dijeljenje
– Specijalni znakovi• Npr. zagrade, zarez, točka
– Identifikatori• Npr. imena varijabli, polja, potprograma
– Konstante• Npr. cjelobrojne, znakovne, tekstualne
![Page 17: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/17.jpg)
Leksička jedinka
Klasa jedinke
Kodni znak
Mnemonik1 Kodni znak
Mnemonik2 PraviloReg.izr.
) Specijal ) (28) ) Z (5A) KROS )
; Specijal ; (3B) ; Z (5A) KROS ;
+ Operator + (2B) + Z (5A) KROS +
= Operator = (3D) = Z (5A) KROS =
345 Konstant B (42) KON B (42) KON brojka brojka*
23 Konstant B (42) KON B (42) KON
Cijena Identifik I (49) IDN I (49) IDN slovo (slovo + brojka)*Količina Identifik I (49) IDN I (49) IDN
ako Ključna a (61) ako Z (5A) KROS ako
onda Ključna o (6F) onda Z (5A) KROS onda
inače Ključna i (69) inače Z (5A) KROS inače
![Page 18: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/18.jpg)
Osnovne klase leksičkih jedinki
• Leksički analizator generira niz leksičkih jedinki koje prosljeđuje sintaksnom analizatoru– Taj niz kodnih znakova naziva se niz uniformnih
znakova
• Postoje dva pristupa kodiranju uniformnih znakova– U prethodnoj tablici su označeni s Mnemonik1 i
Mnemonik2– Oba jednako kodiraju identifikatore i konstante– Razlikuju se po kodiranju ključnih riječi, operatora i
specijalnih znakova
![Page 19: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/19.jpg)
Osnovne klase leksičkih jedinki
• Za potrebe sintaksne analize– Nije potrebno razlikovati pojedine identifikatore i
konstante• Zato leksički analizator odredi jednistveni kod uniformnog
znaka za konstante i posebno za identifikatore
– Jest potrebno razlikovati ključne riječi, operatore i specijalne znakove
• Zato leksički analizator uvodi:– Različite uniformne znakove za različite leksičke jedinke u tim
klasama – Mnemonik1– Isti uniformni znak (KROS) i kazaljku na tablicu znakova –
Mnemonik2
![Page 20: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/20.jpg)
Primjer izvornog programaIzracunajCijenu()
{
ako (Kolicina >20)
Cijena = 1000;
inace
Cijena = 1200;
NovaCijena = Cijena;
}
CR LF TAB TAB Cijena = 1000 ;
• obratite pažnju na razmake
IzracunajCijenu ( ) CR LF { CR LF TAB ako ( Kolicina > 20 )
CR LF TAB inace
CR LF TAB TAB Cijena = 1200;
CR LF TAB NovaCijena = Cijena;
CR LF }
![Page 21: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/21.jpg)
Mnemonik1IzracunajCijenu()
{
ako (Kolicina > 20)
Cijena = 1000;
inace
Cijena = 1200;
NovaCijena = Cijena;
}
IzracunajCijenu ( ) CR LF { CR LF TAB ako ( Kolicina > 20 )
49 28 29 7B 61 28 49 3E 42 29
I ( ) { a ( I > B )
IDN ( ) { ako ( IDN > KON )
...
Hex
ASC
Mn1
![Page 22: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/22.jpg)
Mnemonik2IzracunajCijenu()
{
ako (Kolicina > 20)
Cijena = 1000;
inace
Cijena = 1200;
NovaCijena = Cijena;
}
IzracunajCijenu ( ) CR LF { CR LF TAB ako ( Kolicina > 20 )
49 60 5A 41 5A 42 5A 43 5A 00 5A 41 49 61
I Z A Z B Z C Z null Z A I a
IDN,I.C. KROS,( KROS,) KROS,{ KROS,ako KROS,( IDN,Kol.
...
Hex
ASC
Mn2
00 ako
01 onda
02 inace
... ...
20 >
21 =
... ...
40 ;
41 (
42 )
43 {
44 }
... ...
60 IzracunajCijenu
61 Kolicina
... ...
75 20
Tablica znakova
Pomak
Leksička jedinka
![Page 23: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/23.jpg)
Podatkovna struktura L.A.
• Podatkovnu strukturu leksičkog analizatora čine:– Izvorni program– Tablica uniformnih znakova– Tablica znakova
• Tablica znakova se razlaže na:– Tablica identifikatora– Tablica konstanti– Tablica ključnih riječi, operatora i specijalnih
znakova
![Page 24: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/24.jpg)
Tablica uniformnih znakova
• Osnovna tablica• Znakovi su zapisani onim redoslijedom
kojim su leksičke jedinke zadane u izvornom programu– Zato da bi poredak bio dostupan i ostalim
dijelovima jezičnog procesora koji nemaju pristup izvornom kodu
![Page 25: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/25.jpg)
Podatkovna struktura L.A.
• Leksički analizator odredi klasu leksičke jedinke• Zapiše uniformni znak u tablicu uniformnih
znakova• Započne pretraživanje tablice znakova
– Ako je leksička jedinka identifikator, pretražuje se tablica identifikatora
• Ako je traženi identifikator već zapisan u tablici identifikatora onda se u tablicu uniformnih znakova zapisuje kazaljka koja pokazuje na mjesto pronađenog zapisa
• Ako traženi identifikator nije u tablici identifikatora, onda se stvara novi zapis te se u tablicu uniformnih znakova zapisuje kazaljka koja pokazuje na mjesto novostvorenog zapisa
![Page 26: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/26.jpg)
Podatkovna struktura L.A.
• ...– Ako je leksička jedinka konstanta, pretražuje
se tablica konstanti• Rad s tablicom konstanti analogan je radu s
tablicom identifikatora• Ako imamo različite vrste konstanti, u tablicu
konstanti zapisuje se i podatak o vrsti konstante– Cjelobrojna, znakovna, tekstualna, itd.
![Page 27: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/27.jpg)
Podatkovna struktura L.A.
• Tablice identifikatora i konstanti se mijenjaju tijekom rada jezičnog procesora
• Podaci u tablici ključnih riječi, operatora i specijalnih znakova se ne mijenjaju tijekom rada jezičnog procesora
![Page 28: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/28.jpg)
![Page 29: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/29.jpg)
Osnovne operacije nad tablicom znakova:
• Traženje zapisa• Dodavanje novog zapisa• Izbor postupka izrade tablice ovisi o
učestalosti operacija traženja i dodavanja– Linearna lista (vektor)– Uređena lista– Binarno stablo traženja– Raspršeno adresiranje (hash tablica)
![Page 30: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/30.jpg)
Linearna lista (vektor)
• Najjednostavniji način gradnje tablice znakova• Pretraživanje – lista se pretražuje slijedno od kraja liste,
sve dok se ne pronađe traženi zapis ili dok se ne dođe do početka liste– Složenost je O(n) gdje je n duljina liste– Prosječno se pretraži (n+1)/2 zapisa
• Dodavanje zapisa – novi zapis se jednostavno ubaci na kraj liste– Složenost je O(1)
• Prednost: jednostavnost i brzina dodavanja zapisa• Nedostatak: sporost traženja zapisa
![Page 31: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/31.jpg)
Uređena lista
• Linearna lista u kojoj su podaci sortirani• Pretraživanje – binarno
– Složenost je O(log2 n)• Dodavanje zapisa – novi zapis treba ubaciti na
pravo mjesto, pa se u prosjeku n/2 zapisa treba premjestiti– Složenost je O(n)
• Prednost: brzo traženje zapisa• Nedostatak: sporo dodavanje zapisa• Pogodna je za tablicu ključnih riječi, operatora i
specijalnih znakova koja se ne mijenja tijekom rada jezičnog procesora
![Page 32: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/32.jpg)
Binarno stablo traženja
• U čvoru i su svi lijevo od njega manji, a svi desno su veći od i– Red Black Tree
• Prednost: brzo pretraživanje složenosti O(log2 n)• Nedostatak: skupo dodavanje zapisa uslijed
preslagivanja stabla– Bitno je da je visina stabla što manja– Želimo izbjeći da stablo izgleda poput uređene liste
![Page 33: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/33.jpg)
Raspršeno adresiranje
• Poznato i kao Hash tablica– Podaci se spremaju u pretince tablice– Adresa pretinca se dobije kao vrijednost hash
funkcije koja leksičkoj jedinki pridružuje pretinac
– Postoje zatvoreno i otvoreno hash-iranje
• Dobar izbor hash funkcije u idealnom slučaju vodi na složenost O(1) i za pretraživanje i za dodavanje zapisa
![Page 34: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/34.jpg)
Dinamika izvođenja L.A.
• Suradnja leksičkog i sintaksnog analizatora ostavaruje se na dva načina:– Putem poziva potprograma
• Leksički analizator je potprogram sintaksnog• Sintaksni analizator poziva leksički kada mu zatreba novi
uniformni znak• Leksički analizator čita znakove izvornog programa sve dok ne
odredi klasu leksičke jedinke, nakon čega sintaksnom analizatoru vraća uniformni znak
– Razmjenom čitave tablice uniformnih znakova• Leksički analizator je zasebni program koji generira cijelu
tablicu uniformnih znakova i pohrani je u datoteku, te završava s radom
• Sintaksni analizator se pokreće kasnije, te čita uniformne znakove iz datoteke
![Page 35: Interpretacija programa Leksi ka analizaweb.math.pmf.unizg.hr/nastava/ip/?download=04_IP_Leksicka_analiza.pdf · • Sintaksni analizator poziva leksi čki kada mu zatreba novi uniformni](https://reader030.vdocuments.mx/reader030/viewer/2022040501/5e2180390f21e51ea131e2f8/html5/thumbnails/35.jpg)
Literatura
• Siniša Srbljić: Jezični procesori 1 [JP1]• Siniša Srbljić: Jezični procesori 2 [JP2]