Re: Tip Tokena
> Na vezbama iz pp Jovan Popovic je izmedju ostalog
> preporucio da tokene podelimo u nekoliko osnovnih
> tipova kao sto bi bili "operatori, kljucne reci, promenljive,
> konstante...". To bi navodno olaksalo realizaciju sintaksnog
> analizatora. Ja sam to shvatio na sledeci nacin :
> Prema prezentaciji o Jlex-u u kojoj pise
> " Kako razlikovati tip tokena?
> Izvodenjem novih klasa iz klase Yytoken
> Analizator vraca podklase
> Postavljanjem atributa tip u klasu Yytoken
> Tipovi se navode u klasi sym.java "
Poztoje dva nacina za razlikovonje tokena:
1. Da se za svaki tip tokena izvede nova podklasa klase YYToken
2. Da se koristi jedna klasa YYToken koja ima polje koje sadrzi
informaciju o tipu tokena. Tip tokena je int konstanta definisana u klasi
sym.
Primeri su u vezbama.
>
> Dakle za svaki tip tokena kao sto je operator, kljucna rec,...
> trebalo bi izvesti potklasu iz klase Yytoken. To bi znacilo
> da u okviru svake potklase treba da postoji dodatni atribut
> koji bi sluzio za razlikovanje podtipova, npr u slucaju
> operatora koji je konkretno operator u pitanju (+, -,*, /,++...),
> u slucaju kljucne reci o kojoj kljucnoj reci se radi
> (class, public, package) itd. Sta u tom slucaju znaci ona
> teza iz prezentacije :
> " Postavljanjem atributa tip u klasu Yytoken ",
> jel se misli na tip koji bi odredio da li se radi o operatoru,
> kljucnoj reci, promenljivoj, ... ili bi taj tip nosio kompletnu
> informaciju kao sto je konkretna vrsta operatora, koja je
> konkretna kljucna rec itd.
> Sta dalje, znaci ono :
> " Tipovi se navode u klasi sym.java "?
> Na koje se tipove misli ?
Za svaki token treba definisati int konstantu i definisati je u klasi sym
> Na kraju potpuno me je zbunila postavka domaceg u kojoj
> se i ne pominje klasa Yytoken, nego klasa Symbol.
Projektuje se CUP-kompatibilni parser
> Ona ima atribut int sym koji bi trebao da govori o tipu
> tokena. Kako onda realizovati ono sa deljenjem u osnovne
> tipove koji dalje imaju svoje podtipove za svaku konkretnu
> instancu. Da li iz klase Symbol treba izvoditi potklase
> za svaki osnovni tip tokena kao sto bi radili za klasu
> Yytoken ?
> U uputstvu za domaci pise " Projektovati klasu
> java_cup.runtime.Symbol ...".
> Sta predstavlja java_cup.runtime? Jel to ime paketa u
> kojem treba da se nalazi klasa Symbol? Da li je to vec
> negde definisan paket u okviru okruzenja za JLex ?
>
U domacem zadatku pise:
Generisani leksièki analizator mora biti CUP-kompatibilan tj. Mora
implementirati interfejs java_cup.runtime.Scanner.
Scanner i Symbol su deo CUP specifikacije i dati su u postavci, a nalaze
se u CUP okruzenju(mada vam ono za sada nije potrebno).
Za CUP-kompatibilne parsere se ne mogu izvoditi nove klase iz klase Symbol
nego se mora definisati polje tip kojim se razlikuju tokeni.
Pozdrav,
Jovan
> Pozdrav
> preporucio da tokene podelimo u nekoliko osnovnih
> tipova kao sto bi bili "operatori, kljucne reci, promenljive,
> konstante...". To bi navodno olaksalo realizaciju sintaksnog
> analizatora. Ja sam to shvatio na sledeci nacin :
> Prema prezentaciji o Jlex-u u kojoj pise
> " Kako razlikovati tip tokena?
> Izvodenjem novih klasa iz klase Yytoken
> Analizator vraca podklase
> Postavljanjem atributa tip u klasu Yytoken
> Tipovi se navode u klasi sym.java "
Poztoje dva nacina za razlikovonje tokena:
1. Da se za svaki tip tokena izvede nova podklasa klase YYToken
2. Da se koristi jedna klasa YYToken koja ima polje koje sadrzi
informaciju o tipu tokena. Tip tokena je int konstanta definisana u klasi
sym.
Primeri su u vezbama.
>
> Dakle za svaki tip tokena kao sto je operator, kljucna rec,...
> trebalo bi izvesti potklasu iz klase Yytoken. To bi znacilo
> da u okviru svake potklase treba da postoji dodatni atribut
> koji bi sluzio za razlikovanje podtipova, npr u slucaju
> operatora koji je konkretno operator u pitanju (+, -,*, /,++...),
> u slucaju kljucne reci o kojoj kljucnoj reci se radi
> (class, public, package) itd. Sta u tom slucaju znaci ona
> teza iz prezentacije :
> " Postavljanjem atributa tip u klasu Yytoken ",
> jel se misli na tip koji bi odredio da li se radi o operatoru,
> kljucnoj reci, promenljivoj, ... ili bi taj tip nosio kompletnu
> informaciju kao sto je konkretna vrsta operatora, koja je
> konkretna kljucna rec itd.
> Sta dalje, znaci ono :
> " Tipovi se navode u klasi sym.java "?
> Na koje se tipove misli ?
Za svaki token treba definisati int konstantu i definisati je u klasi sym
> Na kraju potpuno me je zbunila postavka domaceg u kojoj
> se i ne pominje klasa Yytoken, nego klasa Symbol.
Projektuje se CUP-kompatibilni parser
> Ona ima atribut int sym koji bi trebao da govori o tipu
> tokena. Kako onda realizovati ono sa deljenjem u osnovne
> tipove koji dalje imaju svoje podtipove za svaku konkretnu
> instancu. Da li iz klase Symbol treba izvoditi potklase
> za svaki osnovni tip tokena kao sto bi radili za klasu
> Yytoken ?
> U uputstvu za domaci pise " Projektovati klasu
> java_cup.runtime.Symbol ...".
> Sta predstavlja java_cup.runtime? Jel to ime paketa u
> kojem treba da se nalazi klasa Symbol? Da li je to vec
> negde definisan paket u okviru okruzenja za JLex ?
>
U domacem zadatku pise:
Generisani leksièki analizator mora biti CUP-kompatibilan tj. Mora
implementirati interfejs java_cup.runtime.Scanner.
Scanner i Symbol su deo CUP specifikacije i dati su u postavci, a nalaze
se u CUP okruzenju(mada vam ono za sada nije potrebno).
Za CUP-kompatibilne parsere se ne mogu izvoditi nove klase iz klase Symbol
nego se mora definisati polje tip kojim se razlikuju tokeni.
Pozdrav,
Jovan
> Pozdrav
- References:
- Tip Tokena
- From: "Bojic Petar" <rapecafa@verat.net>
- Tip Tokena
Previous by date: Pitanje u vezi domaceg (CUP)
Next by date: Re: Pitanje u vezi domaceg (CUP)
Previous by thread: RE: Knjiga Modern Compiler implementation in Java 2nd edition? Next by thread: u ponedeljak nece biti casova
Previous by thread: RE: Knjiga Modern Compiler implementation in Java 2nd edition? Next by thread: u ponedeljak nece biti casova