Newsgroup: it.comp.java
Titolo: Linguaggi formali in java

Io sono un programmatore java di medio livello e sono stato infettato dalla
mania di astrarre ogni oggetto... un giorno forse scriverò l'astrazione
dell'intero universo ^_^ ma quando avrò finito non ci sarà nessuno che avrà
implementato la Universal Java Machine così tornerò ad essere un umano
normale (istanza del genere umano ereditario degli esseri viventi
pensanti.... ) SBONK!  c:'-)
OK per ora mi accontento di poco e il mio prossimo compito é quello di
scrivere un ASSEMBLATORE / SIMULATORE.
Sebbene molti mi consiglierebbero di usare il C io non ho più il coraggio di
tornare indietro anche perché ormai ragiono direttamente in JVM ^_^
(infatti per un momento ho pensato di scrivere classi direttamente in
bytecode! sono un allo stadio finale oramai ;DDDD)
Quindi non mi rimane che rassegnarmi con le assurde e inutili difficoltà che
java mi comporta (non posso lavorare con numeri senza segno senza sprecare
il doppio della memoria e senza un malefico Math.abs(double) che mi percuote
i neuroni celebro-spinali) ma con il piacere di poter creare classi per ogni
aspetto, ovviamente astratte ;), per poi implementarne le istanze più
specifiche, tipo: asbtract CPU -> class cpu8086
Avendo molto a che fare con gli array di byte/short/int per rappresentare la
memoria e i registri non posso che maledire il giorno in cui la SUN ha
deciso di prevedere i tipi primitivi... così addio polimorfismo... si lo so
che ci sono i wrapper ma cavolo potevano almeno gerarchizzare fra numeri
decimali e numeri con la virgola! visto per non posso ereditare un
"getValue()" che ritorni tipi differenti dalla classe madre se non con un
uso FOLLE dei cast (scherziamo!!! che facciamo torniamo al peggiore degli
aspetti del C... NOOOOO!)
A parte queste mie follie che possono solo lasciare il tempo che trovano
vorrei propore a te, lettore provato, il DOMANDONE! ^__^
Volendosi accingere alla scrittura di un package per rappresentare con
classi astratte i linguaggi formali (sapete quelle storielle sulle
"produzioni" "dizionario terminale" "proposizioni regolari" "linguaggi
context free" "backtracing sintattico" ecc. ecc.???) da dove posso prendere
spunto? Qualche sito? Qualche cosa di simile in altri linguaggi?
L'argomento dovrebbe essere molto interessante perché una volta realizzata
la struttura dovrebbe essere semplice applicarla ad innumerevoli campi, fra
cui ovviamente la scrittura di un assemblatore, un compilatore C (e perché
no, Java!), di un parser di espressioni matematiche o di linguaggi di più
alto livello... magari telefonia! risposte elaborate di un sistema
"intelligente" dopo un filtro audio-visivo ^__^ Bhé questo é un po' troppo
ma in teoria.... ;)
Ecco un esempio di quello che voglio trasformare da TESTO in OGGETTI JAVA da
interrogare ecc. :
;=======asm8086=========
; <xyz>    produzione
; ::=      assegnazione
; |        alternativa esclusiva
; ( )      blocco (modifica precedenza)
; { }      alternativa inclusiva
; []       scelta fra
<root>  ::= {<labeldef>} {<mnemonic>} {<comment>}
<mnemonic>    ::= <grp0> | <grp1> | <grp2>
; istruzioni senza operando
<grp0>     ::= <mne0>
<mne0>    ::= NOP | HALT | ...
; istruzioni con un operando
<grp1>     ::= <mne1> <dest>
<mne1>    ::= PUSH | POP | ...
; istruzioni con due operandi
<grp2>      ::= <mne2> <dest> <source>
<mne2>     ::= MOV | ADD | ...
<source>    ::= <register> | <immediate> | <label>
<register>         ::= <generalreg> | <segmentreg> | <indexreg> | <basereg>
 <generalreg>   ::= AX | BX | CX | DX | AL | AH | BL | BH | CL | CH | DL |
