This is an old revision of the document!
În cadrul acestei teme veti implementa atât analiza semnatică pentru limbajul LCPL.
Va trebui să realizaţi în limbajul C++, porţiunea responsabilă cu analiza semantică a codului rezultat in urma temei 1. Programul vostru va trebui să primească la intrare output-ul temei 1 şi să genereze […], in cazul in care analiza semnatica nu a detectat erori, sau o lista de erori.
În cadrul analizei semantice va trebui să colectați informații semantice (de ex. tipul expresiilor) și să verificați că programul reprezentat de AST-ul construit la tema 1 respectă restricțiile impuse de limbajul LCPL (a se consulta în acest sens manualul). Analiza va avea doua scopuri:
1) Obținerea informațiilor ce sunt necesare pentru generarea de cod:
2) Verificarea corectitudinea definirii structurii de clase a programului. Câteva exemple de probleme care ar trebui semnalate la acest pas:
În procesul de a obține informațiile din primul paragraf, puteți întâlni erori, cum sunt cele exemplificate in al doilea paragraf. Aceste erori trebuie raportate ca erori semantice.
Arhiva conține o implementare parțială a analizei semantice pentru LCPL. Ceea ce trebuie să faceți este să identificați porțiunile lipsa (marcate cu un comentariu TODO in cod ) și să completați cu logica necesară conform indicațiilor de acolo.
Porțiunile lipsă se găsesc în fișierele src/SemanticAnalysis.cpp si src/TypeTable.cpp . Puteți modifica sau adăuga și alte fișiere, dar nu este neapărat necesar. Dacă simțiți nevoia unui fișier #include suplimentar, puteți folosi include/SemanticAnalysisImpl.h .
Framework-ul conține:
- TBD