User Tools

Site Tools


laboratoare:06-aplicatii-cu-tda-uri

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

===== Laborator 6 - Aplicatii cu TDA-uri ===== <code> <expr> ::= <valoare> | <variabila> | <expr> + <expr> | <expr> * <expr> | (<expr>) <variabila> ::= string <valoare> :: orice <program> ::= <variabila> = <expr> | if <expr> then <prog> else <prog> | <prog> ; <prog> | return <variabila> </code> - Definiti un tip de date care codifica expresii ''<expr>'' generate de gramatica BNF de mai sus * Tipul definit de voi va fi monomorfic sau polimorfic? - Inrolati tipul vostru in clasa ''Show''. Definiti explicit o reprezentare (usor de urmarit) - Definiti o expresie formata cu intregi (care va fi folosita ulterior pentru testare) - Definiti un tip care reprezinta o multime de asocieri ale unor variabile la valori. Obiecte avand un astfel de tip sunt //interpretari// pentru o multime de variable. Interpretarea pentru o variabila consta intr-o valoare. - Definiti o functie ''eval'' care determina rezultatul unei expresii, pe baza unei interpretari: * scrieti signatura pentru ''eval'' * realizati implementarea efectiva - Definiti un tip de date care codifica expresii ''<program>'' generate de gramatica BNF de mai sus. * Tipul definit de voi va fi monomorfic sau polimorfic? - Inrolati tipul definit de voi in clasa ''Show''. - Definiti o clasa (type-class) ''Evaluable'' care modeleaza **o relatie** intre un **tip container** si un **tip continut** de containerul respectiv. * Relatia specifica faptul ca tipul container poate fi evaluat, in raport cu o interpretare pentru elemente de tipul continut de container. * 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>'', si un tip generic. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior. * Realizati o instanta a ''Evaluable'' pentru constructorul de tip al ''<program>'', si un tip generic. Mai exact, implementati evaluarea unui program. * 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

laboratoare/06-aplicatii-cu-tda-uri.1427726008.txt.gz · Last modified: 2015/03/30 17:33 by matei.popovici