Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lfa:proiect:etapa2 [2021/11/24 01:25]
stefan.stancu [Metodologia de testare:]
lfa:proiect:etapa2 [2021/12/23 00:48] (current)
stefan.stancu [Etapa 2 - Transformarea Regex-urilor la AFD-uri]
Line 1: Line 1:
 ====== Etapa 2 - Transformarea Regex-urilor la AFD-uri ====== ====== Etapa 2 - Transformarea Regex-urilor la AFD-uri ======
 +
 +**Update legat de upload**: incarcati o arhiva ce contine **atat fisierele sursa, cat si directorul de testare tests/ si script-ul checker.py**.
 +
 +**Checker si teste**: [[lfa:​proiect:​checker|Checker proiect LFA]].
  
 Transformarea Regex-AFD ne permite operationalizarea expresiilor regulate, iar aceasta este o parte importanta atat dintr-un lexer cat si dintr-un parser. Transformarea Regex-AFD ne permite operationalizarea expresiilor regulate, iar aceasta este o parte importanta atat dintr-un lexer cat si dintr-un parser.
Line 24: Line 28:
 <​code>​ <​code>​
 UNION CONCAT a b STAR c UNION CONCAT a b STAR c
 +</​code>​
 +<​code>​
 +CONCAT UNION a b UNION c d
 </​code>​ </​code>​
 <​code>​ <​code>​
Line 29: Line 36:
 </​code>​ </​code>​
 <​code>​ <​code>​
-STAR UNION CONCAT a b CONCAT b STAR d+STAR UNION CONCAT a b CONCAT b STAR d 
 +</​code>​ 
 +<​code>​ 
 +CONCAT PLUS c UNION a PLUS b 
 </​code>​ </​code>​
 ===== Cerinta si descrierea outputului ===== ===== Cerinta si descrierea outputului =====
Line 67: Line 77:
 ===== Development si testare ===== ===== Development si testare =====
  
-Pentru a testa AFD-urile generate de voi, veti avea nevoie de o modalitate de afisare a acestora in text. Va sugeram sa adaugati la aceasta si o modalitate grafica. Atasam un script Python3 care poate fi folosit pentru a desena AFD-uri:+Pentru a testa AFD-urile generate de voi, veti avea nevoie de o modalitate de afisare a acestora in text. Va sugeram sa adaugati la aceasta si o modalitate grafica. Atasam un script Python3 ​({{:​lfa:​proiect:​draw_fa.zip|}}) ​care poate fi folosit pentru a desena AFD-uri:
   * script-ul primeste in linia de comanda un fisier CSV ce contine un AFD, si deseneaza AFD-ul respectiv.   * script-ul primeste in linia de comanda un fisier CSV ce contine un AFD, si deseneaza AFD-ul respectiv.
   * va fi necesar sa instalati anumite module pentru a rula scriptul (e.g. networkx, numpy).   * va fi necesar sa instalati anumite module pentru a rula scriptul (e.g. networkx, numpy).
Line 84: Line 94:
       * tranzitiile sunt codificate pe linii, sub forma: ''​stare initiala, caracter, stare finala''​       * tranzitiile sunt codificate pe linii, sub forma: ''​stare initiala, caracter, stare finala''​
       * pentru legibilitate,​ starile finale au fost precedate de simbolul ''​f''​       * pentru legibilitate,​ starile finale au fost precedate de simbolul ''​f''​
-  * [TODO: link catre script pe github-ul LFA] 
- 
  
  
Line 124: Line 132:
  
  
-===== Metodologia de testare: ===== 
-  * construim un fisier mare cu expresii regulate **de mana**, peste diverse alfabete, care sa acopere cat mai multe din toate situatiile posibile, impreuna cu cuvinte acceptate sau nu. Acest fisier va trebui discutat eventual cu fiecare dintre noi. Exemplu: 
-  <​code>​ 
-  0 
-  ACCEPT 0 
-  REJECT 01 
-  REJECT 10 
-  ​ 
-  00* 
-  ACCEPT 0000000000 
-  REJECT 1 
-  REJECT ε 
-  </​code>​ 
-  * parsam expresiile cu implementarea noastra, generam forma prenex, si creem **mai multe perechi de fisiere separate, input-output** - in fiecare fisier input se va gasi o expresie si cuvintele de test. Ficare fisier de output va marca rezultatul asteptat. Exemplu: 
-   * Test0.in 
- <​code>​ 
-  0 
-  0 
-  01 
-  10 
- </​code>​ 
-   * Test0.out 
- <​code>​ 
- ​ACCEPT ​ 
- ​REJECT 
- ​REJECT 
- </​code>​ 
-   * Test1.in 
-  <​code>​ 
-  CONCAT 0 STAR 0 
-  0000000000 
-  1 
-  ε 
-  </​code>​ 
-   * Test1.out 
-  ​ 
-  <​code>​ 
-  ACCEPT 
-  REJECT 
-  REJECT 
-  </​code>​ 
- 
-  * Vom verifica, fiecare, ca outputul este corect, folosind implementarile noastre. 
  
-===== Metodologia de testare===== +===== Metodologia de testare ===== 
-Odata generate AFD-urile de catre implementarea voastra si afisate in cadrul fisierlor de output, checker-ul etapei 2 va compara rezultatele fata de o suita de AFD-uri de referinta, verificand pentru fiecare caz in parte daca automatele accepta acelasi limbaj. Mai multe detalii ​vor fi oferite in momentul in care scriptul ​de testare va fi facut public.+Odata generate AFD-urile de catre implementarea voastra si afisate in cadrul fisierlor de output, checker-ul etapei 2 compara rezultatele fata de o suita de AFD-uri de referinta, verificand pentru fiecare caz in parte **daca automatele accepta acelasi limbaj**. Mai multe detalii ​legate ​de checker gasiti pe pagina [[lfa:​proiect:​checker|Checker proiect LFA]].