This is an old revision of the document!


Tema Restanta

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

Limbajul ATM

Variabile

type nume

type poate fi integer, string sau float

Siruri (bonus 5p)

type nume(lungime)

type poate fi integer, string sau float
lungimea este o constanta

Atribuire

write expresie in variabila

Declararea functiilor

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

Afisarea pe ecran

print expresie

Apelarea functiilor

Aplelarea unei functii se face cu run

run nume_functie parametru1 continuare_nume_functie parametru2 ...

Daca apare intr-o expresie o functie (poate fi doar o functie care intoarce ceva, ea apare intre {}

write 10+{run ...} in variabila

If

if expresie_logica start
else
stop

Intra in if daca expresia este != 0 si in else daca expresia este 0

Else poate sa liplseasca. If-urile se pot imbrica.

Expresii

+, -, /, * si % paranteze () ! - not (daca e !=0, ! intoarce 0, si invers) (!4 = 0, !0 = 1) & - si

Afisarea pe ecran

print expresie

Cerinta

* 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)

Limbajul ASM

so-etti/teme/tema_restanta.1405493816.txt.gz ยท Last modified: 2014/07/16 09:56 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0