Re: Bool i stampanje stringova
Sto se tice bool promenljivih pretpostavite da se samo dodeljuju true i
false vrednosti npr:
bool fleg;
if(a<b)
fleg=true;
else
fleg=false;
Ako koristite "predkompjalirane" metode na primer za ispis stringova
najbolje je da odredite kako izgleda generisani mj bajtkod i onda u nekoj
inicijalizaciji prvo napunite code memoriju tim bajtkodom a onda nastavite
da prevodite ostale funkcije.
Drugo resenje je da probate da pomocu mj asembera napisete kod koji
implementira ispis stringova i to da ubacujete kada nadjete poziv metode
print(string). Cak vam i ne treba staticka promenljiva u kojoj cuvate
index karaktera koji treba prikazati. Ako vam treba index trenutnog
karaktera mozete ga drzati na expression steku.
Ne koristite dvoprolazni kompajlere/linkere to samo komplikuje resenje a
ne treba vam.
Pozdrav,
Jovan
> Prvo jedno bitno pitanje za asistenta:
> nigde u postavci ne pise da moramo da omogucimo nesto ovako:
>
> var bool a;
> begin
> a = (1<2);
> end;
>
> Pise samo samo da je bool tipa int i da ima vrednosti 0 i 1. Da li to
> znaci
> da ne moramo ili moramo da radimo prosledjivanje logickih izraza logickoj
> promenljivoj? Jer ako je tipa int to znaci da je moguca i konverzija iz
> int-a a i da obrade svih 6 logickih relacija moraju da se menjaju i da se
> prilagode ovome. Ima posla...
>
> ------------------
>
> OK, dve kolege su dale ideju za rad sa ispisom stringova pa evo i ja da
> dam
> svoj doprinos. Ja sam smislio sledeci fazon:
> ukoliko se na nekom mestu pojavi deklaracija char[] ili string moj
> kompajler
> automatski ubaci bajtkod koji se dobija kada se prevede:
>
> void prints(str : string) var int iter;
> {
> for iter = 0 to len(str)-1 do
> print(str[iter]);
> endfor
> }
>
> Nakon ubacivanja bajtkoda, naravno, generise se simbol tipa SFunction sa
> opisom ove funkcije sa adr na pocetkom koda funkcije.
>
> Bez obzira da li se takva neka deklaracija javlja za staticku ili lokalnu
> prom, ovaj kod ce se umetnuti na tom mestu potpuno bezbedno (jer, npr. dok
> se kupe deklaracije lokalnih prom. za funkciju generisanje njenog koda jos
> uvek nije pocelo).
>
> Potreban je two-pass komp (tj. nesto nalik linkeru) da bi se ovo umetanje
> izvrsilo kada se prepozna poziv same funkcije prints tako da sam smislio
> ovaj fazon. Ko hoce neka ga slobodno primeni... inace len samo radi
> load(array) + arraylength i to je to.
>
>
>
> --
> Milan Aleksić
> WebGrafit: http://galeb.etf.bg.ac.yu/~aleksicm/webgrafit.php
> email+jabber: milanaleksic@gmail.com
> web: http://drop.to/goblin
> ICQ: 53177884
>
false vrednosti npr:
bool fleg;
if(a<b)
fleg=true;
else
fleg=false;
Ako koristite "predkompjalirane" metode na primer za ispis stringova
najbolje je da odredite kako izgleda generisani mj bajtkod i onda u nekoj
inicijalizaciji prvo napunite code memoriju tim bajtkodom a onda nastavite
da prevodite ostale funkcije.
Drugo resenje je da probate da pomocu mj asembera napisete kod koji
implementira ispis stringova i to da ubacujete kada nadjete poziv metode
print(string). Cak vam i ne treba staticka promenljiva u kojoj cuvate
index karaktera koji treba prikazati. Ako vam treba index trenutnog
karaktera mozete ga drzati na expression steku.
Ne koristite dvoprolazni kompajlere/linkere to samo komplikuje resenje a
ne treba vam.
Pozdrav,
Jovan
> Prvo jedno bitno pitanje za asistenta:
> nigde u postavci ne pise da moramo da omogucimo nesto ovako:
>
> var bool a;
> begin
> a = (1<2);
> end;
>
> Pise samo samo da je bool tipa int i da ima vrednosti 0 i 1. Da li to
> znaci
> da ne moramo ili moramo da radimo prosledjivanje logickih izraza logickoj
> promenljivoj? Jer ako je tipa int to znaci da je moguca i konverzija iz
> int-a a i da obrade svih 6 logickih relacija moraju da se menjaju i da se
> prilagode ovome. Ima posla...
>
> ------------------
>
> OK, dve kolege su dale ideju za rad sa ispisom stringova pa evo i ja da
> dam
> svoj doprinos. Ja sam smislio sledeci fazon:
> ukoliko se na nekom mestu pojavi deklaracija char[] ili string moj
> kompajler
> automatski ubaci bajtkod koji se dobija kada se prevede:
>
> void prints(str : string) var int iter;
> {
> for iter = 0 to len(str)-1 do
> print(str[iter]);
> endfor
> }
>
> Nakon ubacivanja bajtkoda, naravno, generise se simbol tipa SFunction sa
> opisom ove funkcije sa adr na pocetkom koda funkcije.
>
> Bez obzira da li se takva neka deklaracija javlja za staticku ili lokalnu
> prom, ovaj kod ce se umetnuti na tom mestu potpuno bezbedno (jer, npr. dok
> se kupe deklaracije lokalnih prom. za funkciju generisanje njenog koda jos
> uvek nije pocelo).
>
> Potreban je two-pass komp (tj. nesto nalik linkeru) da bi se ovo umetanje
> izvrsilo kada se prepozna poziv same funkcije prints tako da sam smislio
> ovaj fazon. Ko hoce neka ga slobodno primeni... inace len samo radi
> load(array) + arraylength i to je to.
>
>
>
> --
> Milan Aleksić
> WebGrafit: http://galeb.etf.bg.ac.yu/~aleksicm/webgrafit.php
> email+jabber: milanaleksic@gmail.com
> web: http://drop.to/goblin
> ICQ: 53177884
>
- References:
- Bool i stampanje stringova
- From: "Milan Aleksic" <milanaleksic@gmail.com>
- Bool i stampanje stringova
Previous by date: Re: Nasledjivanje metoda
Next by date: Re: Pitanje o nizovima
Previous by thread: Bool i stampanje stringova Next by thread: Pitanje o nizovima
Previous by thread: Bool i stampanje stringova Next by thread: Pitanje o nizovima