Apostila antiga - The Cyan Programming Language
Apostila antiga - The Cyan Programming Language
Apostila antiga - The Cyan Programming Language
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
CHAPTER 4. GERAÇÃO DE CÓDIGO 42<br />
case expr of<br />
V1:<br />
S1;<br />
V2:<br />
S2;<br />
...<br />
Vn:<br />
Sn;<br />
default:<br />
Sd<br />
end { case }<br />
onde expr é uma expressão inteira, V1, V2, ... Vn são constantes literais inteiras e cada Si é uma<br />
instrução ou uma seqüência de instruções entre begin e end.<br />
Uma das maneiras de gerar código para este comando é fazer todas as comparações de expr com<br />
os Vi no fim da tradução, como é feito a seguir.<br />
L1:<br />
L2:<br />
Ln:<br />
D:<br />
Calcule expr e coloque o resultado em t<br />
goto testeCase<br />
codigo para S1<br />
goto fim<br />
codigo para S2<br />
goto fim<br />
...<br />
codigo para Sn<br />
goto fim<br />
codigo para Sd<br />
goto fim<br />
testeCase:<br />
cmp t, V1<br />
goto== L1<br />
cmp t, V2<br />
goto== L2<br />
...<br />
cmp t, Vn<br />
goto== Vn<br />
goto D<br />
fim:<br />
Os testes poderiam ser colocados logo após o cálculo de expr eliminando a necessidade da instrução<br />
“goto testeCase”.<br />
Uma outra alternativa de geração de codigo é colocar os testes junto com a codificação de cada Si:<br />
L1: cmp t, V1<br />
goto L2