10. kodutöö: AKTK interpretaator
Olles kirjutanud grammatika ja loonud AST-i, oleme lõpuks jõudnud nii kaugele, et saame hakata käivitama AKTK programme! Hetkel piirdume interpreteerimisega, milleks on vaja implementeerida järgnev klass:
package week10; public class AktkInterpreter { public static void run(String program) { // TODO: käivita antud AKTK kood } }
Kodutöö mall on avalikus repos. Etteantud on abiklass week10.AktkInterpreterBuiltins
, mis sisaldab AKTK "standardteeki", st. neid funktsioone, mis on kõigile AKTK programmidele alati kättesaadavad.
Vihjed
- Muutujatega töötamiseks peaks kasutama nimeruume.
- Kuigi AKTK programmides võib (aga ei pruugi!) esineda muutujate jms tüüpe, võib neid hetkel ignoreerida ja alati lähtuda väärtuste endi tüüpidest.
AktkInterpreterBuiltins
kasutamiseks: https://docs.oracle.com/javase/tutorial/reflect/- Kui jääd hätta AKTK funktsioonide
return
-lausete implementeerimisega, siis ühe võimalusena uuri, kuidas toimub funktsioonist väärtuse väljaandmine Pascalis.