Dziś jest sobota, 11 października 2008 roku (z kalendarza...)

Smarty też się wykrzacza

Jednak nie jest tak źle, jak pisałem. Smarty'ego też rozkłada takie polecenie:

{$smarty.now|date_format:"%D}%Y"}
Przypomnę: chodzi o to, iż wewnątrz ciągu z datą znajduje się klamra i kompilator uznaje ją za koniec instrukcji. Winne są wyrażenia regularne, które nie dają żadnej sensownej możliwości ominięcia problemu.

Obecnie w OPT nowe ograniczniki definiowane są całkowicie za pomocą wyrażeń regularnych i niezbyt mi się widzi zmienianie ich, aby rozwiązać powyższy problem. Jedyne wyjście to napisanie wyciągarki znaczników od nowa, opierając się na mechaniźmie tokenów i podawania kolejnych partii na wzór YACC. Wymaga to sporych przeróbek i konieczności "ręcznego" rozpoznawania końcowych znaczników itd. Teraz informację tę wyciąga odpowiednie wyrażenie.

W ogóle to zachęcam do zabawy z ogranicznikami. Być może niektórzy zauważyli, że OPT nie zawiera żadnej metody do ich dodawania. Pojawi się ona, ale nie w wersji 1.0.0. Trzeba będzie bowiem pobierać przy ich tworzeniu dodatkowe informacje dla komendy literal także idącej pod przeróbkę, aby dało się obsługiwać dodatkowe ograniczniki.

Powrót

Komentarze

Napisał hwao w niedzielę, 15 stycznia 2006 o 17:06

"Winne są wyrażenia regularne, które nie dają żadnej sensownej możliwości ominięcia problemu."

Musze Cię zasmucic :) da sie napisac takie wyrazenie... ale wydajnosc;)

Napisał Zyx w niedzielę, 15 stycznia 2006 o 17:14

Właśnie dlatego napisałem "sensownej".

Napisał hwao w niedzielę, 15 stycznia 2006 o 17:42

Mnie osobiscie wydaje sie ze sa pewne zasady i lamanie ich w prost, w czego efekcie pojawia sie "blad" nie jest bledem.

Przykładem moze by chociazby paser php

<?php
   #echo '?>';
?>

Napisał Zyx w niedzielę, 15 stycznia 2006 o 21:25

Tja, to tym bardziej - skoro wam, użytkownikom to nie przeszkadza, to nie ma sprawy :). Poprawi się tylko obsługę tego, co jest i będzie.

Napisał hwao w niedzielę, 15 stycznia 2006 o 21:58

W smarty jest specjalny znaczki nie pamietam jak on juz szedl.. ze zw htmlu wyswietli { i } :)

To raczej oczywiste ze takich rzeczy sie nie da zrobic(w systemie ktory uzywa{} ), tzn da sie to wprowadzic ale czy oplaca sie przerabiac caly parser na mniej wydatny, tylko z faktu iz raz na milion trafi sie ktos kto bedzie chcial takie cos zastosowac :)

Sa rozne priorytety, mnie osobiscie wydaje sie smieszne zeby tylko z tego faktu mial mi sie wolniej parsowac kazdy szablon :)

Napisał shw w niedzielę, 15 stycznia 2006 o 22:33

bo czemu ludzie uparli sie na te klamry?
bylo zrobic znaczniki < i >, ktore jednoznacznie okreslaja poczatek i koniec, a jak chcesz w argumencie dac < albo > uzywasz encji i tyle.
ja piszac kiedystam dosc wydajny system szablonow w sumie nie tak dawno, ale jednak zrobilem to na zasadzie wlasnie nieco xml'owej - tzn. tagi zaczynaly sie w stylu <costam:for> nie pamietam co ustalilem w miejce 'costam' ;P i bylo wszystko jasne.

Napisał shw w poniedziałek, 16 stycznia 2006 o 00:19

hehe - znowu nie te nawiasy :D

Napisał Zyx w poniedziałek, 16 stycznia 2006 o 08:45

Hwao -> w OPT też masz {literal}, ale nie wsadzisz tego do wyrażenia :).

Shw -> XML'owe znaczniki są w OPT i od biedy można ich użyć. Obsługi encji jeszcze tylko nie ma, ale w odniesieniu do wyrażeń tekstowych (cudzysłowy, apostrofy itd.) da się zrobić. XML będzie się jednak wywalał poza tekstami, ponieważ znak ">" jest wykorzystywany przez operator dostępu do obiektu. No trudno, dodam jakieś zaawansowane sterowanie tym cudem, by sobie każdy mógł dostosować, co ma być parsowane...

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