Drugi projekt na pracownię
Używając flexa i bisona napisać translator języka while-programów
(czyli języka z poprzedniego zadania), rozszerzonego jak niżej, na kod
trójadresowy, oraz narzędzia umożliwiające przeglądanie i uruchamianie
programów w tym kodzie. Do uruchamiania może służyć własny interpreter
kodu trójadresowego lub translator na inny kod wykonywalny, np java
bytecode, MSIL lub język odpowiednio rozszerzonej maszyny stosowej z
poprzedniego zadania. Język powinien obejmować
- strukturę blokową,
- procedury bezparametrowe,
- różne typy proste (co najmniej int, float, char, bool),
- wejście/wyjście dla różnych typów prostych,
- i bibliotekę matematyczną dla float (sqrt, sin, cos,...)
oraz dodatkowo jeden z trzech nastepujących elementów
- rekordy, tablice i napisy, standardowe operacje na napisach,
- rekordy i wskaźniki, zarządzanie składem,
- lub funkcje rekurencyjne z parametrami przekazywanymi przez wartość.
Dopuszczalna jest praca w zespołach dwuosobowych, ale wtedy
dostarczony kompilator powinien implementować wszystkie trzy dodatkowe
elementy.
Termin wykonania zadania: koniec semestru, czyli 26.01.2003
Przed świętami, czyli 22 grudnia, chciałbym zobaczyć specyfikację języka.