User Tools

Site Tools


laboratoare:06-aplicatii-cu-tda-uri

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
laboratoare:06-aplicatii-cu-tda-uri [2015/04/01 07:57]
matei.popovici
laboratoare:06-aplicatii-cu-tda-uri [2015/05/07 13:48] (current)
radu.stoenescu
Line 3: Line 3:
    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)
    <​variabila>​ ::= string    <​variabila>​ ::= string
-   <​valoare>​ :: orice+   <​valoare>​ ::orice
        
-   <program> ::= <​variabila>​ = <​expr>​ | if <​expr>​ then <​prog>​ else <​prog>​ | <​prog>​ ; <​prog>​ | return <​variabila>​+   <prog> ::= <​variabila>​ = <​expr>​ | if <​expr>​ then <​prog>​ else <​prog>​ | <​prog>​ ; <​prog>​ | return <​variabila>​
 </​code> ​   </​code> ​  
   - Definiti un tip de date care codifica expresii ''<​expr>''​ generate de gramatica BNF de mai sus   - Definiti un tip de date care codifica expresii ''<​expr>''​ generate de gramatica BNF de mai sus
Line 15: Line 15:
       * scrieti signatura pentru ''​eval''​       * scrieti signatura pentru ''​eval''​
       * realizati implementarea efectiva       * realizati implementarea efectiva
-  - Definiti un tip de date care codifica expresii ''<​program>''​ generate de gramatica BNF de mai sus.+  - Definiti un tip de date care codifica expresii ''<​prog>''​ generate de gramatica BNF de mai sus.
       * Tipul definit de voi va fi monomorfic sau polimorfic?       * Tipul definit de voi va fi monomorfic sau polimorfic?
   - Inrolati tipul definit de voi in clasa ''​Show''​.   - Inrolati tipul definit de voi in clasa ''​Show''​.
-  - Definiti o clasa (type-class) ''​Evaluable''​ care modeleaza faptul ca o valoare **de tip //​container//​** poate fi evaluata la o valore ​de **tipul continut** de containerul respectiv. ​+  - Definiti o clasa (type-class) ''​Evaluable''​ care modeleaza faptul ca o valoare **de tip //​container//​** poate fi evaluata la o valoare ​de **tipul continut** de containerul respectiv. ​
        * Clasa pune la dispozitie o singura operatie ''​eval''​ care generalizeaza operatia eval definita pentru expresii        * Clasa pune la dispozitie o singura operatie ''​eval''​ care generalizeaza operatia eval definita pentru expresii
        * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​expr>''​. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior.        * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​expr>''​. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior.
Line 24: Line 24:
            * In implementare,​ observati ca interpretarea se modifica pe masura ce programul este evaluat. ​            * In implementare,​ observati ca interpretarea se modifica pe masura ce programul este evaluat. ​
            * Asadar, aveti nevoie de o functie auxiliara, care construieste o interpretare,​ pe baza unui program            * Asadar, aveti nevoie de o functie auxiliara, care construieste o interpretare,​ pe baza unui program
 +
 +[[https://​github.com/​Programming-Paradigms/​Labs/​archive/​master.zip|Solutii]]
laboratoare/06-aplicatii-cu-tda-uri.1427864230.txt.gz ยท Last modified: 2015/04/01 07:57 by matei.popovici