Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-01-2013, 21:54   #1
Vincenzo1968
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 22:00.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2013, 22:44   #2
misterx
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
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 09:13   #3
Vincenzo1968
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).
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 09:55   #4
misterx
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
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:17   #5
Vincenzo1968
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.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:31   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
occhio a come ti esprimi perchè di sgamano subito, è una prof

[email protected]
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:36   #7
Vincenzo1968
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;
Il mio programma produce in output il seguente file html:




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 10:41.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:41   #8
misterx
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 10:44.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:43   #9
Vincenzo1968
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
  ;
Come la risolvo la faccenda?

Ultima modifica di Vincenzo1968 : 20-01-2013 alle 10:47.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:47   #10
misterx
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
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 10:50   #11
Vincenzo1968
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
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 11:25   #12
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Il testo che sto consultando è questo:

http://www.amazon.it/Automi-linguagg.../dp/8871925521
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 11:27   #13
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 13043
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 11:30.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 11:35   #14
Vincenzo1968
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
  ;
Il mio programma produce, adesso, il seguente output:



Mi confermate che è corretto?

Ultima modifica di Vincenzo1968 : 20-01-2013 alle 11:40.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 11:37   #15
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
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).
Posta posta, lo sai che sono goloso di algoritmi e tecniche sull'argomento
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 11:58   #16
Vincenzo1968
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?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 12:00   #17
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 13043
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 .
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 12:03   #18
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
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 .
Grazieeeeeeeeeeee!!!!!!!



Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 14:37   #19
Vincenzo1968
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.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 19:14   #20
Vincenzo1968
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.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Robot aspirapolvere in offerta su Amazon...
ChatGPT inventa testimoni falsi e un avv...
Find X10 Pro Max di OPPO arriverà...
L'IA scriverà codice migliore del suo st...
Valve apre le prenotazioni di Steam Fram...
ECOVACS T50 OMNI Gen3 a 379€: il riferim...
Netflix e Sega insieme: arrivano i film ...
Veeam ottiene la certificazione da parte...
XIAOMI Redmi Buds 8 a 37,94€: auricolari...
Il fotovoltaico scende sott'acqua: nuove...
Microsoft chiede supervisione umana nell...
MicroSD Samsung T9 da 256GB a 65,88€: sc...
Una RTX 3090 e nessuna riga di codice: Q...
Windows e Excel di nuovo nel caos dopo i...
Nuovi Samsung Galaxy S26 FE ora disponib...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v