Archiwum dla czerwiec, 2009

[23.06.2009] Pulpit

zrzut_ekranu-9System to bez zmian Linux Ubuntu,  jeszcze w wersji 9.04. Środowisko to Gnome + Compiz. Zrezygnowałem z Emeralda  i powróciłem do domyślnego menadżera okien. Motyw Gtk to Clearlooks, pobnie jak krawędź okna. Tapeta odnaleziona na freeisoft, (choć troche ona jesienna, a nie wakacyjna). Co do gadżetów na pulpicie, to również bez zmian. A gdyby ktoś pytał, ten Mackowy dock na dole to Avant Windows Navigator ;)

Ana: Kod źródłowy

Słowo się rzekło, oto w ręce ludu oddaje kod źródłowy pierwszego stworzonego przeze mnie języka programowania, noszącego imię Ana.

Do kompilacji wymagane są pakiety flex i bisonc++ (nie mylić z bison++).  Kompilujemy przechodząc w terminalu do katalogu z wypakowanym kodem, po czym wykonujemy polecenie make. Wszelkie uwagi, opinie bardzo mile widziane.

Własny język programowania…

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”;
}

Czytelność pliku gramatyki Yacca

Długo szukałem sposobu formatowania  gramatyki w pliku wejściowym dla Yacca (a właściwie dla jego klonu na wolnej licencji, bisona) , zapisanej w notacji BNF w sposób, pozwalający zachować jego czytelność przy rozrastającej się liczbie produkcji oraz akcji. Dopiero czytając przykłady w dokumentacji znalazłem odpowiednią konwencje, oto jak ona wygląda:

LEWA STRONA PRODUKCJI
→:
→→ POJEDYNCZY TERMINAL LUB NIE TERMINAL
→→→{ /* Akcja */ }

Każde pojedynczy terminal lub nie terminal prawej strony produkcji znajduje się w osobnym wierszu (odpowiednio wcięty), wyjątkiem od tej reguły może być produkcja z akcją umieszczoną tylko po ostatnim terminalu lub nie terminalu, lub produkcja nie zawierająca akcji. Alternatywny produkcji zapisujemy wg podobnego schematu:

→|
→→POJEDYNCZY TERMINAL LUB NIE TERMINAL
→→→ { /* Akcja */ }

Produkcje kończymy średnikiem poprzedzonym jednym tabulatorem. Trochę rozwlekłe formatowe, ale zapewniające dużą czytelność gramatyki. Screenshot z wejścia Yacca formatowanego za pomocą przedstawionej konwencji:

zrzut_ekranu-8

Bill Gates – Film dokumentalny

Film dokumentalny o współtwórcy i kluczowej postaci Microsoftu, firmy której nikomu nie trzeba przedstawiać. Choć jest w nim drobne potknięcie tłumacza/lektora, mówiące  o “Wyszukiwarce internetowej” zamiast o “Przeglądarce internetowej”.

Czytaj dalej ‘Bill Gates – Film dokumentalny’

Kompilatory – reguły, metody i narzędzia

Muszę się pochwalić,  że dnia wczorajszego stałem się posiadaczem tej książki autorstwa Aho Alfred V., Sethi Ravi, Ullman Jeffrey D. wchodzącej w skład serii “Klasyka Informatyki”. Kupiłem ją za jedyne 90 złotych na allegro, za defekt w postaci braku okładki, zapłaciłem ok 60 złotych mniej w porównaniu do ceny rynkowej. Ale wiedza w niej zawarta (poniekąd poszukiwana przezemnie),  jest warta swojej ceny :)

Dla nieznających tego tytułu, powiem że tematem książki jest pisanie kompilatorów, tworzenie własnych języków programowania oraz sprawy z tym związane.