|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Linguaggi e grammatiche context free: dubbio
Ciao a tutti. Sto bestemmiando un pochino con le grammatiche context free nell'ambito di un progetto per un esame universitario. Tra le altre cose, devo inventarmi (o trovare già pronto) un linguaggio per il quale successivamente costruire un lexer/parser e un traduttore, utilizzando ad esempio JavaCC. Il linguaggio (context free) non deve essere troppo banale, in particolare deve avere degli elementi opzionali (cioè presenti 0 o 1 volta) che possono comparire in un ordine qualsiasi all'interno di una stringa del linguaggio. Vi faccio un esempio banale: supponiamo che il linguaggio in questione contenga solo gli elementi A e B, che questi siano opzionali (cioè possono esserci o meno) e che possano trovarsi in un qualsiasi ordine all'interno della stringa. Esprimendo un tale linguaggio con una grammatica context free l'unica soluzione che mi viene in mente è quella di usare 5 produzioni:
Codice:
S --> A | B | AB | BA | stringa vuota Secondo voi è corretto quel che dico oppure ci sono modi più efficaci per definire un linguaggio del genere? ![]() A sostegno di quanto dico c'è questa FAQ su JavaCC in cui si fa un esempio simile a quello che ho riportato io e in cui si risponde che la cosa migliore è quella di utilizzare le azioni semantiche.
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
#2 | ||
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Quote:
Se invece vuoi le stringhe in cui A e B compaiono ciascno al più una volta, puoi usare dei simboli ausiliari, che ti rappresentano quelle che nella FAQ chiamano "azioni semantiche". La maniera più diretta credo sia: Codice:
S := TAT | TBT | TATBT | TBTAT | T
T := a{1}T | ... | a{n}T | e
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
||
|
|
|
|
|
#3 | |||
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Quote:
Quote:
Quote:
Grazie per la risposta
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:57.





















