Differences
This shows you the differences between two versions of the page.
| 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) | ||