[nem-pl] Kolorowanie zmiennych przez inne funkcje
Kamil Skalski
nazgul at omega.pl
Thu Mar 11 12:27:37 CET 2004
Tak sobie pomyślałem, że definicja kolorowania jako przydzielającego ten sam
kolor wszystkim zmiennym tworzonym podczas pojedynczego uruchomienia makra
może czasem zaboleć.
Szczególnie wywołanie zewnętrznej funkcji tworzącej kod może coś napsuć, bo
ona wytworzy zmienne tego samego koloru. To może być czasem wygodne, ale
chyba ogólnie będzie prowadziło do używania w tego typu funkcjach ręcznego
NewSymbol. Na szczęście wymyśliłem świetny sposób na to - atrybut [Hygienic]
dopisywany przed funkcją. Makro "Hygienic" wyglądałoby jakoś tak:
macro Hygienic (meth : MethodDecl) : MethodDecl {
meth.body <- <[
TypingContext.PushColor ();
$(meth.body);
TypingContext.PopColor ();
]>
meth
}
W ten sposób możemy opcjonalnie i elegancko powiedzieć, że dana funkcja jest
higieniczna:
public [Hygienic] make_code () : Expr {
<[ def x = 1; bla (x) ]>
}
kod wygenerowany przez make_code nie wprowadzi żadnej definicji w miejscu w
którym zostanie użyty (bedzie higieniczny).
:D
Kamil
More information about the devel-pl
mailing list