ObjectHTML
Wstęp - geneza, zastosowania |
Obecna wersja kompilatora została stworzona pod system Linux. Wszystkie testy i kompilacje były wykonywane pod dystrybucją Linuxa firmy RedHat ( http://www.redhat.com/) w wersji 7.Do skompilowania programu będą potrzebne standardowe narzędzia i biblioteki dostępne pod systemem Linux. Są to: flex - generator analizatora leksykalnegobison - generator analizatora składniowegogcc - kompilator języka C++g++ lib - implementacja biblioteki STL (http://www.sgi.com/Technology/STL/)Dokumentacja to tych narzędzi jest dostępna w postaci stron "man" pod systemem Linux. Dodatkowe informacje można znaleźć na stronie: http://www.gnu.org/.Kompilator może współpracować z dwiema relacyjnymi bazami danych: mySQL ( http://www.mysql.org/), postgres (http://www.postgresql.org/). W systemie muszą być zainstalowane pliki nagłówkowe wymienionych baz danych aby skompilować program z ich obsługą.
Najważniejszą strukturą danych kompilatora jest drzewo programu [1]. W tej implementacji jest ono automatycznie tworzone przez analizator składniowy, plik z gramatyką i instrukcjami tworzenia węzłów to: ohtml.y. Analizator składniowy na wejściu pobiera gotowe leksemy, np.: napis, identyfikator, słowo kluczowe. Są one rozpoznawane przez analizator leksykalny. Plik z definicjami leksemów to ohtml.l. W ten sposób po dwóch etapach kompilacji: analizie leksykalnej i składniowej [2], zbudowane jest drzewo programu OHTML. Kolejnymi etapami kompilacji są: analiza semantyczna i generowanie kodu [2], w przypadku kompilatora OHTML tworzenie plików zawierających kod HTML. Ze względu na specyfikę języka OHTML ostatnie dwa etapy kompilacji są połączone. W języku tym występują konstrukcje pozwalające sparametryzować dostęp do atrybutów i metod, innymi słowy nazwy atrybutów i wywoływanych metod mogą być dostępne dopiero w trakcie wykonywania instrukcji OHTML. Dodatkowo język pozwala na użycie obiektu lub klasy przed jej definicją. Jest to duże ułatwienie dla użytkownika, ale komplikuje analizę semantyczną i generowanie kodu. |