«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Re: Do while... da li je iko uspeo?

by Igor Stojkovic
četvrtak, 01. jun 2006 - 00:27.

On 5/31/06, Milan Aleksic <milanaleksic@gmail.com> wrote:
...
ali nikako ne mogu da postignem da mi byacc prodje kroz:
control : DO
instructions
WHILE uslovni_segment _TACKAZAREZ

prijavljuje jedan Shift-Reduce konflikt. Sta god da napisem u do-while dize
mi broj konflikata na 1 SR + 11 nikad koriscenih smena.

Ako uklonim do..while radi mi bez problema... (bez konflikata)

Slican sam problem imao kod if-then-else i if-then ali sam uspeo da ga resim
preko odvajanja pocekta if..then ali za ovo nemam resenja. Problem je sto
nakon ubacivanja akcija ne moze da razlikuje nikako smene...


Ja sam taj problem resio tako sto sam ubacio sledece smene:

dokey : DO { Akcija }
docontrol : dokey statements whilehead ';'
{ Akcija }
docontrol : dokey greska whilehead ';' {Akcija}

Isto sam uradio i sa while key i radi dobro.

Petlje nisam bas uradio onako kako si napisao.
Evo jos i sta dobijam za sledeci kod (const z=5, e=2; var boolean b):

if(z<e && b || b && b) b = true;
else{
c.x[0] = staticFunction(c.x[1], c.x[2]);
b = false;
}
endif

while(z < e)
b = true;
endwhile

//Pocinje if uslov
84: const_5
85: const_2
86: jge 13 (=99)
89: getstatic 0
92: const_1
93: jne 6 (=99)
96: jmp 17 (=113)
99: getstatic 0
102: const_1
103: jne 14 (=117)
106: getstatic 0
109: const_1
110: jne 7 (=117)

//b=true jo uvek nije implementirano
113: const_1
114: jmp 21 (=135)

//Else deo jos uvek nije implementirano do kraja
117: const_0
118: getstatic 3
121: const_1
122: getstatic 3
125: aload
126: const_2
127: getstatic 3
130: aload
131: call -122 (=9)
134: const_0

//Ovde pocinje uslov while petlje
135: const_5
136: const_2
137: jlt 6 (=143)
140: jmp 7 (=147)

//Telo while petlje
143: const_1
144: jmp -9 (=135)

/Kraj
147: return


--
Best regards,
Igor Stojkovic mailto: stojkovic.igor@gmail.com