Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-06-2010, 00:18   #1
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
[Generale] Multithreaded parsing

Salve a tutti,

dato il crescente numero di core degli attuali processori, l'uso dei threads si stà sempre più diffondendo per via dei vantaggi che non starò qui ad elencare (eccezione per Python che per inciso adoro :P).

Mi chiedevo quindi, durante una normale procedura di parsing, secondo voi, si può fare uso di multithreading per eseguire in modo concorrenziale sia il lexer che il parser vero e proprio?

Mi viene in mente una soluzione di parsing predittivo in cui lo scanner comunica con il parser tramite l'inserzione dei simboli in una tabella anzichè usare la più classica get_next_token() direttamente quando il parser ha bisogno di un nuovo token.

Ho letto sul web qualche articolo in inglese che però parlava di parsing concorrenziale non di eseguire assieme scanner e parser.
Mi vengono però in mente un paio di casi in cui sarebbe necessario usare un semaforo per impedire ai due thread di entrare in conflitto su certi dati, per esempio, il parser finisce di analizzare i token e ne richiede uno nuovo che lo scanner stà inserendo... Insomma, non sarebbe certo facile come un parser normale, ma appunto, potrebbe secondo voi costituire una alternativa per migliorare le prestazioni di parsing?

Ps. ho visto più indietro (parecchio), un topic riguardante un contest di parsing, ma pare morto li!?!

Grazie a tutti,
Lex
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 08:21   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Potresti usare un approccio del tipo produttore -> consumatore, col thread del lex che produce i token, e quello del parser che li consuma.

Ci sono però due problemi con questo approccio. Il primo è che per sincronizzarli devi usare roba come lock et similia, che riduce le prestazioni del sistema.

Il secondo, più grave, è che quest'approccio funziona soltanto con parser che non sono sensibili al contesto. Quindi se il tuo lexer produce token che non dipendono dal contesto, allora sei a posto, altrimenti non puoi utilizzarlo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 08:47   #3
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 22004
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Potresti usare un approccio del tipo produttore -> consumatore, col thread del lex che produce i token, e quello del parser che li consuma.

Ci sono però due problemi con questo approccio. Il primo è che per sincronizzarli devi usare roba come lock et similia, che riduce le prestazioni del sistema.

Il secondo, più grave, è che quest'approccio funziona soltanto con parser che non sono sensibili al contesto. Quindi se il tuo lexer produce token che non dipendono dal contesto, allora sei a posto, altrimenti non puoi utilizzarlo.
praticamente quasi la mia tesi della triennale anni e anni fà
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 11:17   #4
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Potresti usare un approccio del tipo produttore -> consumatore, col thread del lex che produce i token, e quello del parser che li consuma.
E' esattamente quello che pensavo, ma non avendo trovato molto in questa direzione, prima di provare per incappare nella eventuale impossibilità di realizzazione ho preferito chiedere.
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Ci sono però due problemi con questo approccio. Il primo è che per sincronizzarli devi usare roba come lock et similia, che riduce le prestazioni del sistema.

Il secondo, più grave, è che quest'approccio funziona soltanto con parser che non sono sensibili al contesto. Quindi se il tuo lexer produce token che non dipendono dal contesto, allora sei a posto, altrimenti non puoi utilizzarlo.
Si, il parser genera token context-free. E' più che altro a scopo didattico e con la scusa spero di ricavarci un piccolo linguaggio da poter usare per configurazioni varie.

Hai per caso qualche riferimento che descriva più approfonditamente problemi e soluzioni (eventuali) legate a questo tipo di parsing?

