[nem-pl] Rozszerzenia - my¶li o kompilacji
Kamil Skalski
nazgul at omega.pl
Tue Oct 28 23:39:08 CET 2003
Tuesday 28 of October 2003 23:10, Lukasz Kaiser wrote:
> Hej.
>
> > Ale to jest moje zdanie i byæ mo¿e mo¿liwo¶æ mieszania kodu z metakodem
> > nie jest z³a.
>
> Ja chyba nie rozumiem, ale czy przy pisaniu tych rozszerzen nie
> bedzie czasem potrzebny zwykly kod ? To byloby milo moc go napisac w tym
> samym pliku, lub chocby moc napisac
> ext foo ... = let bar : int -> int = ... in [< ... >] ... .
>
> To czy kompilator bedzie domyslnie wylaczal kompilowanie rozszerzen czy
> nie jest inna sprawa, ale jak ktos bedzie chcial to je sobie wlaczy.
> Ale chyba nie chcesz wymagac, zeby ktos chcacy napisac rozszerzenie jak
> wyzej musial sobie bar wpisac w innym pliku i najpierw skompilowac ?
>
> Nawet jesli bedzie tak, ze piszac w pliku a.n(ext) rozszerzenia nie mozna
> z nich korzystac piszac dalsze rozszerzenia i jesli sie chce z nich
> korzystac to trzeba zrobic plik b.n(ext) i skompilowac majac tam wpisane
> "open ext a" czy cos i dajac mu a.o czy tez a.cil, to nie powinno to
> zbytnio przeszkadzac. Czy ja dobrze rozumiem ze tak bys chcial z przyczyn
> technicznych, tzn. dlatego ze musisz moc jakos te funkcje wywolac podczas
> kompilacji i ciezko jest ci emitowac cil do wlasnego runtime ? Ale w
> koncu ten cil'owski engine podobno ma dynamiczne dokladanie funkcji,
> chociaz ja nigdy nie widzialem tego dzialajacego. Ale wtedy wlasciwe
> ograniczenie brzmi "nie wolno uzywac nieskompilowanych wczesniej
> rozszerzen" a nie "maja byc w innym pliku".
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.
>
> Zasadniczo jednak to ja nie rozumiem i bedzie mi milo jak mi ktos
> wyjasni. Szczegolnie chetnie sie dowiem jak parser ma to polknac, jak
> bedzie mial napisane [< cos >] i on nie wie, czy to cos to jest expr,
> tydecl, czy cokolwiek innego. Nawet nie pytam o typowanie, chociaz jesli
W zasadzie z postaci tego co w srodku powinno wszystko wynikać (przecież
czytając zwykłe wyrażenia wszystko wiadomo, a tu będzie po prostu wyrażenie
obudowane przez [< >]), ale z typowaniem zmiennych to będzie pewnie kosmos.
More information about the devel-pl
mailing list