Salve ragazzi, vorrei chiedervi se ho svolto bene il seguente esercizio:
Scrivere una grammatica lineare destra per l'espressione regolare R = b* + (ab)*
Posto questa domanda perchè il mio prof ha utilizzato un metodo molto lungo, mentre rifacendo l'esercizio da solo mi viene molto più breve.
Inanzitutto osservo che l'espressione data equivale a ${b}^** uu {a*b}^**$
1) Individuo una grammatica per ${b}^**$
Prima determinato una grammatica per ${b}$
che sarebbe $S1\tob$ e aggiungo $S1\to\lambda | bS1$ per ottenere chiusura riflessiva e transitiva.
Perciò la grammatica per ${b}^**$ è la seguente:
$G1 = (X={b}, V= {S1}, S1, P1 = {S1\tobS1 | \lambda})$
2) Individuo grammatica per ${ab}^**$
Per prima individuo grammatica per ${ab}$ che è la seguente:
$S2\toab$ e aggiungo $S2\tolambda | abS2$ per ottenere chiusura riflessiva e transitiva.
Perciò $G2 = (X = {a, b}, V = {S2}, S2, P2 = {S2\toabS2 | \lambda}$
3) Adesso posso costruire una nuova grammatica G3 aggiungendo l'assioma S che indirizza alla prima e alla seconda grammatica
$G3 = (X={X1} uu {X2} = {a, b} , V= V1 uu V2 uu {S} = {S1, S2, S}, S, P)$
dove l'insieme delle produzioni è il seguente:
$P= {S\toS1|S2, S1\tobS1 | \lambda, S2\toabS2 | \lambda}$
E' corretto o sono stato troppo sintetico non giustificando delle cose? Grazie in anticipo