<expr> ::= <valoare> | <variabila> | <expr> + <expr> | <expr> * <expr> | (<expr>) <variabila> ::= string <valoare> ::= orice <prog> ::= <variabila> = <expr> | if <expr> then <prog> else <prog> | <prog> ; <prog> | return <variabila>
<expr>
generate de gramatica BNF de mai susShow
. Definiti explicit o reprezentare (usor de urmarit)eval
care determina rezultatul unei expresii, pe baza unei interpretari:eval
<prog>
generate de gramatica BNF de mai sus.Show
.Evaluable
care modeleaza faptul ca o valoare de tip container poate fi evaluata la o valoare de tipul continut de containerul respectiv. eval
care generalizeaza operatia eval definita pentru expresiiEvaluable
pentru constructorul de tip al <expr>
. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior.Evaluable
pentru constructorul de tip al <program>
. Mai exact, implementati evaluarea unui program.