DH
 <segmentreg>  ::= CS | DS | ES | SS
 <indexreg>      ::= SI | DI
 <basereg>       ::= BP | SP
<immediate>     ::= <decimal> | <hexadecimal>
 <decimal>        ::= <digit><decimal> | <digit>
 <hexadecimal> ::= <hexdigit><hexadecimal> | <hexdigit>
<label>       ::= <literal><label> | <literal>
<labeldef>  ::= <label>':'
<digit>       ::= [0-9]
<hexdigit>  ::= [0-9a-fA-F]
<literal>     ::= [a-zA-Z]
;=================================
Se potete aiutarmi ve ne sarò grato!
Se volete lapidarmi fate pure ^_^ sono in procinto di costruire un muretto a
secco! ;DDD
Per le spremute d'arancia sono sempre disponibile come Rocco, il bytecoder
tarocco!
^_^
RISPONDETE!!!!
--
____,,,^..^,,,________________________________
 Vanadia Marco
web pages on 
http://web.tiscalinet.it/vanmarco
online contact on ICQ#55892750

Caro Marco, come ti capisco !! (ho problemi analoghi al tuo.......)
Nel tuo caso però mi sembra che la soluzione migliore sia quella di armarsi
di "java.util.StringTokenizer" e di qualche libro sull'analisi sintattica &
semantica.
Quanto ai libri forse avrai sentito parlare di "Crafting a Compiler",
(C.Fischer ,R. LeBlanche , ediz. Benjamin/Cummings).
Io ne posseggo delle vecchie  fotocopie, non so se lo pubblicano ancora.
Fammi sapere....
 EnZo

