{"id":1025,"date":"2020-07-28T10:56:14","date_gmt":"2020-07-28T13:56:14","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=1025"},"modified":"2020-07-28T10:56:17","modified_gmt":"2020-07-28T13:56:17","slug":"compiladores-4","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/compiladores-4\/","title":{"rendered":"Compiladores #4"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>An\u00e1lise Sem\u00e2ntica<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A fase de an\u00e1lise sem\u00e2ntica verifica os erros sem\u00e2nticos no programa fonte e captura as informa\u00e7\u00f5es de tipo para a fase subsequente de gera\u00e7\u00e3o de c\u00f3digo. Utiliza a estrutura hier\u00e1rquica determinada pela fase de an\u00e1lise sint\u00e1tica, a fim de identificar os operadores e operandos das express\u00f5es e enunciados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um importante componente da an\u00e1lise sem\u00e2ntica \u00e9 a verifica\u00e7\u00e3o de tipos. Nela o compilador checa se cada operador recebe os operandos que s\u00e3o permitidos pela especifica\u00e7\u00e3o da linguagem fonte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, muitas defini\u00e7\u00f5es nas linguagens de programa\u00e7\u00e3o requerem que o compilador relate um erro a cada vez que um n\u00famero real seja usado para indexar um array.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No entanto, a especifica\u00e7\u00e3o da linguagem pode permitir algumas coer\u00e7\u00f5es de operandos, como, por exemplo, quando um operando aritm\u00e9tico bin\u00e1rio \u00e9 aplicado a um inteiro e a um real. Nesse caso, o compilador pode precisar converter o inteiro para real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro da m\u00e1quina, um padr\u00e3o de bits representando um inteiro \u00e9 geralmente diferente do padr\u00e3o de bits para um real, mesmo que o n\u00famero inteiro e o n\u00famero real tenham o mesmo valor.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"183\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/07\/image-9.png\" alt=\"\" class=\"wp-image-1026\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/07\/image-9.png 567w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/07\/image-9-300x97.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Suponha, por exemplo, que todos os identificadores na Fig. 1.5 tenham sido declarados como reais e assuma que 60, por si s\u00f3, seja um inteiro. A verifica\u00e7\u00e3o de tipos da Fig. 1.5(a) revela que o * est\u00e1 aplicado a um real, <em>taxa_de_juros<\/em>, e a um inteiro, 60.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O enfoque geral \u00e9 o de converter inteiro em real. Isso foi conseguido na Fig. 1.5(b) pela cria\u00e7\u00e3o de um n\u00f3 extra para operador <strong>inttoreal<\/strong>, que converte explicitamente um inteiro num real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alternativamente, como o operando de inttoreal \u00e9 uma constante, o compilador pode, em lugar, substituir a constante inteira por uma constante real equivalente.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video_embed clearfix\"><div class=\"video_embed clearfix\"><iframe loading=\"lazy\" title=\"Compiladores: An\u00e1lise Sem\u00e2ntica\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/mH3wfz47BrE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Livro fonte:\u00a0<a href=\"https:\/\/github.com\/germanoa\/compiladores\/blob\/master\/doc\/ebook\/Compiladores%20Principios%2C%20Tecnicas%20e%20Ferramentas%20-%20Alfred%20V.%20Aho.pdf\">https:\/\/github.com\/germanoa\/compiladores\/blob\/master\/doc\/ebook\/Compiladores%20Principios%2C%20Tecnicas%20e%20Ferramentas%20-%20Alfred%20V.%20Aho.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An\u00e1lise Sem\u00e2ntica A fase de an\u00e1lise sem\u00e2ntica verifica os erros sem\u00e2nticos no programa fonte e captura as informa\u00e7\u00f5es de tipo para a fase subsequente de gera\u00e7\u00e3o de c\u00f3digo. Utiliza a estrutura hier\u00e1rquica determinada pela fase de an\u00e1lise sint\u00e1tica, a fim de identificar os operadores e operandos das express\u00f5es e enunciados. Um importante componente da an\u00e1lise [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":197,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44],"tags":[],"class_list":["post-1025","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-compiladores"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/1025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1025"}],"version-history":[{"count":1,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/1025\/revisions"}],"predecessor-version":[{"id":1027,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/1025\/revisions\/1027"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/197"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}