[nem-pl] Pattern matching wygenerowanych drzew
Kamil Skalski
nazgul at omega.pl
Fri Nov 21 19:55:03 CET 2003
Friday 21 of November 2003 19:48, Michal Moskal wrote:
> On Fri, Nov 21, 2003 at 07:20:12PM +0100, Kamil Skalski wrote:
> > No i natrafiłem na pierwszy problem koncepcyjny.
> > Otóż takie <[ 2+ 2 ]> przekształci się na coś w stylu
> > E_call ( E_ref ("+"), [Parm (E_literal (2)); Parm (E_literal (2))])
> > i wszystko ładnie
> > ale kiedy przyjdzie zmatchowac takie wyrazenie, piszac to samo w
> > patternie, to bum: Parm nie jest wariantem, tylko konstruktorem klasy,
> > zatem nie może być umieszczony w patternie... :(
>
> A jaką semantykę byś widział dla patternu Parm (E_literal (2)) ? Można
> napisać: { expr = E_literal (2) } i wiadomo o co chodzi. W przeciwnym
> wypadku trzeba by analalizować konstruktory.
Tak, właśnie o tym mówię. Jedyne rozwiązanie (właśnie takie) wymaga napisania
dla patternów osobnego translatora, ktory bedzie E_call'a tlumaczyl jako
rekord... Uh, sporo roboty.
A teraz borykam sie z dziwacznym bledem translacji E_list:
za nic w swiecie kompilator nie chce przyjac [], wymaga zawsze Nil(), mimo
ze [] jest tłumaczone własnie na Nil()...
Pracuję nad tym :)
More information about the devel-pl
mailing list