2012-10-23 19 views
6

Opracowuję i meta-model abstrakcyjnego drzewa składni dla smalltalk i teraz mam problemy z modelowaniem bloków. Są to rodzaj literałów, ale z drugiej strony są to jednostki behawioralne, takie jak metody. Bloki są czymś w rodzaju funkcji lambda, więc może ktoś miał lepszą praktykę z nimi.Ast reprezentacja funkcji lambda

Będę wdzięczny za wszelkie porady.

Odpowiedz

8

Przeglądarka Refactoring ma bardzo dobrą AST, spójrz na jej wdrożenie.

W odniesieniu do pytania: Przeglądarka refaktoryzująca wyodrębnia wspólne części bloków i metod w osobny typ węzła o nazwie SequenceNode. Węzeł sekwencji modeluje tempa i sekwencję instrukcji. Węzeł bloku następnie opakowuje węzeł sekwencji, dodaje argumenty i dziedziczy współużytkowane zachowanie węzłów wartości. Węzeł metody opakowuje węzeł sekwencji i dodaje nazwę metody, argumenty, pragmy itp.