Exercice 1, q1

            A0 → ( )
            A1+max(h1,h2)  → ( num Ah1 Ah2 )
        

Exercice 1, q2

            Aa → ( Asa
            As0 → )
            As1+max(h1,h2)  → num Ah1 Ah2 )
        

Exercice 1, q3

            AV_MAX V_MIN → ( )
            Amin(v,m1) max(v,M2)  → ( numv Am1 M1 Am2 M2 )     condition : M1 ≤ v ≤ m2
        

Exercice 1, q4

            Root → AV_MIN V_MAX
            Amin max → ( )
            Amin max → ( numv Amin v Av max )    condition : min ≤ v ≤ max
        

Exercice 2, q1-2, s1

            Program → suite-inst{} init 

            suite-instinit fin → suite-instinit init2  instinit2 fin
            suite-instinit fin → instinit fin
            instinit init ⋃ aff → affectinit aff ;

            affectinit {nom} → idfnom := expinit

            expinit → idfnom      condition : nom ∈ init
            expinit → num

            ---------- q2

            instinit fin → condinit fin
            
            condinit init1 ⋂ init2 → if expinit then suite-instinit init1 suite-condinit init2 end ;
            
            suite-condinit fin → else suite-instinit fin
            suite-condinit init → ϵ
        

Exercice 2, q1-2, s2

            Program → suite-instutil init         condition : util = {}

            suite-instutil1 ⋂ (util2 − init1) init1 ⋃ init2  → suite-instutil1 init1   instutil2 init2
            suite-instutil init  → instutil init
            instutil init → affectutil init ;
            affectutil {nom} → idfnom := exputil

            exp{nom}  → idfnom
            exp{}  → num

            ---------- q2

            instutil init → condutil init
            
            condutil1 ⋃ util2 init1 ⋂ init2 → if exputil then suite-instutil1 init1 suite-condutil1 init1 end ;
            
            suite-condutil init → else suite-instutil init
            suite-cond{} {} → ϵ