4) { while ($ads2 == $ads1) { $ads2 = rand(1, $slides); } } $ads3 = rand(1, $slides); if ($slides > 4) { while (($ads3 == $ads2) || ($ads3 == $ads1)) { $ads3 = rand(1, $slides); } } ?>
IPRJ CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO  
LISTA DE EXERCÍCIOS 04  
1
) Continue a implementação do analisador léxico desenvolvido na lista de exercícios 03,  
integrando-o com o analisador sintático apresentado em aula. Em seguida, acrescente  
as seguintes características à gramática reconhecida pelo analisador sintático:  
a) Dar suporte a expressões de atribuição. Exemplos:  
resultado = (soma + 87.2) / total  
str = "Conceitos de Linguagens de Programacao"  
charac = 'X'  
b) Suportar programas compostos por mais de uma expressão de atribuição  
(separadas por ponto e vírgula). Exemplo:  
a = 8 + 42.75;  
b = a * 0.8;  
s = "Resultado";  
c = (a b) / 2;  
c) Dar suporte a estruturas condicionais simples compostas pelos operadores  
relacionais básicos (>, >=, <, <= e ==) e blocos de inicio e fim (begin e end).  
Exemplo:  
if a > 5 then  
begin  
...  
end  
d) Exibir mensagens de erro adequadas quando o programa de entrada violar as  
regras da gramática.  
e) Apresente a gramática suportada pelo analisador sintático desenvolvido em  
notação BNF.