Mille grazie per la risposta,
Ciao.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 12:04   #5
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Ci sono però due problemi con questo approccio. Il primo è che per sincronizzarli devi usare roba come lock et similia, che riduce le prestazioni del sistema.
Trattandosi di un algoritmo non intrinsecamente parallelo dubito che si possa fare altrimenti.
Detto questo non so se ne valga la pena, molto piu' semplice compilare piu' unita' in parallelo...
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 12:37   #6
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Trattandosi di un algoritmo non intrinsecamente parallelo dubito che si possa fare altrimenti.
Detto questo non so se ne valga la pena, molto piu' semplice compilare piu' unita' in parallelo...
Non sai se ne vale la pena perchè non credi ce ne sia un beneficio in termini prestazionali, o per altro?

Ciao.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 15:00   #7
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da Opcode Guarda i messaggi
Non sai se ne vale la pena perchè non credi ce ne sia un beneficio in termini prestazionali, o per altro?

Ciao.
Intendo dire che di solito un programma che non sia banale e' diviso in piu' moduli indipendenti, ed e' piu' facile far partire N esecuzioni diverse in parallelo che non parallelizzare il compilatore stesso. Quando programmo in C++ uso il gcc che non e' parallelo ma questo non mi vieta di riuscire ad usare tutti e quattro i core della macchina.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 15:34   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quoto. La compilazione di un file e' cosa breve. Inutile parallelizzare la compilazione singola. Meglio invece istanziare piu' compilatori per compilare piu' file in parallelo, cosa che viene gia' fatta da parecchi tool.

Diverso invece sarebbe pensare di parallelizzare il parsing di un file XML per costruirne l'albero. Ci sono mostri di XML in giro per i quali potrebbe valerne la pena.
Ma tipicamente questi problemi hanno sempre un canale seriale da qualche parte, (es scarico il file XML da rete) e il collo di bottiglia e' quasi sempre li' piuttosto che nel processamento, che e' di per se banale.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 20:30   #9
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Opcode Guarda i messaggi
Hai per caso qualche riferimento che descriva più approfonditamente problemi e soluzioni (eventuali) legate a questo tipo di parsing?
Francamente no. E' passato parecchio tempo da quando ho studiato i parser (ti consiglio "The Dragon Book", che è la "bibbia" in materia), e la soluzione che ti ho fornito prima non riguarda nemmeno i parser veri e propri, ma ho semplicemente applicato il classico pattern del produttore / consumatore (nemmeno potevo immaginare che fosse stato oggetto della tesi di "qualcuno" ).

Per il resto, concordo con quanto hanno scritto gli altri.
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Trattandosi di un algoritmo non intrinsecamente parallelo dubito che si possa fare altrimenti.
Se la grammatica è context-free, come ha già detto, credo che lexer e parser abbiano buone probabilità di essere implementati in thread separati e "paralleli" (anche se rimane il problema della sincronizzazione, appunto).
Quote:
Detto questo non so se ne valga la pena, molto piu' semplice compilare piu' unita' in parallelo...
Perfettamente d'accordo. E' la soluzione migliore e la più comoda (praticamente a costo zero).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2010, 11:11   #10
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Intendo dire che di solito un programma che non sia banale e' diviso in piu' moduli indipendenti, ed e' piu' facile far partire N esecuzioni diverse in parallelo che non parallelizzare il compilatore stesso. Quando programmo in C++ uso il gcc che non e' parallelo ma questo non mi vieta di riuscire ad usare tutti e quattro i core della macchina.
Chiarissimo.

Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Diverso invece sarebbe pensare di parallelizzare il parsing di un file XML per costruirne l'albero. Ci sono mostri di XML in giro per i quali potrebbe valerne la pena.
Ma tipicamente questi problemi hanno sempre un canale seriale da qualche parte, (es scarico il file XML da rete) e il collo di bottiglia e' quasi sempre li' piuttosto che nel processamento, che e' di per se banale.
E se il parser fosse il front-end di un interprete anzichè di un compilatore?
Non puoi eseguire più interpreti per eseguire uno stesso programma (singolo processo). Poi è chiaro che anche gli interpreti si possano lanciare in parallelo ma non beneficia di aumento di prestazioni.

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Francamente no. E' passato parecchio tempo da quando ho studiato i parser (ti consiglio "The Dragon Book", che è la "bibbia" in materia), e la soluzione che ti ho fornito prima non riguarda nemmeno i parser veri e propri, ma ho semplicemente applicato il classico pattern del produttore / consumatore (nemmeno potevo immaginare che fosse stato oggetto della tesi di "qualcuno" ).
Ti ringrazio, andrò a cercarne una copia cartacea e, in caso di fallimento, cercherò l'ebook.

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Per il resto, concordo con quanto hanno scritto gli altri.

