![]() ![]() |
| Politica de confidentialitate |
|
|
| • domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
| Structura lexicala Java | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.1 Setul de caractereLimbajului Java lucreaza in mod nativ folosind setul de caractere Unicode. Acesta este un standard international care inlocuieste vechiul set de caractere ASCII. Motivul acestei inlocuiri a fost necesitatea de a reprezenta mai mult de 256 de caractere. Setul de caractere Unicode, fiind reprezentat pe 16 biti are posibilitati mult mai mari. Vechiul standard ASCII este insa un subset al setului Unicode, ceea ce inseamna ca vom regasi caracterele ASCII cu exact aceleasi coduri ca si mai inainte in noul standard. Java foloseste setul Unicode in timpul rularii aplicatiilor ca si in timpul compilarii acestora. Folosirea Unicode in timpul executiei nu inseamna nimic altceva decat faptul ca o variabila Java de tip caracter este reprezentata pe 16 biti iar un sir de caractere va ocupa fizic in memorie de doua ori mai multi octeti decat numarul caracterelor care formeaza sirul. In ceea ce priveste folosirea Unicode in timpul compilarii, compilatorul Java accepta la intrare fisiere sursa care pot contine orice caractere Unicode. Se poate lucra si cu fisiere ASCII obisnuite in care putem introduce caractere Unicode folosind secvente escape. Fisierele sursa sunt fisiere care contin declaratii si instructiuni Java. Aceste fisiere trec prin trei pasi distincti la citirea lor de catre compilator:
In primul pas al citirii fisierului sursa, sunt generate secvente escape. Secventele escape sunt secvente de caractere ASCII care incep cu caracterul backslash \. Pentru secventele escape Unicode, al doilea caracter din secventa trebuie sa fie u sau U. Orice alt caracter care urmeaza dupa backslash va fi considerat ca fiind caracter nativ Unicode si lasat nealterat. Daca al doilea caracter din secventa escape este u, urmatoarele patru caractere ASCII sunt tratate ca si cifre hexazecimale (in baza 16) care formeaza impreuna doi octeti de memorie care reprezinta un caracter Unicode. Se pot folosi la intrare si fisiere ASCII normale, pentru ca ASCII este un subset al Unicode. De exemplu, putem scrie: int f\u0660 = 3; Numele variabilei are doua caractere si al doilea caracter este o cifra arabic-indic. Exemple de secvente Unicode: \uaa08 \U0045 \uu6abe In al doilea pas al citirii fisierului sursa, sunt recunoscute ca si caractere de sfarsit de linie caracterele ASCII CR si ASCII LF. In acelasi timp, secventa de caractere ASCII CR-ASCII LF este tratata ca un singur sfarsit de linie si nu doua. In acest mod, Java suporta in comun standardele de terminare a liniilor folosite de diferite sisteme de operare: MacOS, Unix si DOS. Este important sa separam caracterele de sfarsit de linie de restul caracterelor de intrare pentru a sti unde se termina comentariile de o singura linie (care incep cu secventa //) precum si pentru a raporta odata cu erorile de compilare si linia din fisierul sursa in care au aparut acestea. In pasul al treilea al citirii fisierului sursa, sunt izolate elementele de intrare ale limbajului Java, si anume: spatii, comentarii si unitati lexicale. Spatiile pot fi caracterele ASCII SP (spatiu), FF (avans de pagina) sau HT
(tab orizontal) precum si orice caracter terminator de linie. Comentariile le
vom discuta in paragraful 4.3. 4.2 Unitati lexicaleUnitatile lexicale sunt elementele de baza cu care se construieste semantica programelor Java. In sirul de cuvinte de intrare, unitatile lexicale sunt separate intre ele prin comentarii si spatii. Unitatile lexicale in limbajul Java pot fi: 4.2.1 Cuvinte cheieCuvintele cheie sunt secvente de caractere ASCII rezervate de limbaj pentru uzul propriu. Cu ajutorul lor, Java isi defineste unitatile sintactice de baza. Nici un program nu poate sa utilizeze aceste secvente altfel decat in modul in care sunt definite de limbaj. Singura exceptie este aceea ca nu exista nici o restrictionare a aparitiei cuvintelor cheie in siruri de caractere sau comentarii. Cuvintele cheie ale limbajului Java sunt:
Dintre acestea, cele ingrosate sunt efectiv folosite, iar restul sunt rezervate
pentru viitoare extensii ale limbajului. 4.2.2 IdentificatoriIdentificatorii Java sunt secvente nelimitate de litere si cifre Unicode, incepand cu o litera. Identificatorii nu au voie sa fie identici cu cuvintele rezervate. Cifrele Unicode sunt definite in urmatoarele intervale:
Tabelul 4.1 Cifrele Unicode.Un caracter Unicode este o litera daca este in urmatoarele intervale si nu este cifra:
Tabelul 4.2 Literele Unicode.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Secventa escape |
Caracterul reprezentat |
'\b' |
caracterul backspace BS \u0008 |
'\t' |
caracterul tab orizontal HT \u0009 |
'\n' |
caracterul linefeed LF \u000a |
'\f' |
caracterul formfeed FF \u000c |
'\r' |
caracterul carriage return CR \u000d |
'\"' |
caracterul ghilimele \u0022 |
'\'' |
caracterul apostrof \u0027 |
'\\' |
caracterul backslash \u005c |
In forma generala, o secventa escape se scrie sub una din formele:
'\o' '\oo''\too'
unde o este o cifra octala iar t este o cifra octala intre 0 si 3.
Nu este corect sa folositi ca valori pentru literale caracter secventa '\u000d' (caracterul ASCII CR), sau altele care reprezinta caractere speciale, pentru ca acestea fiind secvente escape Unicode sunt transformate foarte devreme in timpul procesarii sursei in caractere CR si sunt interpretate ca terminatori de linie.
Exemple de secvente escape:
'\n''\u23a''\34'
daca dupa caracterul backslash urmeaza altceva decat: b, t, n, f, r, ", ', \, 0, 1, 2, 3, 4, 5, 6, 7 se va semnala o eroare de compilare.
In acest moment secventele escape Unicode au fost deja inlocuite cu caractere
Unicode native. Daca u apare dupa \, se semnaleaza o eroare de compilare. ![]()
Un literal sir de caractere este format din zero sau mai multe caractere intre ghilimele. Caracterele care formeaza sirul de caractere pot fi caractere grafice sau secvente escape ca cele definite la literalii caracter.
Daca un literal sir de caractere contine in interior un caracter terminator de linie va fi semnalata o eroare de compilare. Cu alte cuvinte, nu putem avea in sursa ceva de forma:
"Acesta este gresit!"
chiar daca aparent exprimarea ar reprezenta un sir format din caracterele A, c, e, s, t, a, spatiu, e, s, t, e, linie noua, g, r, e, s, i, t, !. Daca dorim sa introducem astfel de caractere terminatoare de linie intr-un sir va trebui sa folosim secvente escape ca in:
"Acesta este\ngresit"
Daca sirul de caractere este prea lung, putem sa-l spargem in bucati mai mici pe care sa le concatenam cu operatorul +.
Fiecare sir de caractere este in fapt o instanta a clasei de obiecte String declarata standard in pachetul java.lang.
Exemple de siruri de caractere:
"""\"""Sir de caractere""unu" + "doi"
Primul sir de caractere din exemplu nu contine nici un caracter si se numeste
sirul vid. Ultimul exemplu este format din doua siruri distincte concatenate.
![]()
Un separator este un caracter care indica sfarsitul unei unitati lexicale si inceputul alteia. Separatorii sunt necesari atunci cand unitati lexicale diferite sunt scrise fara spatii intre ele. Acestea se pot totusi separa daca unele dintre ele contin caractere separatori. In Java separatorii sunt urmatorii:
( ) A S a i ; , .
Exemple de separare:
aaiisin(56)
In primul exemplu nu avem o singura unitate lexicala ci patru: a, a, i, i. Separatorii a si i ne dau aceasta informatie. In al doilea exemplu, unitatile lexicale sunt tot 4 sin, (, 56, ).
Atentie, separatorii participa in acelasi timp si la constructia sintaxei limbajului.
Ei nu sunt identici cu spatiile desi, ca si acestea, separa unitati lexicale
diferite. ![]()
Operatorii reprezinta simboluri grafice pentru operatiile elementare definite de limbajul Java. Despre operatori vom discuta mai mult atunci cand vom prezenta expresiile. Deocamdata, iata lista tuturor operatorilor limbajului Java:
=><!I?: ==<=>=!=&&||++-- +-*/&|^%<<>> >>> +=-=*=/=&=|=^=%=<<=>>=>>>=
Sa mai precizam deocamdata ca toti operatorii joaca si rol de separatori. Cu alte cuvinte, din secventa de caractere:
vasile+gheorghe
putem extrage trei unitati lexicale, vasile, + si gheorghe. ![]()
Un comentariu este o secventa de caractere existenta in fisierul sursa dar care serveste doar pentru explicarea sau documentarea sursei si nu afecteaza in nici un fel semantica programelor.
In Java exista trei feluri de comentarii:
In Java, nu putem sa scriem comentarii in interiorul altor comentarii. La fel, nu putem introduce comentarii in interiorul literalilor caracter sau sir de caractere. Secventele /* si */ pot sa apara pe o linie dupa secventa // dar isi pierd semnificatia. La fel se intampla cu secventa // in comentarii care incep cu /* sau /**.
Ca urmare, urmatoarea secventa de caractere formeaza un singur comentariu:
/* acest comentariu /* // /* se termina abia aici: */
| Comentarii: |
| Noteaza documentul: In prezent fisierul este notat cu: ? (media unui numar de ? de note primite). |
|
|