Documente Academic
Documente Profesional
Documente Cultură
Analiză lexicală
Configurare proiect
Descărcat, i secheletul de laborator de pe Moodle. Dacă folosit, i IntelliJ sau
Eclipse, asigurat, i-vă că JDK-ul s, i calea către jar-ul de ANTLR sunt configurate
corect ı̂n cadrul proiectului. În mas, ina virtuală, jar-ul se află la
/usr/local/bin/antlr4.jar.
Exercit, iul 0
În cadrul laboratorului, vom utiliza limbajul CPLang. Începet, i prin a parcurge
manualul acestuia de pe Moodle.
De asemenea, familiarizat, i-vă cu scheletul de laborator, implementat la cursul
anterior, s, i rulat, i clasa Test pe fis, ierul program.txt. Parcurget, i s, i comentariile
din fis, ierul CPLangLexer.g4.
Obiectivul laboratorului este ca analizorul lexical implementat de voi să
recunoască ı̂n final tot, ii token-ii din fis, ierul manual.txt, care cont, ine secvent, a
de cod din manualul CPLang. Un exemplu de ies, ire posibilă a analizorului
pentru acest fis, ier se găses, te ı̂n reference.txt.
Exercit, iul 1
Implementat, i analizorul lexical astfel ı̂ncât să poată clasifica identificatori (nume
de variabile s, i de funct, ii), numere ı̂ntregi, operatori (aritmetici, de comparat, ie,
de atribuire), simbolul ;” s, i cuvintele cheie (if, then, else, fi, true, false).
”
Observat, ii:
• Analizorul lexical va considera tot, i literalii ı̂ntregi ca fiind numere pozitive.
Semnul minus” va fi tratat doar ca operator aritmetic.
”
• Identificatorii ı̂ncep cu litera mică, s, i pot cont, ine apoi litere mici, litere
mari s, i underscore.
1
Exercit, iul 2
Extindet, i analizorul astfel ı̂ncât să trateze corect numele de tipuri de date,
parantezele, acoladele s, i comentariile pe un singur rând.
Observat, ii:
Exercitiul 3
Implementat, i tratarea literalilor cu virgula mobilă s, i a comentariilor bloc imbricate
ı̂mperecheate.
Observat, ii:
• Comentariile care nu au simbol-pereche (ex: ”/* /* */”) sunt considerate
erori lexicale. Prin urmare vet, i afis, a un mesaj la stderr dacă ı̂ntâlnit, i
o astfel de situat, ie. Utilizat, i pentru aceasta act, iuni introduse direct ı̂n
specificat, a lexicală (vezi ca exemplu regula STRING) s, i token-ul predefinit
EOF.