=?us-ascii:iso-8859-2:utf-8?Q?=5Bnem-p?=
=?us-ascii:iso-8859-2:utf-8?Q?l=5D_Rozszerzenia_-_my=C2=B6li_=3D=3Futf-8?=
=?us-ascii:iso-8859-2:utf-8?B?P3E/PTIwbw==?= kompilacji?=
Lukasz Kaiser
kaiser at tenet.pl
Wed Oct 29 00:03:10 CET 2003
Hej.
> No i wÅaÅnie mi też to wszystko sie wydaje trochÄ chore i raczej jest tylko
> kwestiÄ
implementacji tego w kompilatorze. Bo w zasadzie "normalny" przypadek
> jest taki, że powstaje taki graf wywolaŠwzajemnych rozszerzeŠprzez
> rozszerzenia (byc moze z cyklami, bo jak pamietamy na poziomie rozszerzen sa
> one zwyklymi funkcjami), ktory ma tez sciezki do wywolan zwyklych funkcji,
> ktore jednak nie moga wywolac tamtych rozszerzen (bo jeszcze ich nie
> skompilowalismy). Wszystko sprowadza sie do skompilowania tego calego grafu i
> zaladowania do runtimeu, ew. wykrzaczenia sie, jesli sa zle cykle.
Nie ma cykli w wywolaniach rekurencyjnych rozszerzen bo one tam wystepuja
jako funkcje a nie rozszerzenia i nie ma problemu. Jesli zalozysz ze
nie uzywasz rozszerzen przed ich kompilacja i dolaczeniem jako plik to w
ogole te problemy powinny zniknac (chyba).
> W zasadzie z postaci tego co w srodku powinno wszystko wynikaÄ (przecież
> czytajÄ
c zwykÅe wyrażenia wszystko wiadomo
Eee, cos ty. Wiadomo, bo jest gramatyka jakas i parser wie co po czym
nastapi i jaki typ w gramatyce ma wyrazenie top-level. No a ty chcesz moc
w to rozszerzenie wlozyc zarowno [< x <- 3 >] jak i [< type foo = Bar >].
Moze rozszerzenie powinno moc miec rozne typy zaleznie od czesci kodu na
ktorej operuje ? To by moglo troche ulatwic.
> , a tu bÄdzie po prostu wyrażenie
> obudowane przez [< >]), ale z typowaniem zmiennych to bÄdzie pewnie kosmos.
Hmm, jesli dodasz nowy znaczek to moze nie koniecznie. W koncu to cos
[< tutaj zwykly kod >] jesli tylko sie ten zwykly kod sparsuje, to sie
przelozy na drzewo skladniowe i mozesz tego uzyc jako stalego wzorca w
funkcji operujacej na drzewie skladniowym. Jesli dodasz nowy znaczek do
opisu zmiennych , np. $x lub ?x _i_ dopiszesz ich typ, tzn np. ?x : E_if
(lub jakas ladniejsza nazwa bazujac na gramatyce) to nie powinno byc az
takich problemow. Wtedy tez powinno dzialac [< x : ?t : type >] (hmm,
tylko sie dwukropki mieszaja miedzy jezykie a meta, trzeba jakis znaczek
na meta, moze [< x : $( t : type ) >] albo cos takiego ?). Jest jeszcze
chyba tak, ze w pewnych miejscach nie musisz podawac typu ale kompilator
go zna i mozesz chiec go wydobyc (hmm, a moze tak nie jest, w sumie nie
wiem), ale to nie powinien byc problem jesli tylko mozesz podac ten typ i
umiescic tam meta-zmienna.
- lk
More information about the devel-pl
mailing list