Se la grammatica è context-free, come ha già detto, credo che lexer e parser abbiano buone probabilità di essere implementati in thread separati e "paralleli" (anche se rimane il problema della sincronizzazione, appunto).
Ciononostante la cosa devo ammettere che mi intriga, proprio per questa difficoltà di implementazione. Mi piace fare qualcosa di inusuale (ma non inutile), soprattutto per ricerca.

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Perfettamente d'accordo. E' la soluzione migliore e la più comoda (praticamente a costo zero).
Mi ripeto, è se fosse il front-end di un interprete?

Grazie a tutti per l'interesse.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2010, 12:45   #11
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da Opcode Guarda i messaggi

E se il parser fosse il front-end di un interprete anzichè di un compilatore?
Non puoi eseguire più interpreti per eseguire uno stesso programma (singolo processo). Poi è chiaro che anche gli interpreti si possano lanciare in parallelo ma non beneficia di aumento di prestazioni.
Qui potresti avere qualche vantaggio (anche se secondo me non troppo elevato).
In questo caso potresti procedere con la strategia suggerita da cdimauro, se procedi in modo intelligente la quantita' di lavoro in piu' non e' improponibile.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2010, 15:34   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Opcode Guarda i messaggi
Ti ringrazio, andrò a cercarne una copia cartacea e, in caso di fallimento, cercherò l'ebook.
Se non trovi una copia del Dragon Book ti offro una cena.

Poi io preferisco nettamente il cartaceo, se posso.
Quote:
Ciononostante la cosa devo ammettere che mi intriga, proprio per questa difficoltà di implementazione. Mi piace fare qualcosa di inusuale (ma non inutile), soprattutto per ricerca.
Considera che di già lexer e parser sono legati da un rapporto "produttore -> consumatore". Poi con parser come ANTLR questo rapporto lo trovi esplicitato.

Non so a quali tecnologie e linguaggio ti stai affidando per realizzare il tutto, ma può darsi che non dovrai sbatterti più di tanto nell'impresa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2010, 21:12   #13
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Qui potresti avere qualche vantaggio (anche se secondo me non troppo elevato).
Come sospettavo, comunque è a scopo didattico non mi serve per un ambiente di produzione. Semplicemente mi piace fare ricerca e test, non si sà mai quel che viene fuori, senza contare l'interesse della scoperta.

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Se non trovi una copia del Dragon Book ti offro una cena.
Beh, se dovessi accidentalmente dimenticarmi come si usa google, dove stanno le librerie e dovessi cercare nella mia libreria in casa...

dove ci incontriamo?
Quote:
Poi io preferisco nettamente il cartaceo, se posso.
Quoto. Passo già parecchie ore al PC, nonostante stia solo su schermi LCD con la luminosità al minimo la sera, col calar delle tenebre non vedo poi molto al buio. E poi, l'odore di un libro nuovo è sconosciuto agli ebook...
Quote:
Considera che di già lexer e parser sono legati da un rapporto "produttore -> consumatore". Poi con parser come ANTLR questo rapporto lo trovi esplicitato.
Si ho avuto modo di vedere ANTLR ma ammetto di non averlo mai usato... da quello che vedo sembra una pacchia da usare...
Quote:
Non so a quali tecnologie e linguaggio ti stai affidando per realizzare il tutto, ma può darsi che non dovrai sbatterti più di tanto nell'impresa.
Libri e reference in primis, non essendo un lavoro ma mera ricerca (da usare casomai in un futuro interprete che dovrò realizzare) ho totale libertà di scelta... Comunque penso di affidarmi ai più classici C/C++, o qualche linguaggio che semplifichi il tutto, magari Python.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2010, 21:24   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Opcode Guarda i messaggi
Beh, se dovessi accidentalmente dimenticarmi come si usa google, dove stanno le librerie e dovessi cercare nella mia libreria in casa...

