Ad ogni modo ho provato a scrivere una grammatica {G=(T,N,P,S)} per un possibile programma generico con un ciclo WHILE.
La Grammatica è la seguente:
T=simboli teminali={digit,N,M,I,WHILE,AND,OR,LT,GT,EQ,LE,GE,NE,INC.DEC,FINE}
N=simboli non terminali={S,STMT,COND,ISTR,A,B,C,OPL,OP}
S->S
P=produzioni {
S->STMT
STMT->WHILE(COND) ISTR
ISTR->C
COND->B OPL B
COND->B
OPL->AND
OPL->OR
B->C OP C
B->C
C->M
C->N
C->I
C->C+C
C->C-C
C->C*C
C->C/C
C->C^C
C->(C)
C->digit
OP-> >=
OP-> <=
OP-> >
OP-> <
OP-> ==
OP-> !=
}
Tuttavia ho qualche perplessità su alcune produzioni, in particolari per le seguenti:
STMT->WHILE(COND) ISTR
OP-> >=
OP-> <=
OP-> >
OP-> <
OP-> ==
OP-> !=
Qualcuno può dirmi se potrebbe essere corretta come grammatica?
Grazie mille.