This is an old revision of the document!
Se da limbajul ATM, descris mai jos. Scrieti un program care parcurge limbajul, afiseaza AST-ul, il executa, il transforma intr-un limbaj de asamblare dat si executa limbajul de asamblare.
Numele fisierului vostru va fi atm si va avea parametrii de forma:
$ ./atm nume_fisier actiune actiune: ast - afiseaza AST-ul exe_ast - executa limbajul pe baza AST-ului asm - afiseaza limbajul de asamblare exe_asm - executa limbajul de asamblare primit in nume_fisier
type nume type poate fi integer, string sau float
type nume(lungime) type poate fi integer, string sau float lungimea este o constanta
write expresie in variabila
function nume_functie parametru1@tip continuare_nume_functie parametru2@tip conitnuare_nume_functie parametru3@tip ... returns tip start ... ... ... return (daca e cazul) stop
Tipurile de intoarcere sunt oricare din cele trei tipuri de variabile sau nothing daca nu intoarce nimic.
La return, functia se opreste imediat
Exemple:
function gotox x@integer andy y@integer andWrite text@string andNewFile nl@integer returns nothing start
print text if nl = 0 start print '\n' stop
end
print expresie
# Scrieti un parser si afisati AST-ul. Forma AST-ului este decizia voastra, insa va trebui sa ii descrieti fiecare nod in fisierul README.txt. (10 p) # Executati AST-ul (10 p) # Afisati limbajul in asamblare (10 p) # Executati limabjul de asamblare (10 p)
== Des