; []       scelta fra
[CUT]
Io ho scritto per un esame universitario un package per generare un
automa a stati _deterministico_ a partire dalla definizione di
grammatica che *deve* essere regolare.
Forse puoi prendere qualche spunto... ma il codice e la documentazione
e` andata degenerando con l'avvicinarsi della data di consegna :-),
Fammi sapere via E-mail se ti interessa.
Se ti interessa ho scaricato anche un Emulatore di C=64 scritto in Java
da in sito che non ricordo, ci sono anche i sorgenti, potrebbe servirti
anche questo...
-- 
 ____________________________________________________________________
                           Alessio Palmieri
			     ICQ 62548838
 
p.al...@superdada.com
 =====================================================================

 spunto? Qualche sito? Qualche cosa di simile in altri linguaggi?
Bei tempi! Io avevo usato il SAS C sotto AmigaDOS per scrivere un compilatore
Pascal che produceva codice 68000... il bello era che assemblandolo con l'AsmOne
il programma pascal girava! :)
Suggerirei il JavaCC, reperibile a 
www.metamata.com/JavaCC/
. E', come suggerisce
il nome, un compilatore di compilatori scritto in 100% Pure Java. Quindi hai
tutti gli strumenti necessari per costruirti il tuo assemblatore in Java, o se
preferisci costruirti un MUD...
Per quanto riguarda i libri invece suggerirei Aho-Seti-Ullman: "Compilers -
Principles, techniques, and tools", la bibbia sulla quale avevo studiato al
tempo.
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

vorrei propore a te, lettore provato, il DOMANDONE! ^__^
Per gli strumenti di base, dai un'occhiata a javacc e ai suoi.. figli. Per la 
teoria ovviamente il Dragon book e' tutto quello che ti serve, ma lo saprai 
gia'.
Javacc, per chiarire, fa quello che fanno lex/flex e yacc/bison: analisi 
lessicale e parsing di grammatiche. Se sai usare i primi, usarlo e' un gioco da 
ragazzi.
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/

 anche questo...
Esiste anche un simulatore di Sinclair ZX Spectrum scritto in Java come Applet...
http://www.spectrum.lovely.net
, ci sono pure i sorgenti :)
<NOSTALGIA>Ah, che bei tempi che erano</NOSTALGIA>


 
puoi postare il sito con l'emulatore?
grazie!!
-- 
dome

puoi postare il sito con l'emulatore?
Purtoppo non ricordo il sito, prova a fare una ricerca con key
comeBack64, altrimenti posso inviartelo via e-mail se ti interessa.
-- 
______________________________________________________________________
%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%=x%
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Alessio Palmieri
 			     ICQ 62548838
 
p.al...@superdada.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ringrazio Vincenzo, Stefano e Cristiano ( i tre dell'Ave Maria ;DDD) che per
primi mi hanno risposto e di cui ho letto le risposte.
Sto pensando molto al mio problema e come ogni programmatore orientato
all'oggetto sono in bilico in un interfaccia che ancora non esiste
...un'immagine paradossale della mia situazione reale... ^_^
e se come molti di voi ingoio trangugio e inalo sostanze di ogni genere che
formano oggetti dentro me, penso che prima o poi questi mattoncini finiranno
nel giusto ordine per risolvere il problema !-)
La streamtokenizer é allo stesso tempo un opera dell'ingegno divino e
dell'inferno... conosco il codice della sun e devo chiedere grazia per aver
potuto uscire da quel flusso di bit indenne lì dove ogni riga di codice é
ancora inesplorata  ... =^=
Per quanto riguarda i libri appunterò i titoli per dare uno sguardo in
biblioteca (...pssss sono del Politecnico di Bari...se qualcuno é di queste
parti ci si vede OK?)
Onorato di conoscere un amighista con le oo ^_^ Bella storia il SAS C! Altri
tempi. STOOOOP altrimenti la nostalgia prende il sopravvento ^_-
E poi Cristiano...io stavo per prendere in cosiderazione Jasmin che mi
intriga parecchio (la comunità java rasenta l'apoteosi della pazzia ^_^
FANTASTICO!)
Ho accolto il consiglio sul JavaCC che devo aver da qualche parte... ecco in
una sperduta e dimenticata directory di un cd masterizzato tanto tempo fa
uno zip anonimo... javacc.zip ...hhhmm... versione 0.8pre2 ... deve essere
piuttosto vecchiotta ma gli ho dato un occhiata...bhe' c'é da studiarselo
con calma perché é un progettino niente male (molte classi) e con tanti
esempi... caspita sembra decisamente potente!
....
[mezzoretta dopo]
...
WOW!!! SPECTACULAR!!!
Se una risposta poteva essere più precisa non poteva che essere venire da un
altro universo o da Chomsky in persona ^_^
Grazie amici navigatori!
Ora l'unica cosa che mi rimane da fare e rimboccarmi le maniche... cacchio
non ho maniche!!! Oggi per la prima volta a fatto abbastanza caldo da
mettermi in mezze maniche ;DDD OCCHEI!!! ORA MI METTO IL CAPPOTTO E
RICOMINCIO!!!
Lì dove nessun coder e mai giunto prima!!! ^_^
HMmm l'unico problema e che devo vedere se é possibile rendere la cosa non
troppo dipendente da JavaCC... cioé non vorrei che il prof. mi scambi per un
fottuto lamer (anche se non ha idea di cosa sia ;DDD) ... penso che
compilerò un parser ASM e poi cercherò di farlo sembrare più "italiano" ;DDD
LOTTA CONTRO LO STRAPOTERE DELL'INFORMAZIONE CONTROLLATA
VIVA LA LIBERTA' SU INTERNET
JAVA LA VISTA! SIEMPRE!


 piuttosto vecchiotta ma gli ho dato un occhiata...bhe' c'é da studiarselo
Ti avviso se già non lo sai che JavaCC è arrivato alla versione 1.1


[...]
Hasta siempre. :-)


tempi. STOOOOP altrimenti la nostalgia prende il sopravvento ^_-
il sas c è quello della 
www.sas.com
, quello dei megaprogrammi di
statistica?

 statistica?
Proprio quello
