DSL najłatwiejszy do parsowania

Tak jak zapowiadałem, jako że “środowisko uruchomieniowe” DSLExecutora (wykonywanie wyrażeń) jest już zaimplementowane, od dziś skupiam się na funkcjonalności będącej bliżej użytkownika końcowego. Mowa o parsowaniu kodu DSL podanego przez użytkownika do postaci gotowej do wykonania. Na początek zdefiniuję najprostszy DSL i stworzę jego parser. Do dzieła!

Continue reading “DSL najłatwiejszy do parsowania”

Wykonywanie wyrażeń: funkcje (cz. 2)

Uff, po przerwie przeznaczonej na święta, załatwianie zaległych spraw i witanie wiosny, czas wrócić do blogowania. Przerwa wypadła w mało fortunnym momencie, bo w połowie opisu wykonywania wyrażeń reprezentujących funkcje. W związku z tym, dla lepszego zrozumienia dzisiejszego posta, polecam zajrzenie do jego pierwszej części. Po tej lekturze zapraszam dalej.

Continue reading “Wykonywanie wyrażeń: funkcje (cz. 2)”

Wykonywanie wyrażeń: funkcje (cz. 1)

Czas rozprawić się z wykonywaniem wyrażeń reprezentujących wywołania funkcji, a zarazem zamknąć minicykl postów o wykonywaniu wyrażeń (poprzednie części: wartości stałe, zbiory wyrażeń). Tym samym rdzeń DSLExecutora zostanie ukończony i będę mógł przejść do implementacji funkcjonalności będących bliżej użytkownika. Ale skupmy się na wywoływaniu funkcji. Pracy jest niemało, dlatego opis zostanie rozbity na dwa posty. Do dzieła!

Continue reading “Wykonywanie wyrażeń: funkcje (cz. 1)”

Obsługa funkcji niezwracających wartości

Dzisiaj, Czytelniku, będziesz mógł wreszcie zasnąć spokojnie – rozładuję napięcie zbudowane w poprzednim poście. O czym zapomnieliśmy ostatnio? Otóż opisując funkcje, milcząco przyjąłem, że każda funkcja zwróci jakąś wartość. A co z funkcjami, które wartości nie zwracają (w C# ich typ zwracany to void)?

Continue reading “Obsługa funkcji niezwracających wartości”

Dziedzina DSLExecutora: implementacja

Ok, skoro przedstawiłem już podstawowe zasady dotyczące struktury opisu wykonywanych operacji, mogę zacząć definiować interfejsy i klasy należące do dziedziny DSLExecutora. W poprzednich postach używałem właściwie tylko dwóch pojęć, które mogą trafić do tej dziedziny: wyrażenie i funkcja. Wygląda na to, że to wszystko, czego będę potrzebował do implementacji podstawowego przetwarzania. Zatem:

Continue reading “Dziedzina DSLExecutora: implementacja”

Hello again, world! Daj Się Poznać 2016

Witaj po latach, świecie! Dokładniej, po prawie sześciu latach – bo tyle czasu minęło od zakończenia pierwszej edycji konkursu “Daj Się Poznać” i przejścia tego bloga w stan hibernacji. Wiele się przez ten czas zmieniło, zarówno w świecie .NET-owym, jak i moim prywatnym. Ale o tym innym razem – dziś będzie mowa o “Daj Się Poznać” właśnie.

Continue reading “Hello again, world! Daj Się Poznać 2016”