dove ci incontriamo?
A Catania.
Quote:
Si ho avuto modo di vedere ANTLR ma ammetto di non averlo mai usato... da quello che vedo sembra una pacchia da usare...
Togli pure il sembra.
Quote:
Libri e reference in primis, non essendo un lavoro ma mera ricerca (da usare casomai in un futuro interprete che dovrò realizzare) ho totale libertà di scelta... Comunque penso di affidarmi ai più classici C/C++, o qualche linguaggio che semplifichi il tutto, magari Python.
Togli il magari.

Ho già realizzato qualcosa con ANTLR & Python, e mi sono trovato benissimo. Poi ANTLR ha un ottime IDE, ANTLRWork, che ti permette di sviluppare grammatiche (e parser annessi) molto comodamente.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2010, 21:51   #15
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
A Catania.
Uhm... viaggio compreso con la cena? (sono 1.400 e rotti km)
Vabbè non vorrei sembrare uno scroccone, il viaggio ce lo metto io. E' un'occasione per fare una vacanza.
Quote:
Togli pure il sembra.

Togli il magari.
Mi stai intrigando...
Quote:
Ho già realizzato qualcosa con ANTLR & Python, e mi sono trovato benissimo.
Come darti torto, Python è il mio linguaggio ideale e come tale lo è anche in ambito di ricerca (senza eguali). Poi da quello che dici...
Quote:
Poi ANTLR ha un ottime IDE, ANTLRWork, che ti permette di sviluppare grammatiche (e parser annessi) molto comodamente.
Ne ho sentito parlare più volte molto positivamente, mi verrebbe da asserire che sia questo il motivo del suo successo rispetto ad altri tool (vedi yacc bison e compagnia bella)... ma non ho usato mai nemmeno quelli, anche se, dalle documentazioni che studiai all'epoca è tutta un'altra storia rispetto ad ANTRL.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2010, 21:58   #16
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Opcode Guarda i messaggi
Uhm... viaggio compreso con la cena? (sono 1.400 e rotti km)
Vabbè non vorrei sembrare uno scroccone, il viaggio ce lo metto io. E' un'occasione per fare una vacanza.
La Sicilia merita.
Quote:
Come darti torto, Python è il mio linguaggio ideale e come tale lo è anche in ambito di ricerca (senza eguali). Poi da quello che dici...

Ne ho sentito parlare più volte molto positivamente, mi verrebbe da asserire che sia questo il motivo del suo successo rispetto ad altri tool (vedi yacc bison e compagnia bella)... ma non ho usato mai nemmeno quelli, anche se, dalle documentazioni che studiai all'epoca è tutta un'altra storia rispetto ad ANTRL.
Mettiamola così: ANTLR è il Python dei generatori di parser. Sintassi semplice ed elegante, genera codice molto facile anche da leggere e debuggare, ed è enormemente produttivo.

Un altro punto di forza è che il lexer e il parser li scrivi nello stesso linguaggio e anche nello stesso file. Un altro è che invece del parser puoi direttamente fargli generare (sempre con lo stesso linguaggio) l'AST delle espressioni parserizzate; così salti pure questa fase, che negli altri parser tipo YACC & co. dev'essere fatta generalmente a manina.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2010, 22:10   #17
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
La Sicilia merita.
Non ne dubito. Se avrò l'occasione di venirci ti avviso, potrei offrirla anche io una cena, il posto lo scegli tu però (con tutte le responsabilità del caso )
Quote:
Mettiamola così: ANTLR è il Python dei generatori di parser. Sintassi semplice ed elegante, genera codice molto facile anche da leggere e debuggare, ed è enormemente produttivo.

