Skocz do zawartości

DeDo -> Delphi Documentator


Toster

Polecane posty

Hejka,

W ramach prac nad Kwadratem Ninja pojawila sie potrzeba pisania dokumentacji w kodzie, uzywam narazie doxygena ale srednio to wspolpracuje. Tak wiec w miedzyczasie tworymy projekt do dokumentacji. Calosc jest pod adresem:

http://www.assembla.com/search/search?sear...=DeDo&commit=Go

 

(szukamy DeDo w spaces)

 

Projekt jest pol-otwarty, czyli mozna przegladac nie mozna modyfikowac. co jakis czas bede wrzucal tutaj male procki ktore jakby komus sie nudzilo moglby dopisac, przyspieszy to nasze prace, mam zamiar rowniez udostpeniac exe'ka i zrodelka, ale chce uniemozliwic radosne modyfikowanie naszego kodu, wiec lokalnie bedzie mozna robic co sie chce ale nie na naszym projekcie.

 

Tak wiec pierwsza procka do pomocy wyglada tak:

 

function SameParamLists(const paramList1, paramList2: TStrings):Boolean;
begin

end;

 

Procedura porownuje 2 listy stringow w ktorych sa zapisane teksty opisujace parametry metod

listy maja taka postac:

NazwaZmiennej=TypZmiennej

lub

NazwaZmiennej=

 

trzeba sprawdzic czy obie listy sa identyczne, czyli:

- czy liczba parametrow jest taka sama &

- czy typy parametrow i ich nazwy sa takie same

kolejnosc parametrow na listach tez musi byc taka sama

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Nope szukalem roznych projektow tego typu (sprawdzilem chyba z 8) ale jakos zaden mi nie podszedl za bardzo. Tego nie widzialem ale teraz juz za pozno... wyprodukowalem wczoraj 28kb kodu i mam juz sporo zrobione dziaisj bedzie pewnie pierwszy test. Pozatym od pewnego czasu mamy zamiar z Forcem zrobic pakiet narzedzi wspomagajacych do Delphi i sa szanse ze DeDo bedzie pierwsza z czesci.

 

W sumie jak ktos ma doswiadczenie z Latexem, lub PDf'em (bez zewnetrznych instalowanych komponentow, liby tylko GNU/GPL) to soon pewnie cos sie dla niego znajdzie (jak bedzie mial oczywiscie chec i ochote)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

ok cos bardziej wymagajacego:

procedure TDeDo_BasicParser.SimplifyFile(const content: TStrings);
begin

end;
6ŁŁą-Ź,rbęZąĘ-Ż7k:n'5i,+-'Ź#z[vĘ^r6ĄśKx)yv4IE
Ź'!)6jhą,+-'!ŚygĄ'Ś-z%i)ui'
procedure CosTam;
var
 ala: integer;
const
 du = 'dsfds';
begin
  if ala = 2 then 
    showMessage(du);
end;
0y'łjh''iŚ)
Q(((()(()

 

Jacys chetni ? :D

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Wydaje mi się że wszelakie unity z regami polegną na większych plikach.

 

Nie prościej i zgrabniej wyjdzie napisanie analizatora składniowego? Może zamiast dłubać w pascalu, analizator pascala lepiej wygenerować taki program w YACC + LEX (z regami) w wersji code dla Delphi (link)? :) Moim zdaniem "zwykłe" języki nie bardzo się nadają do pisania sporych analizatorów i interpreterów, kompilatorów. Kod jest taki trochę masochistyczny...

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Ogolnie uzywam wlasnie copy (glownie) ale calosc bazuje na kilku podstawowych procka ktore w zaleznosci od tego jakie slowa kluczowe podam parsuja odpowiednie bloki. Co do parserow skladni itd brzmi ciekawie force tez cos takiego proponowal ale czas jaki mi bylby potrzebny na zrozumienie tego i wykorzystanie bylby chyba dluzszy niz napisanie tego od zera. No nic moze w przyszlosci sie za to wezme, narazie robie lopatologicznie. Tak czy siak dla zainteresowanych kod chyba powinien byc dostepny na assembli.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

No więc, prace postępują i powstał parser co ma rozumieć definiowanie klas, metod, stałych itp. I chciałbym poprosić o testowanie go poprzez wrzucanie rożnych plików pas, które kiedyś tam napisaliście, muszą to być pliki unit, a nie library, program, package itp.

 

W załączniku jest plik exe do testowania parsera. na początku otwieramy plik pas, potem naciskamy guzik ?Parsuj, parsuj? I jeśli dostaniemy OK to fajnie, jeśli co innego to mniej fajnie. Wtedy będzie plik ?error.txt?, który ma listę błędów. Powstaje też zazwyczaj plik ?tempik.txt? który jest tym samym plikiem pas, ale bez komentarzy ciał funkcji itp. Strukturę jaka się stworzy można zapisać jako plik txt. Warunkiem jest oczywiście to, że plik pas da się skompilować. Jeśli parser się wykrzaczy na czymś co nie powinien to proszę pisać na czym,zawartość pliku error itp.

 

Zachęcam to twórczego myślenia i testowania.

Na czym się na pewno wykrzaczy:

  1. Robienie linijek w stylu nazwa = class; w sekcji type będącej w ciele metody
  2. Sekcje threadvar i resourcestring
  3. Gdy mamy metodę i jej parametry to parametr nie może być taki: nazwa : set of(dwa,trzy); chodzi dokładnie o nawiasy okrągłe
Można robić sekcje type w ciele klas, czyli zagnieżdżać klasy w klasach i tak kilka razy, robić GUID-y interfejsom, bogate dziedziczenia, bawcie się modyfikatorami inline, override, overload i innymi aby znaleźć które nie działają, a powinny, różne wielkości znaków w celu sprawdzanie czy parser patrzy na wielkość znaków (a nie powinien).

I powtarzam: pliki musi dać się kompilować w Turbo Delphi, wynika to stąd, że składnia jaką parser rozumie można powiedzieć, że jest bardziej bogata niż składnia Delphi (choć są wyjątki jak te nawiasy) i można tworzyć zmienne o nazwie co jest słowem kluczowym, takie co nazwy się powtarzają, nie patrzy czy metoda klasowa jest static, a jeśli maja takie same nazwy to czy się overload i masę innych rzeczy nie testuje, bo to nie jest kompilator.

 

Edit: I mam tyle postów co numer użytkownika :D

 

Edit2: jest nowsza wersja, nie wykrzacza się na bloku try

Project1.zip

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

  • 3 weeks later...
  • 3 weeks later...

Masz to jest bardziej stabilne:

link

 

I od razu lista czego nie skuma, to abyście narzekali gdy nie skuma czegoś nie z tej listy:

- w implementation są linijki w stylu coś = class(coś);

- threadvarów

- pliki pas nie mogę być programami (da się tak dla kontrolek ocx)

- gdy zmienne są jakiegoś typu funkcyjnego to nie mogą mieć za sobą słowa kluczowego oznaczającego jak ta metoda ma być wywoływana

- metody z implementation muszą mieć listę parametrów tak jak w interface. Ponieważ w Delphi nie jest konieczne aby metoda z implementation miała listę parametrów (chyba że przeładowane są), jeśli ma je w interface - u nas jest konieczne.

 

Mam nadzieje, że mocno nie bolą te ograniczenia :D

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...