Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lfa:2024:proiect:etapa2 [2024/11/22 16:04] pdmatei |
lfa:2024:proiect:etapa2 [2024/11/24 19:02] (current) atoader |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{:lfa:2024:proiect:src.zip|}}Deadline etapa 1: 22 nov 2023 23:59 | + | Deadline etapa 1: 21 nov 2024 23:55 |
- | Deadline etapa 2: 6 dec 2023 23:59 | + | Deadline etapa 2: 9 dec 2024 23:55 |
Schelet etapa 1 {{:lfa:2023:lfa2024-skel-etapa1.zip|}} | Schelet etapa 1 {{:lfa:2023:lfa2024-skel-etapa1.zip|}} | ||
Line 30: | Line 30: | ||
</code> | </code> | ||
- | In descrierea de mai sus, elementele dintre parantezele angulare <> sunt **non-terminali** care trebuie generati, caracterele sunt intotdeauna plasate intre ghilimele simple, iar sirurile intre ghilimele duble. | + | In descrierea de mai sus, elementele dintre parantezele angulare <> sunt **non-terminali** care trebuie generati, caracterele sunt intotdeauna plasate intre ghilimele simple, iar sirurile de caractere - intre ghilimele duble. |
- | ''<character>'' se refera la orice caracter obisnuit care nu face parte din caractele de //control// (precum ''*'' sau ''|''), sau la orice sir de lungime doi de forma ''\c'', unde ''c'' poate fi orice caracter inclusiv de control. | + | ''<character>'' se refera la orice caracter care nu face parte din caracterele de //control// (precum ''*'' sau ''|''), sau la orice sir de lungime doi de forma ''\c'', unde ''c'' poate fi orice caracter inclusiv de control (mai exact - caracter escapat). |
- | "eps" reprezinta caracterul Epsilon. | + | "eps" reprezinta caracterul $math[\epsilon]. |
==== Preprocesarea Regex-urilor ==== | ==== Preprocesarea Regex-urilor ==== | ||
Line 56: | Line 56: | ||
In aceasta clasa veti avea de implementat metoda ''thompson'', metoda care primeste un obiect de tip regex si intoarce un NFA (cu starile de tipul ''int'' ca si conventie). Regexul primit ca input va avea forma prezentata mai sus. | In aceasta clasa veti avea de implementat metoda ''thompson'', metoda care primeste un obiect de tip regex si intoarce un NFA (cu starile de tipul ''int'' ca si conventie). Regexul primit ca input va avea forma prezentata mai sus. | ||
- | Concatenarea nu va fi reprezentata printr-un caracter anume, vom considera ca constructiile de forma ''ab'' se traduc automat in "caracterul a concatenat cu caracterul b". Concatenarea oprindu-se astfel la intalnirea **unei paranteze** sau **a unei uniuni**. Spre exemplu: | + | Concatenarea nu va fi reprezentata printr-un caracter anume, vom considera ca constructiile de forma ''ab'' se traduc automat in "caracterul a concatenat cu caracterul b". Concatenarea oprindu-se astfel la intalnirea **unei paranteze** sau **a unei reuniuni**. Spre exemplu: |
- ''ab|c'' se traduce in ''(ab)|c'' | - ''ab|c'' se traduce in ''(ab)|c'' | ||
- ''abd*'' se traduce in ''ab(d)*'' | - ''abd*'' se traduce in ''ab(d)*'' | ||
Line 63: | Line 63: | ||
=== Hint de implementare === | === Hint de implementare === | ||
- | Pentru a va usura lucrul cu expresiile regulate, va puteti creea mai multe clase care extind din clasa regex (ex ''Character'', ''Star'', ''Union'', ''Concat'', etc...) iar fiecare clasa va avea propria implementare a metodei ''thompson''. | + | Pentru a va usura lucrul cu expresiile regulate, puteti creea mai multe clase care extind clasa regex (ex ''Character'', ''Star'', ''Union'', ''Concat'', etc...) iar fiecare clasa va avea propria implementare a metodei ''thompson''. |