{"id":16175,"date":"2022-07-16T19:05:21","date_gmt":"2022-07-16T19:05:21","guid":{"rendered":"https:\/\/blogs.ugto.mx\/rea\/?p=16175"},"modified":"2022-09-24T03:00:18","modified_gmt":"2022-09-24T03:00:18","slug":"clase-digital-12-analisis-semantico-y-estrategias-de-implementacion","status":"publish","type":"post","link":"https:\/\/blogs.ugto.mx\/rea\/clase-digital-12-analisis-semantico-y-estrategias-de-implementacion\/","title":{"rendered":"Clase digital 12. An\u00e1lisis sem\u00e1ntico y estrategias de implementaci\u00f3n"},"content":{"rendered":"\n\n\n<div class=\"wp-block-cover\" style=\"min-height:284px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-40 has-background-dim\"><\/span><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-18172\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877.jpg\" style=\"object-position:36% 65%\" data-object-fit=\"cover\" data-object-position=\"36% 65%\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"853\" class=\"wp-block-cover__image-background wp-image-18172\" alt=\"\" src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877.jpg\" style=\"object-position:36% 65%\" data-object-fit=\"cover\" data-object-position=\"36% 65%\" srcset=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877.jpg 1280w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877-300x200.jpg 300w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877-1024x682.jpg 1024w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877-768x512.jpg 768w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/1839877-272x182.jpg 272w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/noscript><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-base-3-color has-text-color has-large-font-size wp-block-paragraph\">An\u00e1lisis sem\u00e1ntico y estrategias de implementaci\u00f3n<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"introduccion\">Introducci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Hola!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es todo un privilegio contar con tu asistencia en esta nueva sesi\u00f3n, es muy seguro que la vas a disfrutar y aprender\u00e1s mucho, es por ello que te invito a iniciar la clase doce del curso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;En esta sesi\u00f3n aprenderemos sobre&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin m\u00e1s detalles, estamos listos para iniciar el estudio de este emocionante tema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Adelante! \u00a1Comencemos!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"desarrollo-del-tema\">Desarrollo del tema <\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">An\u00e1lisis Sem\u00e1ntico:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El an\u00e1lisis sem\u00e1ntico es la fase que se encarga de validar el c\u00f3digo fuente<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s de que el c\u00f3digo debe ser sint\u00e1cticamente correcto, debe ser coherente con su contexto<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Por ejemplo:<ul><li>La suma s\u00f3lo se puede efectuar entre datos que son num\u00e9ricos.<\/li><li>Una variable debe ser declarada antes de usarse.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La tarea principal del an\u00e1lisis sem\u00e1ntico es la inferencia y la verificaci\u00f3n de tipos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tabla de s\u00edmbolos:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">La tabla de s\u00edmbolos es una estructura de datos creada y mantenida por un compilador para almacenar informaci\u00f3n sobre:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>variables,&nbsp;<\/li><li>constantes,&nbsp;<\/li><li>funciones,&nbsp;<\/li><li>objetos,&nbsp;<\/li><li>clases,&nbsp;<\/li><li>interfaces, etc.<\/li><\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">Usos de la tabla de s\u00edmbolos:<\/h5>\n\n\n\n<ul class=\"wp-block-list\"><li>Almacenar todos los nombres de entidades de forma estructurada en un solo lugar.<\/li><li>Verificar si una variable o funci\u00f3n ya ha sido declarada.<\/li><li>Implementar el chequeo de tipos.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Determinar el \u00e1mbito de un nombre (resoluci\u00f3n de \u00e1mbito).<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u00c1mbitos y Tabla de S\u00edmbolos:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">scope = \u00e1mbito<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada \u00e1mbito puede tener sus propias variables locales.<br>La tabla de s\u00edmbolos se puede implementar con un arreglo, una lista o tabla de hash.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los \u00e1mbitos se pueden gestionar usando un stack o un \u00e1rbol de tablas de s\u00edmbolos.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Inferencia de Tipos:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Los tipos b\u00e1sicos son:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>boolean, char, integer, float y void.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Una expresi\u00f3n de tipo es:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Un nombre de tipo.<\/li><li>Constructor array con un n\u00famero y una expresi\u00f3n de tipo.<\/li><li>Constructor record con los nombres de los campos y sus tipos.<\/li><li>Constructor de funci\u00f3n \u2192<ul><li>Si s y t son expresiones de tipo, entonces su producto Cartesiano s\u00d7<em>t <\/em>es una expresi\u00f3n de tipo.<\/li><\/ul><\/li><li>Una variable cuyo valor es una expresi\u00f3n de tipo.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplos:<br>int[2][3]<br>array(2,array(3,integer))<br>record(x, float, y, int)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Determinar tipos, nombres y tama\u00f1os de variables.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/Captura-de-Pantalla-2022-08-17-a-las-14.55.50-1024x35.png\" alt=\"\" class=\"wp-image-18169\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"35\" src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/Captura-de-Pantalla-2022-08-17-a-las-14.55.50-1024x35.png\" alt=\"\" class=\"wp-image-18169\" srcset=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/Captura-de-Pantalla-2022-08-17-a-las-14.55.50-1024x35.png 1024w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/Captura-de-Pantalla-2022-08-17-a-las-14.55.50-300x10.png 300w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/Captura-de-Pantalla-2022-08-17-a-las-14.55.50-768x26.png 768w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/Captura-de-Pantalla-2022-08-17-a-las-14.55.50.png 1251w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">T representa un tipo escalar o arreglo.<br>B representa un tipo escalar.<br>C representa un tipo arreglo o no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El tipo se determina por propagaci\u00f3n (o herencia) de atributos.<br>Es decir, B recibe atributos type y width, t almacena tipo y w almacena el tama\u00f1o de B,<br>luego C toma atributos t y w, y T recibe atributos de C.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Propagaci\u00f3n de atributos:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Registros, Estructuras y Clases.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los registros, estructuras y clases tienen su propio \u00e1mbito de variables.<br>Se crea un nuevo \u00e1mbito con su tabla de s\u00edmbolos local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las tablas de s\u00edmbolos pueden implementarse usando listas, \u00e1rboles de b\u00fasqueda binaria o tablas de hash.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los \u00e1mbitos de variables pueden implementarse usando un stack de tablas de s\u00edmbolos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un atributo sintetizado es aqu\u00e9l cuyo valor depende de los atributos de los nodos hijo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los atributos que no son sintetizados son llamados heredados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El analizador LR es adecuado para calcular los atributos sintetizados durante el an\u00e1lisis sint\u00e1ctico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En Yacc y Bison, la notaci\u00f3n para asignar un atributo a un nodo es $$ = valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La notaci\u00f3n para leer el valor del atributo del <em>k<\/em>-\u00e9simo s\u00edmbolo de una producci\u00f3n es $<em>k<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para recordar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con esto terminamos la clase y como puedes notar has aprendido mucho durante el trayecto del curso \u00a1Muchas felicidades! Te invito a repasar los temas y conceptos revisados y la realizaci\u00f3n de las consignas para que se pueda alcanzar el aprendizaje esperado en esta clase. Recuerda buscar a tu asesor en caso de dudas. Te encuentro en tu pr\u00f3xima sesi\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fuentes-de-informacion\">Fuentes de informaci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.youtube.com\/watch?v=qsf8cXzX708&amp;t=361s\" target=\"_blank\" rel=\"noreferrer noopener\">Compiladores &#8211; An\u00e1lisis Sem\u00e1ntico, 1:35 \u2013 42:55.<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n \u00a1Hola! Es todo un privilegio contar con tu asistencia en esta nueva sesi\u00f3n, es muy seguro que la vas a disfrutar y aprender\u00e1s mucho, es por ello que te invito a iniciar la clase doce del curso. &nbsp;En esta sesi\u00f3n aprenderemos sobre&nbsp; Sin m\u00e1s detalles, estamos listos para iniciar el estudio de este emocionante &#8230; <a title=\"Clase digital 12. An\u00e1lisis sem\u00e1ntico y estrategias de implementaci\u00f3n\" class=\"read-more\" href=\"https:\/\/blogs.ugto.mx\/rea\/clase-digital-12-analisis-semantico-y-estrategias-de-implementacion\/\" aria-label=\"Leer m\u00e1s sobre Clase digital 12. An\u00e1lisis sem\u00e1ntico y estrategias de implementaci\u00f3n\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":142,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","footnotes":""},"categories":[180,19,471],"tags":[41,472,473],"class_list":["post-16175","post","type-post","status-publish","format-standard","hentry","category-cideap","category-ingenieria-en-sistemas-computacionales","category-uda-compiladores","tag-clase-digital","tag-iili06025","tag-jose-ruiz-pinales"],"acf":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/16175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/comments?post=16175"}],"version-history":[{"count":3,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/16175\/revisions"}],"predecessor-version":[{"id":19166,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/16175\/revisions\/19166"}],"wp:attachment":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/media?parent=16175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/categories?post=16175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/tags?post=16175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}