Implementation of Macroprocessors Using Java
By: Mikki • Study Guide • 1,213 Words • January 22, 2010 • 1,013 Views
Join now to read essay Implementation of Macroprocessors Using Java
SISTEMSKO PROGRAMIRANJE
Sadrzaj:
1. Opis problema
2. Opis resenja i uputstvo za pokretanje
3. Listing programa
4. Karakteristicni ulazi i dobijeni izlazi
1. OPIS PROBLEMA
Implementira se makroprocesor sa ugnezdavanjem makropoziva, po sledecem algoritmu:
d := false (* definition mode switch *)
e := 0 (* expansion-level counter *)
read line from input
while line != empty do
if d then (* in definition mode *)
case opcode of
prototype: prepare formal parameter list
'MCEND': d:=false
other: replace i-th formal parameter by ’#i’
write line to new macro definition
else (* in copy mode or expansion mode *)
case opcode of
prototype:
macro name: e:=e+1
prepare actual parameter list
push actual parameter list on actual parameter stack
'MCDEFN' : d:=true
allocate new macro definition
'MCEND': pop actual parameter list (level e) from actual parameter stack
e:= e-1
other: write line to output
if (e>0) (* in expansion mode *)
read line from old macro definition named in current macro call
replace ’#i’ by actual parameter list(i) from actual parameter stack
else read line from input
Na steku stvarnih parametara je potrebno cuvati i povratnu liniju odakle treba nastaviti citanje ulaza po zavrsetku ekspanzije ugnezdenog poziva (nije precizirano u algoritmu).
2. OPIS RESENJA I UPUTSTVO ZA POKRETANJE
Opis Resenja
Implementacija je radjena u Javi.
Od nestandardnih struktura podataka koriscena je struktura Element, koja predstavlja element na steku stvarnih parametara, broj linije odakle treba nastaviti citanje po zavrsetku ekspanzije ugnezdenog poziva.
Obradjene greske u ulazu:
• MCEND bez MCDEFN
• MCDEFN bez MCEND
• Ulaz ne pocinje sa MCDEFN
• Na mestu prototipa je rezervisana rec
• Makro nije definisan
• Neusaglasen broj parametara u pozivu i definiciji makroa
Po nailasku na gresku , informacija o njoj se ispisuje , i program se prekida!
Napomena: Postoji spisak instrukcija koje se prihvataju. On se nalazi u okviru funkcije jeRezervisanaRec. Ako ulazni fajl sadrzi neku instrukciju koja se ne nalazi u datom spisku smatra se da dati makro nije definisan.
Uputstvo za pokretanje
Duplim klikom na PrimerSaPredavanja.bat , pokrece se glavni program za tekstualni ulaz iz primera sa predavanja (Ulaz.txt).
Program se moze pokrenuti i iz komandne linije naredbom oblika:
java Main BiloKojiUlaz.txt
3. LISTING PROGRAMA
import java.io.*;
import java.util.*;
import