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:2025:proiect:etapa2 [2025/11/25 19:06]
pdmatei
lfa:2025:proiect:etapa2 [2025/12/30 14:28] (current)
ldaniel
Line 3: Line 3:
 Deadline etapa 2: 16 ian 2026 23:55 Deadline etapa 2: 16 ian 2026 23:55
  
-Link etapa 1 [[lfa:​2025:​proiect:​etapa1| Etapa 1]]+Link etapa 1[[lfa:​2025:​proiect:​etapa1| Etapa 1]] 
 + 
 +Schelet de cod (actualizat 30 decembrie): {{:​lfa:​2025:​proiect:​lfa2025_skel_etapa2_v3.zip|}} 
  
-Schelet de cod: {{:​lfa:​2025:​proiect:​lfa2025_skel_etapa2.zip|}} 
  
  
 ====== Etapa 2 ====== ====== Etapa 2 ======
  
-**Etapa 2** a proiectul ​consta in implementarea unui Lexer in Python si, pe baza acestuia, implementarea unui Parser elementar pentru expresii lambda.+**Etapa 2** a proiectului ​consta in implementarea unui Lexer in Python si, pe baza acestuia, implementarea unui Parser elementar pentru expresii lambda.
  
 Pentru rezolvarea etapei 2, aveti nevoie de solutia de la etapa 1.  Pentru rezolvarea etapei 2, aveti nevoie de solutia de la etapa 1. 
Line 74: Line 76:
 Un parser foloseste output-ul produs de lexer pentru etapa de analiza sintactica a textului. ​ Un parser foloseste output-ul produs de lexer pentru etapa de analiza sintactica a textului. ​
  
-Construim un parser pe baza unei gramatici care contine reguli ce descriu sintaxa valida a inputului. O astfel de gramatica va folosi ​lexemele ​generate de analiza lexicala in rolul de terminali.+Construim un parser pe baza unei gramatici care contine reguli ce descriu sintaxa valida a inputului. O astfel de gramatica va folosi ​categoriile lexicale ​generate de analiza lexicala in rolul de terminali.
  
 === Sintaxa pentru gramatici === === Sintaxa pentru gramatici ===
Line 121: Line 123:
 3. Completati specificatia pentru Lexerul de expresii lambda in fisierul "​**lexer_spec.json**",​ adaugand regex-ul potrivit pentru fiecare Token. 3. Completati specificatia pentru Lexerul de expresii lambda in fisierul "​**lexer_spec.json**",​ adaugand regex-ul potrivit pentru fiecare Token.
  
-4. In clasa Parser completati metoda "​parse", ​pentru a scrie un parser general ​care citeste o gramatica in FNC din fisierul primit ca parametru la initializare ​si returneaza arborele de parsare.+4. In clasa Parser completati metoda "​parse",​ care primeste un text de intrare ​si returneaza arborele de parsare. Folositi-va de campurile lexer si grammar ale parserului pentru analiza lexicala si apoi analiza sintactica a textului. Dupa analiza lexicala va trebui sa ignoratii tokenii SPACE inainte de a trece la analiza sintactica.
  
  
Line 174: Line 176:
 │   ├── __init__.py │   ├── __init__.py
 │   ├── DFA.py │   ├── DFA.py
-│   ├── Grammar.py 
-│   ├── Lexer.py 
 │   ├── NFA.py │   ├── NFA.py
 +│   ├── Regex.py
 +│   ├── Lexer.py
 │   ├── Parser.py │   ├── Parser.py
 +│   ├── Grammar.py
 │   ├── ParseTree.py │   ├── ParseTree.py
 |   ... (alte surse pe care le folositi) |   ... (alte surse pe care le folositi)