Thread View: pl.comp.lang.pascal
3 messages
3 total messages
Started by Borneq
Fri, 17 Oct 2008 10:09
Analiza kodu Pascala - Yacc?
Author: Borneq
Date: Fri, 17 Oct 2008 10:09
Date: Fri, 17 Oct 2008 10:09
25 lines
2397 bytes
2397 bytes
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.
Do tego potrzebny jest parser - do konwersji Delphi<->Kylix wystarczało
{$ifdef LINUX} i {$ifdef VisualCLX} w kodzie oraz mały programik do
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 "
- tworzenie .plików .conf Linuxa z "-DVisualCLX"
- zmiany w plikach pas: tam gdzie było {$R *.dfm} zamiana na {$R *.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.
Który z generatorów parserów warto użyć? Yacc czy może coś innego (preferuję
analize prawostronną jak LALR czy :LR(1) ), mam parę plików z gramatyką
Pascala, ale chętnie jeszcze jakiś bym znalazł pasujący do składni Delphi.
Re: Analiza kodu Pascala - Yacc?
Author: 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
Re: Analiza kodu Pascala - Yacc?
Author: Borneq
Date: Sat, 18 Oct 2008 14:47
Date: Sat, 18 Oct 2008 14:47
8 lines
1400 bytes
1400 bytes
Użytkownik "Borneq" <borneq@antyspam.hidden.pl> napisał w wiadomości news:gd9o7o$k2r$1@news.onet.pl... > Który z generatorów parserów warto użyć? Yacc czy może coś innego > (preferuję analize prawostronną jak LALR czy :LR(1) ), mam parę plików z > gramatyką Pascala, ale chętnie jeszcze jakiś bym znalazł pasujący do > składni Delphi. Zastanawiam się nad Gold, SableCC a może Cup.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads