[nem-pl] Dalsze rozważania o higienicznych makrach
Kamil Skalski
nazgul at omega.pl
Mon Feb 23 23:06:43 CET 2004
Monday 23 of February 2004 22:52, Marcin 'Qrczak' Kowalczyk wrote:
> > A ja tu jeszcze mam inną wątpliwość, bo quotowanie jest używane nie tylko
> > w makrach - np. ja sobie piszę w algorytmie budowania quotowań używając
> > quotowań, które służą mi do niczego innego jak do skrócenia zapisu drzew
> > składniowych. Nic nie jest tu expandowane, wszystko dzieje się w tej
> > samej kompilacji. I co, mam w nich stracić możliwość automatycznego
> > rozwijania nazw?
>
> Nie rozumiem.
macros.n:495:
| <[ $target <- $source ]> =>
<[ Nemerle.Compiler.Parsetree.
E_assign ($(quoted_expr (ctx, qctx, target)),
$(quoted_expr (ctx, qctx, source))) ]>
to jest operacja wykowynawa po prostu na drzewach rozbioru wyrażeń zawartych w
<[ ... ]>. Operator ten jest tu traktowany jako funkcja Expr -> Expr, która
"liftuje" wyrażenia o jeden poziom w górę. Zauważ, że zacytowane wyrażenia
nie biorą udziału w ANI JEDNEJ ekspansji makr.
Co więcej, nasz prosty system umożliwi mi skrócenie tego do
using Nemerle.Compier.Parsetree;
...
| <[ $target <- $source ]> =>
<[ E_assign ($(quoted_expr (ctx, qctx, target)),
$(quoted_expr (ctx, qctx, source))) ]>
More information about the devel-pl
mailing list