Article View: pl.comp.lang.pascal
Article #92675Re: Analiza kodu Pascala - Yacc?
From: darekm
Date: Fri, 17 Oct 2008 11:06
Date: Fri, 17 Oct 2008 11:06
57 lines
3578 bytes
3578 bytes
Borneq pisze:
> Chciałbym napisać analizator kodu Pascala w wersji Delphi/Kyliź jak i
> Lazarusa który mógłby zanalizować całe projekty i pakiety, znajdować
> drzewo użycia unitów jak i zbiór klas i metod używanych w tych unitach.
> Analizator potrzebny byłby głownie z powodu:
> Piszę sobie bibliotekę która miała by działać zarówno w Delphi/Kylixie
> jak i w Lazarusie; są przypadki zaimportowania znanych pakietów jak
> Synedit, jednak nie chciałbym rozwijać dwóch wersji które i tak w końcu
> się rozminą. Potrzebny byłby konwerter który mógłby automatycznie
> konwertować projekt w obie strony.
Z parserem Ci nie pomogę, natomiast kilka moich przemyśleń na temat
przenośnego kodu.
> Do tego potrzebny jest parser - do konwersji Delphi<->Kylix wystarczało
> {$ifdef LINUX} i {$ifdef VisualCLX} w kodzie oraz mały programik do
samo LINUX nie wystarczy, gdyż przy FPC można kompilować zarówno dla Win
jak i innych platform. Raczej koniecznych jest kilka innych definicji.
> konwersji który:
> - zmienia rozszerzeń dfm<->xfm w programach testowych
> - w plikach .dof tworzenie/usuwanie "Conditionals=VisualCLX" dla Delphi
> z CLX
> - tworzenie .kof dla Kylixa
> - w plikach cfg dodawanie/usuwanie do opcji -D " VisualCLX "
Jak najmniej tego typu uwarunkowań w plikach innych niż kod źródłowy.
Przecież to wszystko można dodać przy pomocy małego pliku inkludowanego
na początku każdego źródła.
Ja mam w pierwszej linii {$I start.inc}
i w nim ustawiane są wszystkie dyrektywy kompilacji w zależności od
kompilatora i platformy
> - tworzenie .plików .conf Linuxa z "-DVisualCLX"
dodaj do includa
> - zmiany w plikach pas: tam gdzie było {$R *.dfm} zamiana na {$R *.xfm}
to też powinno być warunkowe {ifdef *.dfm else *.xfm}
> W tym przypadku nie trzeba parsowania, ale jeśli mam nietyle zmieniać
> składnię co określać jakich unitów z Vcl/jcl mam użyć, jest potrzebny
> analizator.
tego nie rozumiem. Przecież kompilator sam Ci powie co potrzebuje.
Nie do końca sobie potrafię wyobrazić w czym parser mógłby pomóc. Jeżeli
masz niewielką bibliotekę to się go nie opłaca robić. Jeżeli naprawdę
dużą automat będzie za słaby.
Zobacz jak jest pisany FPC, to chyba najlepszy przykład pisania
wieloplatformowego. Stosują kilka rozwiązań, parsery również, ale chyba
nie do tego co sugerujesz.
Opieranie się o pliki konfiguracyjne środowisk wizualnych wydaje się
niewłaściwe, ze względu na stosunkowo częste zmiany ich struktury
--
Darek
Technical Details
Message-ID:
<gd9rm3$j0s$1@atlantis.news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!news.intelink.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mailReferences:
<gd9o7o$k2r$1@news.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!news.intelink.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail From: darekm <darekm@emadar.com> Newsgroups: pl.comp.lang.pascal Subject: Re: Analiza kodu Pascala - Yacc? Date: Fri, 17 Oct 2008 13:06:03 +0200 Organization: TP - http://www.tp.pl/ Lines: 58 Message-ID: <gd9rm3$j0s$1@atlantis.news.neostrada.pl> References: <gd9o7o$k2r$1@news.onet.pl> NNTP-Posting-Host: gsi122.internetdsl.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.neostrada.pl 1224241667 19484 83.3.216.122 (17 Oct 2008 11:07:47 GMT) X-Complaints-To: usenet@news.neostrada.pl NNTP-Posting-Date: Fri, 17 Oct 2008 11:07:47 +0000 (UTC) User-Agent: Thunderbird 2.0.0.17 (Windows/20080914) In-Reply-To: <gd9o7o$k2r$1@news.onet.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit