Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl:teme-draft:t2-draft-2015 [2015/11/24 11:27]
bogdan.nitulescu
— (current)
Line 1: Line 1:
-==T2 Draft== 
  
-În cadrul acestei teme veti implementa atât analiza semnatică pentru limbajul LCPL. 
- 
-===== Informaţii organizatorice ===== 
- 
-  * **Deadline**:​ Termenul limită până când se pot trimite temele fără depunctări de întârziere este **joi, 17 decembrie 2015, ora 23:59**. Pentru mai multe detalii, consultaţi [[:​cpl:​teme:​general|regulamentul]] aferent temelor de casă. 
-  * **Colaborare**:​ Tema va fi rezolvată **individual**. 
-  * **Punctare**:​ 125p pentru implementarea completă şi corectă 
- 
- 
-===== Enunţ ===== 
- 
-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. 
- 
-===== Analiza Semantica ===== 
- 
-Î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) Se va verifica corectitudinea definirii structurii de clase a programului. Câteva exemple de probleme care ar trebui semnalate la acest pas: 
-  *   ​definirea unei clase de mai multe ori sau redefinirea uneia de bază - deja implementată în arhiva de pornire 
-  *   ​moștenirea unui tip care nu poate avea succesori (String, Int) - deja implementată în arhiva de pornire 
-  *   ​absența unei clase Main cu metoda main - deja implementată în arhiva de pornire 
-  *   ​moșteniri recursive (A moștenește B care moștenește A) 
-  *   ​variabilă sau clasă nedefinită 
-  *   ​metodă inexistentă sau apel nevalid (de ex. ca nr. de parametri) 
-  *   ​incompatibilitate de tipuri (între operanzi și operator, în argumentele unei funcții etc.) 
- 
-2) Dacă primul pas a fost trecut cu succes, veți completa cu informații suplimentare fiecare nodurile din AST. Exemple de informații ce sunt necesare pentru generarea de cod: 
-  *   Tipul fiecărei expresii, variabile locale, metode, parametru formal sau atribut 
-  *   Clasa de baza a fiecarei clase derivate. 
-  *   ​Pentru fiecare simbol folosit, se va identifica variabila pe care il refera (locala, parametru formal, atribut) 
-  *   ​Pentru fiecare apel de metoda, se vor identifica metoda care va fi apelata si clasa din care face parte. 
- 
- 
- 
- 
-===== Arhiva de pornire ===== 
-  * Biblioteca de runtime LCPL. Aceasta implementează clasele si funcțiile predefinite din LCPL. Pentru a putea folosi această bibliotecă va trebui sa înţelegeţi şi să respectaţi reprezentarea internă a obiectelor LCPL. 
-  * O **tema1** de referință 
-  * Un framework pentru analiza semantică și generarea de cod. 
-  
-===== Testare ===== 
-- TBD 
- 
-===== Testare automata ===== 
- 
-Testarea temei de casă va folosi o serie de teste ce vor fi disponibile pe vmchecker. Modul în care este distribuit punctajul pentru această temă este următorul: 
-  * **Testele publice (80p)** 
-    * Testele ''​simple''​ (40p) 
-    * Testele ''​advanced''​ (30p) 
-    * Testele ''​complex''​ (10p)  
-  * **Calitatea implementării (20p)** 
-    * Organizarea codului sursă 
-    * Comentariile din cod 
-    * Explicațiile din README - acestea trebuie să conţină o prezentare extinsă a modului de implementare a temei şi a problemelor întâmpinate pe parcurs. ​ 
-  
cpl/teme-draft/t2-draft-2015.1448357236.txt.gz · Last modified: 2015/11/24 11:27 by bogdan.nitulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0