Un altro punto di forza è che il lexer e il parser li scrivi nello stesso linguaggio e anche nello stesso file. Un altro è che invece del parser puoi direttamente fargli generare (sempre con lo stesso linguaggio) l'AST delle espressioni parserizzate; così salti pure questa fase, che negli altri parser tipo YACC & co. dev'essere fatta generalmente a manina.
Ah però. Dell'AST non ne ero a conoscenza... a questo punto anche solo a tempo perso (anche se penso di potergli dedicare un po' di spazio) è da provare. La curiosità e la voglia non mancano... se non sono richiesti requisiti, sono in rotta.
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2010, 05:52   #18
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Purtroppo su Wikipedia si trova poco sugli AST, per cui ti consiglio di studiare l'argomento sul libro che t'ho consigliato.

Qui trovi un'introduzione ad ANTLR "in 5 minuti". Mentre qui un esempio un po' più complesso, di una calcolatrice, in cui viene mostrato anche come far generare direttamente un AST, e un parser che lo "scorre".

Tra l'altro ho scoperto adesso dal sito che l'ha usato Google nel suo App Engine.

P.S. Allora ti aspetto.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2010, 11:16   #19
Opcode
Member
 
L'Avatar di Opcode
 
Iscritto dal: Jun 2010
Città: Asti
Messaggi: 85
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Purtroppo su Wikipedia si trova poco sugli AST, per cui ti consiglio di studiare l'argomento sul libro che t'ho consigliato.
Già, gli AST li studiai, anche se molto alla veloce, su una dispensa universitaria, per poi passare subito al Three Address Code
Comprerò quanto prima il libro che mi hai consigliato, non vedo l'ora di averlo sotto mano per iniziare a divorarlo.
Quote:
Qui trovi un'introduzione ad ANTLR "in 5 minuti". Mentre qui un esempio un po' più complesso, di una calcolatrice, in cui viene mostrato anche come far generare direttamente un AST, e un parser che lo "scorre".
Perfetto! il secondo sembra interessante, strano che ieri spulciando non l'abbia trovato... grazie mille per il link.
Quote:
Tra l'altro ho scoperto adesso dal sito che l'ha usato Google nel suo App Engine.
Allora ti ho battuto io l'ho scoperto tanto tanto tempo fà.... circa.... ieri sera.
Quote:
P.S. Allora ti aspetto.
ottimo

Guarda un po' cosa ho trovato, magari li hai già visti, ma:
1 - The Language from the Dragon Book in ANTLR
2 - Automate translation of Java to Python
Opcode è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2010, 20:50   #20
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
No, non li avevo mai visti. Appena ho un po' di tempo mi smazzo il PDF (l'altro l'ho già letto, ed è una bella esperienza ).

Grazie!
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Apple AirDrop su Android: dopo Pixel 10,...
Upgrade PC senza spendere una fortuna: G...
Sistema di sblocco alla iPhone anche su ...
29 offerte Amazon, rinnovate: in 2 minut...
Offerte imperdibili su lavatrici e asciu...
Kingdom Come: Deliverance 2 arriva su Ga...
Il Texas fa causa a TP-Link: accuse di m...
Google annuncia le date ufficiali di I/O...
Nuovo rilancio di Amazon Haul: -20% se s...
NVIDIA azzera la partecipazione in Arm H...
Crimson Desert può diventare GOTY...
HONOR Magic 8 Lite ufficiale: il nuovo s...
Apple prepara occhiali smart, un ciondol...
WordPress integra un assistente AI che m...
La FIA ha controllato a caldo il motore ...
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: 12:17.


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