Expresa la siguiente gramática como un autómata finito determinístico.
Etiqueta --> nombre Etiqueta | nombre dato Etiqueta | fin
Dada la siguiente gramática
programa = clausula+
clausula = hecho | regla | query
hecho = atomo '.'
regla = atomo ':-' atomo+ '.'
query = '?-' atomo+ '.'
atomo = ident | ident '(' args ')' /* un atomo puede no tener argumentos */
args = (term ',')* term
term = variable | struct
struct = ident | ident '(' args ')' /* una constante es una estructura
sin argumentos */
ident = minus alfanum*
variable = mayus alfanum*
alfanum = letra | num
letra = minus | mayus
mayus = 'A' | ... | 'Z'
minus = 'a' | ... | 'z'
num = '0' | ... | '9'