=?us-ascii:iso-8859-2:utf-8?Q?=5Bnem-p?= =?us-ascii:iso-8859-2:utf-8?Q?l=5D_Re=3A_=3D=3Fus-ascii=3Aiso-8859-2=3Aut?= =?us-ascii:iso-8859-2:utf-8?B?Zi04P1E/PTVCbmVtLXA/PSA9P3VzLWFzY2lpOmlz?= =?us-ascii:iso-8859-2:utf-8?B?by04ODU5LTI6dXRmLTg/UT9sPTVEX0RhbGVqX29f?= =?us-ascii:iso-8859-2:utf-8?B?c2s9QjNhZG5pX3JvenN6ZXJ6ZT1GMT89?=

Lukasz Kaiser kaiser at tenet.pl
Mon Nov 3 20:38:56 CET 2003


Hej.

> IMHO nie jest potrzebna ¿adna równoleg³a gramatyka. Wystarczy zrobiæ co¶
> takiego:
> 
> expr :=
>   ....
>   <[ expr ]>
>   $( expr )
> 
> pattern :=
>   ...
>   <[ expr ]>
> 
> Plus ewentualne <[ ID : expr ]> etc.
> 
> W parsedtree.n dopisujemy:
> 
>   | E_quote { ex : Expr; }       (* <[ ... ]> *)
>   | E_unquote { ex : Expr; }     (* $( ... ) *)
> 
> oraz:
> 
>   | P_quoted_expr { ex : Expr; }.

Hmm, twoje HO wyglada bardzo sensownie :).
 
> Teraz zauwa¿amy, ¿e jednyny fragment kodu, który chodzi po wyra¿eniach
> (wiêc i patternach) jest w tyexpr.n. Wiêc tam po prostu:

Zauwazamy to troche za duzo powiedziane: ty zauwazasz bo ja bym nigdy tego
nie zauwazyl. Ale to bardzo milo ze nam to zauwazyles :).
O ile sie nie myle, to w duzym stopniu rozwiazuje to problem typowania,
bo nie trzeba przeksztalcac nowego typu do starego PT, tylko to sie robi
przy typowaniu.

> ty_expr (ctx, e) =
>   ... 
>   | E_unqute => error
>   | E_quote (e) => ty_expr (ctx, quote_expr (e))
> 
> quote_expr (e):
>   | E_ref (x) => 
>     E_call (E_ref ("E_ref"), List.cons (E_literal (L_string (x))))
>   | E_if_then_else (e1, e2, e3) => 
>     E_call (E_ref ("E_if_then_else"), List.cons (quote_expr (e1), quote_expr (e2), quote_expr (e3)))
>   | ...
>   | E_unquote (e) => e
>   | E_quote => error

Fajne. Hmm, a moze by tak zaczac od zrobienia tylko rozszerzen dla "expr",
z tego co piszesz to powinno byc wykonalne w bardzo krotkim czasie.
 
> Fajnie by to by³o napisaæ jako rozszerzenie :-) Tylko trzeba to najpierw
> napisaæ, ¿eby móc pisaæ rozszerzenia.

Moment, co jako rozszerzenie ? Samo quote_expr, czy ty_expr tez ?
Bo ty_expr to ja nie wiem jak, on w koncu typuje.

> Aha, podobna funkcja by³aby dla patternów, klas, typów i czego tam
> jeszcze.

Moze najpierw zrobic ja dla samych expr i sprobowac czy dziala i co z
tego mozna dostac, a potem popsuc reszte ?
 
> Mówiê z sensem?

Chyba tak, ale ja przestaje byc pewny czy rozumiem. No ale jesli to moze
za chwile zadzialac to wtedy pewnosc wroci ;).

- lk




More information about the devel-pl mailing list