ragazzi quale è la semantica di questo riferimento?
*(A[count].num_ptr)
assumendo che essa compaia nel contesto delle seguenti definizioni
struct scheda
{ . . .
int *num_ptr;
. . .
};
l'albero e il bnf mi sono riusciti (alla fine viene <var.:struct>), la natura generale di un riferimento ho scritto:
consiste nell'identificare una variabile ossia una coppia <locazione di memoria> <tipo>, ad esempio <var>::=<identifier> identifica la variabile dichiarata con nome <identifier> (non sapevo cosa altro scrivere).
Grazie
Ti consiglio di consultare il libro, perchè ce ne sono di questo tipo (svolti) con la semantica. Comunque sia, è necessario partire dall'interno:
-A[count] è un rif. che individua la variabile strutturata count+1-esima nell'array di variabili memorizzato a partire dall'indirizzo A
-A[count].num_ptr è un rif. che individua il campo ptr (variabile di tipo puntatore ad intero) nella variabile strutturata precedente
-*(A[count].num_ptr), infine, è un ulteriore rif. che individua la variabile il cui indirizzo è restituito dalla variabile puntatore precedentemente individuata (che essendo un <var : int *> è anche un <expr : addr (int)>.
Ad essere proprio pignoli bisognerebbe fare un ulteriore passo intermedio dicendo che (A[count].num_ptr) non modifica la semantica del rif. precedente essendo le parentesi solo modificatori sintattici - ma qui si tratta davvero di cercare il proverbiale pelo nell'uovo
Quindi essenzialmente si tratta di descrivere in dettaglio cosa individuano i vari riferimenti, fino a giungere a quello richiesto dall'esercizio - è più o meno come procede anche il Vicario nel libro.
EDIT: occhio però - la riduzione con il BNF deve terminare con <expr> e non con <var> essendo <expr> il simbolo iniziale.