ReviewEssays.com - Term Papers, Book Reports, Research Papers and College Essays
Search

Implementation of Macroprocessors Using Java

Essay by   •  February 19, 2011  •  Research Paper  •  1,213 Words (5 Pages)  •  1,365 Views

Essay Preview: Implementation of Macroprocessors Using Java

Report this essay
Page 1 of 5

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 java.lang.*;

public class Main {

public static String ulaz;

public static String readLine(int brLinije) {

String line="";

try {

BufferedReader fajl = new BufferedReader(new FileReader(ulaz));

for (int i=1; i<brLinije; i++)

fajl.readLine();

line=fajl.readLine();}

catch(java.io.FileNotFoundException izuzetak) {}

catch(java.io.IOException izuzetak) {}

return line;}

public static boolean jePrototip(String[] s1,String s2){

int p=0;

boolean b=false;// s2 nije u s1

while(s1[p]!=null)

{if (s1[p++].equals(s2)) b=true;}

return b;}

public static int pronadji(Vector v,String opcode) {

String [] reci;

String linija;

int vr=-1;

for(int i=0;i<v.size();i++){

linija=(String)v.get(i);

reci=linija.split(" ");

if( reci[0].equals(opcode)) {vr=i+1; break;} }

if(vr==-1) System.out.println("neuspesna pretraga po TMDu!");

...

...

Download as:   txt (15.7 Kb)   pdf (218.5 Kb)   docx (17.5 Kb)  
Continue for 4 more pages »
Only available on ReviewEssays.com