Newsgroup: it.comp.os.linux.development
Titolo: Kdevelop Lex e Yacc

Ciao,
uso linux redhat 7.3 con Kdevelop 2.1
Sto sviluppando un parser di file c e volevo utilizzare il kdevelop.
Apro  quindi un nuovo progetto c++ e setto i flag di compilazione per
l'uso di lex e yacc.
Il file .ll e' processato per primo e viene generato un file lex.yy.c .
Purtroppo tale file viene compilato prima del processamento del file .yy
e quindi non ho a disposizione la tabella dei token yy.tab.h .
In ogni caso non posso includere il file lex.yy.c dentro il file .yy
perche' altrimenti mi ritrovo una marea di definizioni multiple (il file
lex.yy.c e' cmq compilato).
Anche impostando nel 
makefile.am
   lexyacc3_LDFLAGS = -d -v 
il file yy.tab.h non viene generato perche' nella riga di compilazione
tali flag vengono ignorati:
    bison -y Y_parser.yy && mv y.tab.c Y_parser.cc
Infine ho notato che e' impossibile avere i file lex e yacc che si
chiamano allo stesso modo (es. parser.ll parser.yy)!
Detto tutto cio' sbaglio da qualche parte o questo tipo di progetti non
sono supportati dal kdevelop?
grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sono supportati dal kdevelop?
Io sono riuscito a settare kdevelop correttamente per lex e yacc, e riesce a
fare il debug anche nel codice C scritto nel file yacc!!
Uso un makefile personalizzato pero`, quindi niente autoconf e automake...
forse si puo` usare anche quelli, non ne ho idea. 
Il file di lex ha l'estensione .lex, il bison e` un .y
Tutti i sorgenti sono nella stessa directory (niente strutture
multilivello). Per farlo andare ho importato il progetto e ho modificato le
le cose seguenti, nelle proprieta` del progetto:
 1. General: la path e` "absolute path"
 2. Run > Run from the BUILD directory
Ti posso incollare anche il makefile.
Ciao,
Palantir che... si l'esame di compilarori si avvicina...
-------------------------------------------------------------------
HFILES = pt.h st.h ic.h typedefs.h
CFILES = lex.c gra.c pt.c st.c stgen.c tc.c ic.c icgen.c icemit.c cgen.c
asmgen.c
OFILES = $(CFILES:.c=.o)
all: minipascal
gra.c gra.h : minipascal.y
        bison -v -d -ogra.c minipascal.y
lex.c : minipascal.lex gra.h
        flex -s -olex.c minipascal.lex
%.o : %.c $(HFILES)
        gcc -g -W -Wall -c $< -o $@
minipascal: $(OFILES)
        gcc -g -Wall $(OFILES) -o minipascal
clean:
        -rm $(OFILES) minipascal gra.h gra.c gra.output lex.c *~  2>/dev/null
        -rm a.out output.ic output.c output.s  2>/dev/null
-- 
Palantir
icq:57482808 --- Per scrivermi in priv togli quello che va tolto

 a fare il debug anche nel codice C scritto nel file yacc!!
GRRR! Sul libro di compilatori leggo yacc ma in pratica uso Bison, quindi
ogni volta che ho scritto yacc leggi bison. Pero` non dovrebbe esserci
molta differenza...


Palantir ti ringrazio per avermi risposto.
Purtroppo per me usare la gestione del kdevelop e' una  necessita'.
Ti spiego. Ho 2 progetti: uno con il parser il cui make l'ho scritto io
ed e' simile al tuo, l'altro comprende un certo numero di librerie
dinamiche e la gestione l'ho affidata al kdevelop.
Il parser andra' a comporre una nuova .so che sara' utilizzata da quelle
del secondo progetto e quindi il suo sviluppo sara', in questa fase,
contemporaneo alle altre. Avere quindi un unico progetto in cui premo F9
e tutto viene compilato e avviato mi semplificherebbe un po' la vita, ma
non sono in grado di scrivere da solo gli automake e autoconf.
Ecco perche' ho perso mezza giornata nel tentativo di far ragionare il
mio kdevelop e mezza giornata nella disperata ricerca di info sulla
rete.
grazie cmq, ciao


 l'uso di lex e yacc.
...
Solo per far notare che esistono gia' i parser di ctags e source navigator.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! *Real* programmers use cat > a.out! No way, /real/ ones
        use zcat > a.out 'cause you can type faster that way. !>-
                -- from a Slashdot discussion

RISOLTO!!!
Per coloro che hanno lo stesso problema.
Ho creato una sottocartella e indicato al KDevelop di compilare una
libreria dinamica. I file sono:
   l_parser.ll
   y_parser.yy
Modificato il Makefile.am in modo da aggiungere una dipendenza:
xxx_la_SOURCES += y_parser.yy
LFLAGS =
YFLAGS = -v -d
l_parser.cc : y_parser.cc
CLEANFILES = l_parser.cc y_parser.h y_parser.cc y.output


 Solo per far notare che esistono gia' i parser di ctags e source navigator.
-- 


un'alternativa al ctags che potrebbe fare al caso mio?
etags ? ( nota la 'e' non 'c')
ra l'altro in questo momento sto guardando questo:
http://rubyforge.org/projects/lpt/
forse potrebbe eserti utile ? 

 un'alternativa al ctags che potrebbe fare al caso mio?
Appunto source navigator, oppure global. Controllali, ma non mi ricordo se
fanno quello che vuoi tu. 
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail** 
-<! Living on Earth may be expensive, but it includes an annual free trip
		around the Sun. !>-