11.07.2015 Views

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1. Percorrer a cadeia, a partir da esquerda até que o primeiro • > seja encontrado.2. Percorrer, então, de volta (para a esquerda) por sobre quaisquer relações (=) atéque < • seja encontrado.3. O handle contém tudo à esquerda do primeiro • > e à direita do < •, incluindoquaisquer não-terminais presentes.No exemplo acima, o primeiro handle é dado pelo primeiro id encontrado que podeser reduzido para o não-terminal E (segundo a gramática vista), seguido pelos próximosdois ids da sentença. A seguir, a sentença obtida ficaria $ E + E * E $; removendo-se osnão-terminais e acrescentando-se as relações de precedência temos: $ < • + < • ∗ • > $,indicando que a próxima redução deve ser realizada sobre o operador “*” (e seus respectivosoperandos associados “E* E”).Devido ao fato da sua implementação não ser trivial, a solução de implementação maisviável para este tipo de gramática é fazer uso de um gerador de analisadores sintáticos,como o YACC ou BISON.4.4.3 Projeto de uma Gramática para um Analisador SintáticoPreditivo DescendenteConsiderando o uso de analisadores sintáticos descendentes preditivo algumas preocupaçõesquanto a gramática a ser utilizada, devem ser tomadas: eliminar ambigüidade, eliminaras recursões à esquerda e fatorar à esquerda a gramática.Analisando um Programa SimplesA seguir, é apresentado um exemplo de um programa simples na linguagem P ASCAL jr :var: float N1, N2, M; int Ct;const: int Qtde = 10;func float _Media(float a,float b)float media;{media = (a+b)/2.0;return media;}main( ) {Ct = 0;do {print("Digite duas notas:");scanf(N1,N2);printl("Media = ",_Media(N1,N2));Ct ++;} while(Ct != Qtde);}Todo programa em P ASCAL jrrespeita a seguinte estrutura:31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!