Napišite semantični evaluator za razpoznavalnik iz naloge 7.
Razpoznavalnik iz naloge 7 nadgradite v razčlenjevalnik, tako da sproti gradite abstraktno sintaktično drevo iz naloge 9.
Abstraktnemu sintaktičnemu drevesu dodajte metodo eval
, ki ga bo ovrednotila.
Program naj iz vhodne datoteke prebere izvorni program, ga razčleni, ovrednoti in rezultat izpiše v izhodno datoteko. Imeni datotek bo program dobil kot konzolna argumenta.
Rezultat naslednjega primera
var n = 10;
var factorial = 1;
for (var i = 1, n - 1) {
factorial = factorial * i;
}
print(factorial);
naj bo enak:
362880.0
Nalogo oddajte na GitHub, link.