{"id":16155,"date":"2022-07-16T18:59:32","date_gmt":"2022-07-16T18:59:32","guid":{"rendered":"https:\/\/blogs.ugto.mx\/rea\/?p=16155"},"modified":"2022-09-24T02:49:47","modified_gmt":"2022-09-24T02:49:47","slug":"clase-digital-2-herramientas-de-software-lex-flex","status":"publish","type":"post","link":"https:\/\/blogs.ugto.mx\/rea\/clase-digital-2-herramientas-de-software-lex-flex\/","title":{"rendered":"Clase digital 2. Herramientas de software: Lex\/Flex"},"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-17950\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392.jpg\" style=\"object-position:58% 62%\" data-object-fit=\"cover\" data-object-position=\"58% 62%\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"853\" class=\"wp-block-cover__image-background wp-image-17950\" alt=\"\" src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392.jpg\" style=\"object-position:58% 62%\" data-object-fit=\"cover\" data-object-position=\"58% 62%\" srcset=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392.jpg 1280w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392-300x200.jpg 300w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392-1024x682.jpg 1024w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392-768x512.jpg 768w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/08\/933392-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\">Herramientas de software: Lex\/Flex<\/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 amable estudiante!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Me siento muy feliz de encontrarte en esta segunda sesi\u00f3n, ya ver\u00e1s que lo que aprendas de ella ser\u00e1 muy ben\u00e9fico para tu formaci\u00f3n acad\u00e9mica, es por ello que te invito a conocerla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta sesi\u00f3n veremos c\u00f3mo se usan las herramientas de desarrollo de compiladores llamadas Lex y flex, as\u00ed como tambi\u00e9n las razones que propiciaron su desarrollo y su historia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dada la complejidad de los compiladores, el dise\u00f1o de compiladores debe apoyarse en el uso de herramientas como son los compiladores de compiladores. Estos son en realidad herramientas de generaci\u00f3n de c\u00f3digo para dise\u00f1ar analizadores l\u00e9xicos y sint\u00e1cticos. Las ventajas de usar esas herramientas son: ayudan a reducir el tiempo, el costo de desarrollo y el n\u00famero de errores o bugs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las herramientas Lex y flex son importantes para el desarrollo de analizadores l\u00e9xicos en los compiladores y en aplicaciones de procesamiento de texto. Por lo tanto, el dominio de estas herramientas permite a los ingenieros de software desarrollar tambi\u00e9n otras aplicaciones tales como procesadores de texto. Por ejemplo, las herramientas Lex y flex tambi\u00e9n se pueden utilizar para implementar herramientas tales como los preprocesadores, formateadores de c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo del analizador l\u00e9xico generado por las herramientas Lex y flex se puede integrar con el c\u00f3digo generado por otras herramientas tales como Yacc y Bison.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El an\u00e1lisis l\u00e9xico se basa en el concepto de expresi\u00f3n regular que fue propuesto originalmente para describir lenguajes regulares. El conocimiento sobre las expresiones regulares tambi\u00e9n puede aplicarse en otras aplicaciones como los editores de texto, editores de c\u00f3digo y en la b\u00fasqueda y modificaci\u00f3n de texto. El conocimiento sobre las expresiones regulares tiene tambi\u00e9n aplicaci\u00f3n en el \u00e1rea de teor\u00eda de los lenguajes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Empecemos con mucho \u00e1nimo!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"desarrollo-del-tema\">Desarrollo del tema <\/h2>\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-306\" class=\"h5p-iframe\" data-content-id=\"306\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Herramientas de software: Lex\/Flex.\"><\/iframe><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un compilador es muy complejo y grande (puede tener m\u00e1s de un mill\u00f3n de l\u00edneas de c\u00f3digo), y su desarrollo puede ser muy pesado, costoso y propenso a errores o bugs. Por lo tanto, el dise\u00f1o de compiladores debe apoyarse en el uso de herramientas como son los compiladores de compiladores. Lex y flex son dos herramientas que pueden generar autom\u00e1ticamente un analizador l\u00e9xico.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El formato para especificar el analizador l\u00e9xico consta de tres secciones: secci\u00f3n de definiciones, secci\u00f3n de reglas y secci\u00f3n de c\u00f3digo de usuario.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La secci\u00f3n de definiciones puede incluir c\u00f3digo en C que sea necesario para el an\u00e1lisis l\u00e9xico entre los s\u00edmbolos %{ y %}. Adem\u00e1s, puede incluir definiciones de patrones para usarse en las reglas y tambi\u00e9n puede incluir directivas de Lex\/flex.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La secci\u00f3n de reglas contiene las reglas para la detecci\u00f3n de tokens. Cada regla consta de un patr\u00f3n (expresi\u00f3n regular) y una acci\u00f3n (C\u00f3digo en C). Una acci\u00f3n puede incluir instrucciones return para retornar el token detectado y que \u00e9ste sea recibido por analizador sint\u00e1ctico. Las acciones pueden omitirse, por ejemplo, cuando se detectan comentarios o espacios en blanco que no constituyen ning\u00fan token.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La secci\u00f3n de c\u00f3digo de usuario puede incluir c\u00f3digo en C que sea necesario para el an\u00e1lisis l\u00e9xico. Cuando se est\u00e1 implementando una aplicaci\u00f3n independiente, esta secci\u00f3n debe incluir una funci\u00f3n main. La funci\u00f3n main debe de encargarse de abrir el archivo de entrada, inicializar la variable yyin y llamar a la funci\u00f3n yylex().<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Has llegado al final de la segunda clase. \u00a1Vas muy bien, te felicito! Recuerda hacer y mandar la tarea correspondiente a esta lecci\u00f3n. Sigue avanzando como hasta ahora, te encuentro en la siguiente clase, hasta luego.<\/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:\/\/epaperpress.com\/lexandyacc\/download\/flex.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lexical Analysis with Flex, pp. 3-44.<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n \u00a1Hola amable estudiante! Me siento muy feliz de encontrarte en esta segunda sesi\u00f3n, ya ver\u00e1s que lo que aprendas de ella ser\u00e1 muy ben\u00e9fico para tu formaci\u00f3n acad\u00e9mica, es por ello que te invito a conocerla. En esta sesi\u00f3n veremos c\u00f3mo se usan las herramientas de desarrollo de compiladores llamadas Lex y flex, as\u00ed &#8230; <a title=\"Clase digital 2. Herramientas de software: Lex\/Flex\" class=\"read-more\" href=\"https:\/\/blogs.ugto.mx\/rea\/clase-digital-2-herramientas-de-software-lex-flex\/\" aria-label=\"Leer m\u00e1s sobre Clase digital 2. Herramientas de software: Lex\/Flex\">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-16155","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\/16155","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=16155"}],"version-history":[{"count":3,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/16155\/revisions"}],"predecessor-version":[{"id":19155,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/16155\/revisions\/19155"}],"wp:attachment":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/media?parent=16155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/categories?post=16155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/tags?post=16155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}