|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
[Vari] Automi a stati finiti, linguaggi, calcolabilità. Aspetti teorico-pratici.
Avrei bisogno di un chiarimento su alcuni aspetti teorico-pratici relativi agli automi a stati finiti.
L'argomento m'appassiona assai ma, non avendo fatto l'università, mi trovo un po' in difficoltà. chi m'illumina? Avrei parecchie domande ma comincio con una sola, questa: Per sapere se una grammatica è di tipo LL(1) ci sono i ben noti algoritmi. Ora, avrei bisogno d'implementare l'algoritmo che costruisce la tabella LL(1) per una data grammatica. Cioè, leggo la grammatica da un file di testo(tipo i file .y di Bison), e automaticamente costruisco la tabella LL(1). Se la tabella, per una data locazione, contiene più di una regola grammaticale, la grammatica non è, come ben sapete, una grammatica LL(1). In caso contrario posso utilizzare la tabella appena creata per generare un parser di tipo predittivo non ricorsivo. Ragazzi, lo so che di generatori di parser se ne trovano a dozzine in rete, ma io voglio implementarne uno da me. E poi di generatori di parser LL(1) non ricorsivi non ce ne sono molti. Il più famoso, Antlr(bellissimo, favoloso!), prende in ingresso una grammatica LL(1) ma genera un parser a discesa ricorsiva. Comunque per il momento m'interessa partire dal file di testo con la grammatica e creare la tabella LL(1). Per la generazione del parser poi si vedrà. Non voglio il codice già pronto ovviamente, ma suggerimenti, tecniche, metodi, algoritmi. Chi mi da una mano? Poi avrei altre domande di ordine più teorico sugli automi a stati finiti, le macchine di Turing e la calcolabilità. Ma intanto cominciamo con questa. Ultima modifica di Vincenzo1968 : 19-01-2013 alle 23:00. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
puoi anche seguire un corso universitario che tratti la materia di tuo interesse se lo desideri e senza necessariamente iscriversi e dare esami
Trattazioni così teoriche vengono fatte nel forum Scienza e Tecnica: qui solo cose pratiche |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
No ma questa mia prima domanda è cosa pratica. Devo implementare un programmino che prende in input una grammatica e genera la tabella LL(1).
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
chiedi ad un tecnico di laboratorio che insegna linguaggi formali ed automi.
Mi era capitato di scrivere per chiedere lumi ad un docente di informatica della sapienza, se non ricordo male, circa un suo algoritmo e mi aveva risposto senza difficoltà: scrivi ad uno di loro. Io una dritta te l'ho data |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Grazie per la dritta.
Io un programmino simile lo sto già scrivendo(e funziona anche Volevo confrontarmi con voi per vedere se sto agendo nella maniera corretta o se ci sono algoritmi più adatti, metodi più indicati. Non ne conosco tecnici di laboratorio che insegnano linguaggi formali. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
|
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Questa non l'ho capita. Come dovrei esprimermi? E chi dovrebbe sgamarmi? E cosa dovrebbero sgamare?
Spiego cosa ho fatto finora: Ho in ingresso questo file: Codice:
expr : term expr1;
expr1 : '+' term expr1;
expr1 : ;
term : factor term1;
term1 : '*' factor term1;
term1 : ;
factor : '(' expr ')';
factor : T_ID;
![]() ![]() Purtroppo il programmino che ho scritto seguendo gli algoritmi nei testi(in particolare sull'Hopcroft) non funziona con grammatiche che contengono regole di produzione mutualmente ricorsive. Come si può risolvere la cosa? Ultima modifica di Vincenzo1968 : 20-01-2013 alle 11:41. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
se fai domande assurde non ti rispondono, più chiaro così ?
p.s. a me non interessa il mondo dei compilatori ma solo quello delle reti neurali per il semplice fatto che di compilatori ve ne sono almeno 2500 mentre le reti neurali sono un campo ancora tutto da esplorare. Se poi penso che implica la conoscenza delle equazioi differenziali che non ho messo in pratica durante i miei studi credo sia la volta buona per cavarci qualcosa. Ad ognuno le proprie passioni. Ultima modifica di misterx : 20-01-2013 alle 11:44. |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
No, non ho capita nemmeno questa. Che domande assurde?
Ho bisogno di un algoritmo(algoritmo, non il codice già bell'e pronto) per risolvere la faccenda con le grammatiche mutualmente ricorsive. Tutto qui. EDIT: purtroppo nei testi che ho consultato non c'è niente in proposito. E nemmeno in rete sono riuscito a trovare qualcosa. Fanno tutti il solito esempietto con piccole grammatiche e buona notte. Voglio dire, se ho questa grammatica in input: Codice:
A : B A a | ; B : b B c | A A ; Ultima modifica di Vincenzo1968 : 20-01-2013 alle 11:47. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
queste persona fanno corsi e spiegano a modo loro i vari argomenti. Se fai loro una richiesta dimostrando di non conoscere per nulla l'argomento e ti assicuro che lo capiscono al volo, non ti rispondono. Stai quindi sulle genreali, magari qualcosa ti dicono.
fine dei consigli |
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
A me pare di conoscerlo abbastanza bene l'argomento. Ho solo qualche difficoltà su un punto in particolare: le grammatiche con regole di produzione mutuamente ricorsive.
Ne hai algoritmi da suggerire? Se l'argomento non ti appassiona puoi lasciare stare eh! Ciao |
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12944
|
Stiamo parlando di grammatiche context-free.
Generalmente la prima cosa da fare con una grammatica CF, è semplificarla: Elimination of Nonterminal symbols that do not generate words Elimination of symbols unreacheable from the start symbol Elimination of useless symbols Elimination of epsilon production Elimination of Unit Production Elimination of Left Recursion Comunque trovi tutto sul Dragon Book, nell'edizione del 2006 in inglese (la seconda), pagine 224 e 225, trovi l'algoritmo per cui data una grammatica in ingresso ottieni in output la tabella di parsing Chiaramente prima devi vederti alcune definizioni, tipo quelle di FIRST e FOLLOW e compagnia bella. Niente che non si possa fare da soli. Avevo fatto un programmino in Java tempo fa per il parsing LR, seguendo proprio quel libro, in caso posto il codice (è tanta roba, c'era anche il Cooke-Younger-Kasami). Ultima modifica di WarDuck : 20-01-2013 alle 12:30. |
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
No, WarDuch, alle pagine da te indicate c'è l'algoritmo per le grammatiche LR.
Comunque forse ho risolto: Codice:
A : B A a | ; B : b B c | A A ; ![]() ![]() Mi confermate che è corretto? Ultima modifica di Vincenzo1968 : 20-01-2013 alle 12:40. |
|
|
|
|
|
#15 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
|
|
|
|
|
|
|
#16 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Ragazzi se mi confermate che l'output è corretto posto il mio programma. Potrebbe essere d'ausilio per gli studenti che debbono affrontare l'argomento, no?
Magari faccio stampare(a video o nel file html) come viene generata, passo passo, seguendo l'algoritmo, la tabella LL(1). È corretto l'output? |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12944
|
Eccolo:
https://skydrive.live.com/redir?resi...NozV-6ZuiRYb1w Lo puoi aprire con NetBeans o usare il JAR La sintassi per la grammatica è simile a questa: S->aA|c A->b|e Dove "S" è lo start symbol e "e" è l'empty string |
|
|
|
|
|
#18 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
![]() |
|
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Sono quasi certo che l'output del mio programma sia corretto; anche nel caso di grammatiche con regole di produzione mutuamente ricorsive.
Ma, appunto, "quasi". Aspetto conferma prima di postare il codice. |
|
|
|
|
|
#20 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Mi è stato dato un parere da un amico Ingegnere Informatico.
Aspetto il vostro per avere la certezza assoluta. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:40.
























