[nem-pl] Rozszerzenia

Lukasz Kaiser kaiser at tenet.pl
Wed Oct 29 20:32:31 CET 2003


Hej.
 
> Tak, pewnie jednak kilka typów rozwazanych syntax tree trzebaby wprowadziæ. 
> Bo ogolnie ja myslalem o tym co dostaja rozszerzeniajako o top-level 
> wyrazeniach. Jednak rozszerzenia moga, czy to przez rekurencyjny rozklad 
> drzewa, czy przez zaaplikowanie ich w jakies dziwne miejsca w kodzie, brac 
> jako parametry pewne specyficzne czesci drzewa skladniowego.

Tak, dlatego musi pewnie byc pare typow.

> Wydaje sie, ze wprowadzenie kilku typow drzew (mniej wiecej wg gramatyki) i 
> zabronienie uzywania ich w roznych dziwnych miejscach powinno rozwiazac 
> problem interpretacji roznych napisow w [< >]. Jednak niestety parser nie ma 
> pojecia o typach (a moze moglby miec?).

Hmm, parser doskonale wie jaki typ jako drzewo skladniowe bedzie mialo to
co on wlsnie parsuje. Wie, bo zna rozne czesci gramatyki a typy sa do nich
mniej wiecej 1-1. Ciekawe czy mniej czy wiecej ;).

> No wiec najprostsza wersja polegalaby na operowaniu czystym drzewm skladniowym
> ze wszystkimi jego konstruktorami, ktore wystepuja w kompilatorze/gramatyce.
> Wtedy funkcja wygladlaby 
> ext f tr =
>   match tr with
>     E_Assign( va, x) -> E_Assign( f va, f x)
>     E_Var(name, type) -> E_Var( name + "Old", type )
>     E_Plus(a, b) -> E_Minus( f a, f b)
>  ....
> 
> Moze by wtedy tyle typo ile konstruktorow, zadenego problemu z parsowaniem, 
> nieczym...
> Jest tylko jedno ale...
> Programista zastanowi sie 10 razy czy zabierac sie za pisanie powyzszej 
> funkcji (szczegolnie jesli wziac cala mozliwa gramatyke jezyka i potrzebe 
> zapoznania sie z konstruktorami)
> niz czegos w stylu:
> ... 

Nie, programista nie zapozna sie z kompilatorem i nie napisze rozszerzen
jesli to tak zostawisz. Wtedy te rozszerzenia to zabawka dla developerow
Nemerle, maly maja wtedy sens.

> Klopot polega na tym, ze [< >] wymaga niezlego pomieszania jezyka z 
> metajezykiem, ktore w rezultacie moze by efektywnie nieczytelne.

Musisz chyba oddzielic jezyk od metajezyka, np. uznac ze miedzy nawiasami
[< i >] wszystko co piszesz jest kodem, poza rzeczami
poprzedzonymi $( i konczocymi sie ), ktore sa wyrazeniami Nemerle.
Ale klopoty pewnie beda.

- lk




More information about the devel-pl mailing list