Kompilator prostego języka imperatywnego napisany na potrzeby kursu "Języki Formalne i Techniki Translacji". Język, asembler oraz maszyna wirtualna są autorstwa dr Macieja Gębali. Specyfikacja języka oraz asemblera znajdują się w pliku labor4.pdf
.
Kompilator wykorzystuje następujące technologie:
- GNU Make 4.1
- Flex 2.6.4
- Bison 3.0.4
- g++ 7.4.0
Został on napisany w języku C++
w standardzie C++17
.
Program należy skompilować przy pomocy polecenia make
.
Aby poprawnie uruchomić program należy użyć polecenia:
./kompilator <nazwa_pliku_wejściowego.imp> <nazwa_pliku_wynikowego.mr>
code.cpp
icode.hpp
- klasa generująca kod w asemblerzedata.cpp
idata.hpp
- klasa służąca do zarządzania tablicą symbolisymbol.hpp
- definicja struktury przechowującej symbollabels.hpp
- definicje etykiet dla instrukcji warunkowych i pętlilexer.l
- lekser języka wejściowegoparser.ypp
- parser języka wejściowegomakefile
- plik Makefile do kompilacji