Ostatnio większość wolnego czasu spędzam na tworzeniu własnego języka programowania, ucząc się tej sztuki poprzez praktykę. Teorie czerpie z ostatnio zakupionej książki, wykładów na MIMUW oraz innych części sieci.
Założeniem co do funkcjonalności języka jest obliczanie wyrażeń, w skład których wchodzą operatory arytmetyczne, logiczne, relacyjne itp. oraz deklaracja zmiennych, instrukcja skoku bezwarunkowego i warunkowego, instrukcja w stylu echo (czy printf, writeln lub podobnej służącej do napisania “Hello World”). Składnia w stylu C.
Niby założenia nie wygórowane: minimalny zestaw instrukcji potrzebny do napisania czegoś bardziej zaawansowanego niż kalkulator na bazie Odwrotnej Notacji Polskiej, ale nie od razu Rzym zbudowano, od czegoś trzeba zacząć.
Po wielu godzinach rozmyślań (głównie w czasie zajęć dydaktycznych w mojej szkole), wielu zapełnionych kartkach mojego hińskiego notesu (to nie błąd ortograficzny! Notes został tak podpisany przez mojego kolegę z ławki i taka nazwa się przyjęła) i wielu godzinach przy czytaniu i kodzeniu… UDAŁO SIĘ! Wszystkie przedstawione powyżej założenia języka udało mi się zrealizować.
Język jest interpretowany przez niewielką, pod względem ilości rozpoznawanych instrukcji w porównaniu do przeciętnego procesora, maszynę stosową. Całość została napisana w C++ z użyciem narzędzi Flex++ oraz Bisonc++ (kolejno do wygenerowania leksera i parsera).
Długo szukałem pomysłu na nazwanie języka, lecz doszedłem do wniosku że najwłaściwszą nazwą dla niego będzie “Ana“. Na cześć i chwałe koleżanki z mojej klasy, Ani, która dzielnie słuchała o napotkanych problemach i postępach w pracach. Dla wyjaśnienia, brak jednego “n” przypadkowy też nie jest: to konstrukcje używane powszechnie w innych językach (pętle, funkcje, insturukcja złożona itp).
Kod źródłowy, gdy tylko zostanie uporządkowany, opublikuje w tym miejscu
PS. “Hello World” w Anie:
{
echo “Hello World\n”;
}