Dziś jest poniedziałek, 13 października 2008 roku (z kalendarza...)

Kompilator OPT gotowy

Icon

20.06.2005, 21:31

Projekty

Komentarze (8)

Powrót

No, jak przepowiedziałem, tak zrobiłem. Nowy kompilator szablonów do OPT jest gotowy i spisuje się znakomicie. Przypomnę, iż teraz całość kompilowana jest do drzewka, przez co instrukcje "widzą", co jest między nimi. Ta właściwość była mi potrzebna do zrobienia komponentów, które również działają dokładnie tak, jakem planował.

Pewną "niedogodnością" wymiany kompilatora jest konieczność przepisania wszystkich dotychczasowych instrukcji, bowiem radykalnie zmienił się sposób ich działania. Instrukcje są teraz węzłami drzewa, a żeby łatwiej to się reprezentowało, powinny być zawarte w klasach pochodnych od opt_instruction, która z kolei pochodzi od opt_node. Żeby było ciekawiej, w jednej takiej klasie może być zawartych kilka instrukcji, lecz to nie OPT odpala metody do każdej z nich. Ba... czegoś takiego nawet nie ma :). Do obiektu-węzła trafiają po prostu same informacje o instrukcjach, jakie do niego znaleziono, oraz przy okazji o podelementach każdej z nich. Tu mój parser jest lepszy nawet od XML'a, gdyż obsługuje złożone zagnieżdżenia w stylu if ... elseif ... else ... endif bez rozbijania tego na podwęzły. Teraz, gdy drzewo jest gotowe, odpalana jest metoda process() węzła głównego, która odpala podobne metody w węzłach podrzędnych, te odpalają jeszcze niżej itd. To właśnie poprzez nadpisanie domyślnej ich treści instrukcje mogą decydować, co zrobić z otrzymanymi danymi, a nawet - w jakiej kolejności przetworzyć instrukcje wraz z podelementami. Teoretycznie można nawet napisać wariację if'a, która nie będzie się rzucała, gdy else znajdzie się przed elseif :). Metoda process() ułożyłaby wszystko, jak trzeba i kod PHP wyszedłby już tak, powinien :).

Powrót

Komentarze

Napisał eXtreme w wtorek, 21 czerwca 2005 o 11:31

Zagmatwane strasznie, ale jak widzę się sprawdza. :)

Napisał Nievinny w wtorek, 21 czerwca 2005 o 11:43

Ciekawe, jak wyjdzie OPT 1.0.0 Final to będzie można zmienić Smartego, tylko API mógłbyś zmienić z cos_cos_cos() na cosCosCos()

Napisał Zyx w wtorek, 21 czerwca 2005 o 16:14

Tak, teraz po ośmiu miesiącach od rozpoczęcia prac będę nazewnictwo zmieniać, jeszcze czego :).

Napisał LETKI w wtorek, 21 czerwca 2005 o 17:20

jest OK ;-)

Napisał Cudi w środę, 22 czerwca 2005 o 00:05

@Zyx: ale Nievinny ma racje, całe PHP idzie w kierunku wielbłądów, a OPT w odwrotnym kierunku ;) Póki OPT jest w wersji beta na zmiany ciągle jest czas. A szczerze mówiąc podreślenia strasznie wkurzają i wygladają... inaczej niż reszta pisanego kodu, co wpływa na jego czytelność. Oczywiście nie nalegam, ale staram się zaznaczyć że istnieje zapotrzebowanie na wielbłądy :)

Napisał Zyx w środę, 22 czerwca 2005 o 11:31

Może byście tak zauważyli, że OPT to nie tylko deklaracje metod, których używacie, ale też prawie 100 kb kodu wewnątrz nich. Zmiana nazewnictwa oznacza przepisanie praktycznie wszystkiego od początku. Nie mam zamiaru zawalać sobie wakacji tylko dlatego, że komuś szkoda klawisza podkreślenia. Chyba że mi znajdziesz jakiś program do automatycznej zamiany, to mogę sprawę przemyśleć.

Napisał bela_666 w środę, 22 czerwca 2005 o 18:58

zawsze można wydziedziczyc i dorobic metody z wielbłądami które odwołują się do swych odpowiednikow ;]

Napisał Cudi w czwartek, 23 czerwca 2005 o 20:39

treść

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia