Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Cieˆncias Exatas e Tecnologias Bacharelado em Sistemas de Informac¸a˜o Paradigmas em Linguagens de Programac¸a˜o Lista de Exerc´ıcios 2 Prof. M.Sc. Rodrigo Porf´ırio da Silva Sacchi 1. Baseado na grama´tica abaixo, escreva sua grama´tica de atributos. < programa > → begin < listastmt > end < listastmt > → < stmt > | < stmt > ; < listastmt > < stmt > → < var > := < expr > < expr > → < var > + < var > | < var > - < var > | < var > < var > → A | B | C 2. Identifique os lexemas que compo˜em os tokens nos programas seguintes. Deˆ os valores de atributo razoa´veis para esses tokens. a) Pascal function max(i, j: integer): integer; { retorna o maior dos inteiros entre i e j. } begin if i > j then max := i else max := j end; b) C int max(i, j) int i, j; /* retorna o maior dos inteiros entre i e j. */ { 1 return i > j ? i : j; } c) Fortran 77 FUNCTION MAX(I, J) C RETORNA O MAIOR DOS INTEIROS ENTRE I E J. IF(I .GT. J) THEN MAX = I ELSE MAX = J ENDIF RETURN 3. Expecifique a forma le´xica das constantes nume´ricas usadas na lingua- gem C. 4. Expecifique a forma le´xica dos identificadores usados na linguagem C. 5. Desenhe os diagramas de estado para constantes nu´mericas e identifi- cadores em C. 6. Desenhe os diagramas de estado para as seguintes palavras reservadas em C: a) while b) public c) static 7. Desenhe, um diagrama de estado para nu´meros inteiros e nu´meros em ponto flutuante em C. 8. Descreva a grama´tica de atributos para a seguinte BNF, que gera ex- presso˜es formadas pela aplicac¸a˜o do operador aritme´tico + a constantes inteiras e reais. Quando dois inteiros sa˜o adicionados, o tipo resultante e´ inteiro; em caso contra´rio e´ real. < expr > → < expr > + < term > | < term > < term > → num.num | num 2 9. Descreva a grama´tica de atributos para a BNF a seguir, que gera de- clarac¸o˜es para um u´nico identificador: < cmd > → declare id < lista de opcoes > < lista de opcoes > → < lista de opcoes > < opcao > | � < opcao > → < modo > | < escala > | < precisao > | < base > < modo > → real | complex < escala > → fixed | floating < precisao > → single | double < base > → binary | decimal 10. Dada a grama´tica BNF a seguir: < decl > → < tipo > < var − lista > < tipo > → int | float < var − lista > → id, < var − lista > | id a) Fatore essa grama´tica a` esquerda. b) Verifique se a sentenc¸a int x, y, z e´ reconhecida por essa grama´tica mostrando as ac¸o˜es de derivac¸a˜o mais a` esquerda. 11. Dada a grama´tica EBNF a seguir: < expr > → < termo > { < soma > < termo > } < soma > → + | – < termo > → < fator > { < mult > < fator > } < mult > → * < fator > → num | ( < expr > ) onde { e } representam repetic¸a˜o, fac¸a: a) Fatore essa grama´tica a` esquerda, se necessa´rio. b) Escreva pseudoco´digos para os na˜o-terminais dessa grama´tica. 12. Considere a grama´tica a seguir: < lexp > → < atomo > | < lista > < atomo > → num | id < lista > → ( < lexp− seq > ) < lexp− seq > → < lexp > , < lexp− seq > | < lexp > 3 a) Fatore essa grama´tica a` esquerda. b) Verifique se a sentenc¸a (a, (b, (2)), (c)) e´ reconhecida por essa gra- ma´tica mostrando as ac¸o˜es de derivac¸a˜o mais a` esquerda. c) Escreva pseudoco´digos para os na˜o-terminais dessa grama´tica. 4
Compartilhar