<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>Generación de codigo intermedio  by JULIETA BECERRIL RUIZ</title>
      <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r</link>
      <description></description>
      <language>en-us</language>
      <pubDate>2025-09-25 23:14:52 UTC</pubDate>
      <lastBuildDate>2025-10-13 22:12:49 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title>Código intermedio</title>
         <author>enriquezyzangelica</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604717216</link>
         <description><![CDATA[<p>El <strong>código intermedio </strong>es una representación abstracta de un programa, que se encuentra entre el código fuente y el código máquina. Su función principal es actuar como un puente para facilitar la optimización, análisis y posterior generación código específico para distintas máquinas. Se genera durante la compilación en una forma que es independiente del hardware para mejorar la portabilidad. Un ejemplo común es el código de tres direcciones, donde cada instrucción contiene un operador y dos operandos, y produce un resultado temporal. Esta abstracción también puede ser conocida como bytecode y es empleado en muchas máquinas virtuales que interpretan o traducen dinámicamente el código intermedio a código máquina para su ejecución final.</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/1683429958/a54ba7d9b78917b9bbf4158c5b4e1bda/unidad_2_generaci_n_de_c_digo_intermedio_v0_16oihc73b8na1.webp" />
         <pubDate>2025-09-25 23:37:02 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604717216</guid>
      </item>
      <item>
         <title>Precedencia de Operadores</title>
         <author>l22590323</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604718960</link>
         <description><![CDATA[<p>La <strong>precedencia de operadores</strong> es un conjunto de reglas que define el orden en el que se deben evaluar los diferentes operadores (como +, -, <em>, /, ^) en una expresión que no tiene paréntesis. Estas reglas son esenciales para que una expresión ambigua como 3 + 5 </em> 2 tenga un único significado. En este caso, la multiplicación tiene una precedencia mayor que la suma, por lo que se evalúa primero (5 <em> 2), y luego el resultado se suma a 3, dando 13. Sin estas reglas, no habría una forma clara de determinar si la expresión significa (3 + 5) </em> 2 = 16 o 3 + (5 * 2) = 13, lo que llevaría a resultados inconsistentes en los lenguajes de programación y en las calculadoras.</p>]]></description>
         <enclosure url="https://static.platzi.com/media/user_upload/operadores-beb510d9-0502-426f-93ca-6f0769ffe9ef.jpg" />
         <pubDate>2025-09-25 23:39:28 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604718960</guid>
      </item>
      <item>
         <title>Fase de compilación</title>
         <author>enriquezyzangelica</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604719368</link>
         <description><![CDATA[<p>La compilación es un proceso dividido en varias fases. Entre las más importantes están el <strong>análisis léxico</strong>, que convierte caracteres en tokens; el <strong>análisis sintáctico</strong>, que construye el árbol sintáctico; el <strong>análisis semántico</strong>, que verifica reglas del lenguaje y tipos; la <strong>generación del código intermedio</strong>, y finalmente la <strong>optimización</strong> y <strong>generación del código máquina</strong>. Cada fase transforma la representación del programa y prepara la información para la siguiente etapa.</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/1683429958/1743d8bec0f315d8595cf1a43868c4b1/images.png" />
         <pubDate>2025-09-25 23:39:54 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604719368</guid>
      </item>
      <item>
         <title>Asociatividad</title>
         <author>l22590323</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604720988</link>
         <description><![CDATA[<p>es la regla que determina el orden de evaluación cuando en una expresión aparecen varios operadores <em>con la misma precedencia</em>. Mientras que la precedencia resuelve conflictos entre operadores diferentes (como + y *), la asociatividad resuelve conflictos entre operadores iguales. La asociatividad puede ser de izquierda a derecha o de derecha a izquierda. Por ejemplo, la resta y la división suelen ser asociativas por la izquierda, lo que significa que la expresión 8 - 3 - 1 se evalúa como (8 - 3) - 1 = 4. Si fuera asociativa por la derecha, se evaluaría como 8 - (3 - 1) = 6, lo cual no es intuitivo. En cambio, la potenciación (^) suele ser asociativa por la derecha, por lo que 2 ^ 3 ^ 2 se interpreta como 2 ^ (3 ^ 2) = 512 y no como (2 ^ 3) ^ 2 = 64.</p>]]></description>
         <enclosure url="https://image.slidesharecdn.com/expresioneslogicas-140914181616-phpapp02/95/expresiones-logicas-19-638.jpg?cb=1410740112" />
         <pubDate>2025-09-25 23:41:09 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604720988</guid>
      </item>
      <item>
         <title>Código P(P-code)</title>
         <author>l22590320</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604722752</link>
         <description><![CDATA[<p>El Código P (P-Code) es una representación intermedia de bajo nivel que utiliza una máquina virtual basada en pila para ejecutar instrucciones. Fue popularizado por el compilador de Pascal de Niklaus Wirth.</p><p><strong>Características principales:</strong></p><ul><li><p>Máquina basada en pila</p></li><li><p>Independiente del hardware</p></li><li><p>Conjunto de instrucciones simple</p></li></ul><p><strong>Ventajas:</strong></p><ul><li><p>Facilita la portabilidad del código</p></li><li><p>Simplifica el diseño del compilador</p></li><li><p>Permite optimizaciones a nivel intermedio</p></li></ul><p><strong>Ejemplo:</strong></p><p>LIT 2     ; cargar literal 2 en la pila</p><p>LIT 3     ; cargar literal 3</p><p>OPR +     ; sumar los dos valores en la pila</p>]]></description>
         <enclosure url="https://cdn.pixabay.com/photo/2014/12/30/10/39/code-583795_1280.jpg" />
         <pubDate>2025-09-25 23:42:43 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604722752</guid>
      </item>
      <item>
         <title>Árbol de Sintaxis Abstracta</title>
         <author>l22590323</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604723305</link>
         <description><![CDATA[<p><strong>AST, por sus siglas en inglés</strong> es una representación en forma de árbol de la estructura sintáctica de un código fuente o una expresión. Cada nodo del árbol denota una construcción (como un operador, un identificador o un valor literal) que ocurre en el texto, pero omite detalles no esenciales como los paréntesis y los delimitadores. Por ejemplo, para la expresión (3 + 5) <em> 2, el AST tendría un nodo raíz </em>; su hijo izquierdo sería un nodo + con los hijos 3 y 5, y su hijo derecho sería el nodo 2. El AST es fundamental en los compiladores e intérpretes, ya que captura la esencia lógica del código y sirve como base para el análisis semántico y la generación de código.</p>]]></description>
         <enclosure url="https://th.bing.com/th/id/R.9b17c20824422b8fcb40cf05ec919575?rik=ibQ89Gs3CtVbdQ&amp;riu=http%3a%2f%2fwww.it.uc3m.es%2fjava%2f2011-12%2funits%2farboles%2fguides%2f2%2fimg%2fast_tree.jpg&amp;ehk=MQZuuJ1UlA2iFQwK%2b2bbExwjAJF52L5dK6VbbNjFGYg%3d&amp;risl=&amp;pid=ImgRaw&amp;r=0" />
         <pubDate>2025-09-25 23:43:08 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604723305</guid>
      </item>
      <item>
         <title>Notación prefija</title>
         <author>enriquezyzangelica</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604724518</link>
         <description><![CDATA[<p>La <strong>notación prefija</strong> (o notación polaca) coloca el operador antes de sus operandos, por ejemplo, "+ A B".</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/1683429958/581d27f6daf5eadb2e9f396d77464e08/imagen_2025_09_25_174802797.png" />
         <pubDate>2025-09-25 23:44:38 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604724518</guid>
      </item>
      <item>
         <title>Recorridos del árbol</title>
         <author>l22590323</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604725068</link>
         <description><![CDATA[<p>son algoritmos para visitar todos los nodos de un árbol de manera sistemática, y son cruciales para analizar o transformar un AST. Existen tres órdenes principales: <strong>Preorden</strong> (raíz, hijo izquierdo, hijo derecho), que procesa primero la operación y luego los operandos, útil para copiar árboles o generar notación polaca. <strong>Inorden</strong> (hijo izquierdo, raíz, hijo derecho), que, al aplicarse a un AST, reproduce (casi siempre) la expresión original con notación infija, aunque puede requerir paréntesis. Finalmente, <strong>Postorden</strong> (hijo izquierdo, hijo derecho, raíz), que procesa primero los operandos y luego la operación, siendo la base para la evaluación de expresiones y la generación de código de máquina o notación polaca inversa.</p>]]></description>
         <enclosure url="https://tse1.mm.bing.net/th/id/OIP.c7hawP005Odknct7Ov3FnwHaFY?rs=1&amp;pid=ImgDetMain&amp;o=7&amp;rm=3" />
         <pubDate>2025-09-25 23:45:10 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604725068</guid>
      </item>
      <item>
         <title>Notación infija</title>
         <author>enriquezyzangelica</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604726260</link>
         <description><![CDATA[<p>La <strong>notación infija </strong>es la forma común con el operador entre operandos, por ejemplo, "A + B".</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/1683429958/c1f7f1ac3f980641341e28ef7e07914a/images.png" />
         <pubDate>2025-09-25 23:46:21 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604726260</guid>
      </item>
      <item>
         <title>Notación postfija</title>
         <author>enriquezyzangelica</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604727317</link>
         <description><![CDATA[<p>La notación postfija (o notación polaca inversa) coloca el operador después de sus operandos, por ejemplo, "A B +".</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/1683429958/09f81fb5c10eca04ac823598eaf427cc/images__1_.png" />
         <pubDate>2025-09-25 23:47:15 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604727317</guid>
      </item>
      <item>
         <title>Notación Polaca</title>
         <author>l22590323</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604727402</link>
         <description><![CDATA[<p>también conocida como notación de prefijo, es una forma de escribir expresiones matemáticas donde el operador se coloca <em>antes</em> que sus operandos. Esta notación fue ideada por el lógico polaco Jan Łukasiewicz y tiene la gran ventaja de que no requiere paréntesis para definir el orden de las operaciones, ya que el orden es inherente a la posición de los operadores. Por ejemplo, la expresión infija (3 + 5) <em> 2 se escribe en notación polaca como </em> + 3 5 2. Para evaluarla, se busca el primer operador (*) y se aplica a los dos siguientes elementos, que a su vez pueden ser operandos simples o subexpresiones (+ 3 5). Esta notación es la base del recorrido en preorden de un AST.</p>]]></description>
         <enclosure url="https://th.bing.com/th/id/OIP.W8SY7DcbovpIDYkUMSqyZgHaBs?o=7rm=3&amp;rs=1&amp;pid=ImgDetMain&amp;o=7&amp;rm=3" />
         <pubDate>2025-09-25 23:47:21 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604727402</guid>
      </item>
      <item>
         <title>Notación Polaca Inversa (RPN)</title>
         <author>l22590323</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604728047</link>
         <description><![CDATA[<p>o notación de posfijo, es el reverso de la notación polaca: el operador se coloca <em>después</em> de sus operandos. Popularizada por las calculadoras Hewlett-Packard, su principal ventaja es que es extremadamente fácil de evaluar usando una pila (stack). Por ejemplo, la expresión infija (3 + 5) <em> 2 se escribe en RPN como 3 5 + 2 </em>. La evaluación se realiza leyendo de izquierda a derecha: al encontrar un operando se apila, y al encontrar un operador se desapilan los dos operandos superiores, se realiza la operación y el resultado se vuelve a apilar. Esta notación corresponde directamente al recorrido en postorden de un Árbol de Sintaxis Abstracta (AST).</p>]]></description>
         <enclosure url="https://th.bing.com/th/id/OIP.W8SY7DcbovpIDYkUMSqyZgHaBs?o=7rm=3&amp;rs=1&amp;pid=ImgDetMain&amp;o=7&amp;rm=3" />
         <pubDate>2025-09-25 23:48:06 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604728047</guid>
      </item>
      <item>
         <title>Triplos </title>
         <author>l22590320</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604728088</link>
         <description><![CDATA[<p>Los triplos son una representación intermedia que consiste en registros de tres campos: operador, operando1 y operando2. Cada triplo representa una operación básica.</p><p>Estructura -&gt; (operador, operando1, resultado)</p><ul><li><p><strong>Características:</strong></p><ul><li><p><strong>Omite variables temporales explícitas:</strong> El resultado de un Triplo se <strong>refiere implícitamente por su posición</strong> (su número de instrucción).</p></li><li><p><strong>Ejemplo:</strong> Para a:=b∗c, el Triplo podría ser ( *, b, c). Si este es el triplo <strong>(1)</strong>, el resultado de la multiplicación se referencia como (1).</p></li></ul></li><li><p><strong>Ventaja:</strong> Más <strong>compacto</strong> y <strong>consistente</strong> que los cuádruplos al no requerir nombrar temporales.</p></li><li><p><strong>Desventaja:</strong> Dificulta la <strong>optimización</strong> y reordenación de código, ya que mover una instrucción cambia su referencia numérica.</p></li></ul>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2310716436/3b3f0061225fe8a0aa9ca446834aa34e/Gemini_Generated_Image_441vb2441vb2441v.png" />
         <pubDate>2025-09-25 23:48:08 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604728088</guid>
      </item>
      <item>
         <title>Conversión de notaciones</title>
         <author>enriquezyzangelica</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604730051</link>
         <description><![CDATA[<p>Consiste en transformar expresiones entre <strong>notaciones infija, prefija y postfija</strong>, para que sean más sencillas de evaluar o representar internamente. Normalmente, se usa un algoritmo basado en pilas para manejar precedencia y asociatividad de operadores al convertir notaciones.</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/1683429958/89616d8960ef72064951c44e10766a3a/Sin_t_tulo12__1_.jpg" />
         <pubDate>2025-09-25 23:50:02 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604730051</guid>
      </item>
      <item>
         <title>Triplos indirectos </title>
         <author>l22590320</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604734430</link>
         <description><![CDATA[<p>Los triplos indirectos mejoran los triplos tradicionales añadiendo una tabla de punteros que permite referenciar las instrucciones indirectamente, facilitando la reorganización del código.</p><p><strong>Estructura:</strong></p><ul><li><p><strong>Tabla de triplos</strong>: Contiene las operaciones (operador, op1, op2)</p></li><li><p><strong>Tabla de punteros</strong>: Referencias a las posiciones de los triplos</p></li></ul><p><strong>Funcionamiento:</strong> El orden de ejecución se da por la lista de apuntadores, no por la posición física de los Triplos.</p><p><strong>Ventaja:</strong> Permite la <strong>reordenación</strong> libre de las subexpresiones (optimización) sin tener que reescribir los Triplos que hacen referencia a los resultados intermedios. Solo se reordenan los apuntadores en la lista.</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2310716436/33f5548089fc9e74d68ad634f7cfe8b8/Gemini_Generated_Image_rc34nbrc34nbrc34.png" />
         <pubDate>2025-09-25 23:54:03 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604734430</guid>
      </item>
      <item>
         <title>Traducción de asignaciones</title>
         <author>l22590410</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604736116</link>
         <description><![CDATA[<p>Consiste en convertir expresiones del tipo a = b + c a un <strong>código intermedio más simple</strong>, que generalmente utiliza instrucciones de tres direcciones (TAC). Este formato descompone la operación en pasos elementales que son más fáciles de analizar, optimizar y finalmente traducir a código máquina.</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2377481035/abdd62a1e948c1f460840e15587060a2/image.png" />
         <pubDate>2025-09-25 23:55:30 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604736116</guid>
      </item>
      <item>
         <title>Cuádruplos </title>
         <author>l22590320</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604737937</link>
         <description><![CDATA[<p>Los cuádruplos son una representación intermedia de cuatro campos: <strong>operador</strong>, <strong>operando1</strong>, <strong>operando2</strong> y <strong>resultado</strong>. Proporcionan una representación clara y explícita de las operaciones.</p><p><strong>Características:</strong></p><ul><li><p><strong>Claridad</strong>: Cada operación es completamente explícita</p></li><li><p><strong>Variables temporales</strong>: Utiliza variables temporales para resultados intermedios</p></li><li><p><strong>Fácil traducción</strong>: Directa conversión a código de máquina</p></li></ul><p><strong>Ejemplo:</strong> Para a:=b∗c, el Cuádruplo podría ser (*, b, c, t1).</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2310716436/ee735e6938f09d75f2757e3737d65f05/Gemini_Generated_Image_pmi8b7pmi8b7pmi8.png" />
         <pubDate>2025-09-25 23:57:06 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604737937</guid>
      </item>
      <item>
         <title>Ventaja de cuádruplos </title>
         <author>l22590320</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604741713</link>
         <description><![CDATA[<p><strong>1. Simplicidad conceptual</strong></p><ul><li><p>Representación directa de operaciones de tres direcciones</p></li><li><p>Fácil comprensión y manipulación por parte del programador</p></li></ul><p><strong>2. Facilidad de optimización</strong></p><ul><li><p><strong>Eliminación de código muerto</strong>: Fácil identificación de variables no utilizadas</p></li><li><p><strong>Propagación de constantes</strong>: Simplifica el reemplazo de valores constantes</p></li><li><p><strong>Análisis de flujo de datos</strong>: Permite seguimiento eficiente de dependencias</p></li></ul><p><strong>3. Traducción directa</strong></p><ul><li><p><strong>Mapeo uno a uno</strong>: Cada cuádruplo se traduce fácilmente a instrucciones de máquina</p></li><li><p><strong>Generación de código</strong>: Proceso sistemático y predecible</p></li><li><p><strong>Asignación de registros</strong>: Facilita la gestión de registros del procesador</p></li></ul><p><strong>4. Independencia del lenguaje fuente</strong></p><ul><li><p>Representación universal para diferentes lenguajes de programación</p></li><li><p>Facilita el desarrollo de compiladores multi-lenguaje</p></li></ul><p><strong>5. Debugging y análisis</strong></p><ul><li><p>Formato legible para depuración del compilador</p></li><li><p>Facilita el análisis estático del código</p></li></ul>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2310716436/129271505f8a5848941b6c6204364375/Gemini_Generated_Image_lyit1lyit1lyit1l.png" />
         <pubDate>2025-09-26 00:00:11 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604741713</guid>
      </item>
      <item>
         <title>Variables temporales </title>
         <author>l22590320</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604748949</link>
         <description><![CDATA[<p>Las variables temporales son identificadores generados automáticamente por el compilador para almacenar resultados intermedios de expresiones complejas durante la traducción a código intermedio.</p><p><strong>Propósito:</strong></p><ul><li><p>Simplificación: Descomponen expresiones complejas en operaciones básicas</p></li><li><p>Optimización: Permiten reutilización de cálculos intermedios</p></li><li><p>Traducción: Facilitan la generación de código de máquina</p></li></ul><p><strong>Características:</strong></p><ul><li><p>Generación automática: El compilador las crea usando convenciones como t1, t2, t3...</p></li><li><p>Alcance limitado: Generalmente tienen vida corta dentro de bloques básicos</p></li><li><p>Tipo específico: Mantienen el tipo de dato del resultado que almacenan</p></li></ul><p><strong>Ejemplo:</strong> En la expresión a=b∗c+d, se descompondría usando temporales:</p><ol><li><p>t1 = b * c</p></li><li><p>t2 = t1 + d</p></li><li><p>a = t2</p></li></ol>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2310716436/0f8ec49444be9fc8f485fdfa4f0bf689/diagrama_conceptual_.png" />
         <pubDate>2025-09-26 00:06:46 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604748949</guid>
      </item>
      <item>
         <title>Instrucciones de Control</title>
         <author>l22590410</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604778016</link>
         <description><![CDATA[<p>Son instrucciones que determinan <strong>cómo fluye la ejecución del programa</strong>. Se usan para implementar estructuras como condicionales (if…else), ciclos (for, while) o cambios de flujo mediante saltos (goto). En el código intermedio, estas instrucciones se expresan como combinaciones de <strong>saltos condicionales, incondicionales y etiquetas</strong>. Gracias a esto, el compilador puede representar cualquier estructura de control de alto nivel de manera uniforme y precisa.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-26 00:24:51 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604778016</guid>
      </item>
      <item>
         <title>Etiquetas (Labels)</title>
         <author>l22590410</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604779586</link>
         <description><![CDATA[<p>Las etiquetas son <strong>identificadores simbólicos</strong> que marcan posiciones específicas en el código intermedio. Sirven como <strong>puntos de referencia</strong> para los saltos condicionales e incondicionales, de modo que el compilador sepa hacia dónde transferir el control del programa. Su uso es fundamental en la representación de bucles y condicionales.</p>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2377481035/dec29693339a143bd2fdbece8192fd35/image.png" />
         <pubDate>2025-09-26 00:25:47 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604779586</guid>
      </item>
      <item>
         <title>Saltos Condicionales e Incondicionales</title>
         <author>l22590410</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604780982</link>
         <description><![CDATA[<p>Los saltos permiten alterar el orden secuencial normal de un programa:</p><ul><li><p><strong>Saltos incondicionales (goto)</strong>: llevan siempre el control hacia una etiqueta determinada, sin importar condiciones.</p></li><li><p><strong>Saltos condicionales</strong>: dependen de una evaluación lógica, por ejemplo: if x &lt; y goto L1.</p></li></ul><p>Estos elementos son esenciales para implementar estructuras de decisión y ciclos, ya que conectan las <strong>etiquetas</strong> que representan los diferentes caminos posibles dentro del programa.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-26 00:26:35 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604780982</guid>
      </item>
      <item>
         <title>Llamada a Función</title>
         <author>l22590410</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604782703</link>
         <description><![CDATA[<p>Una llamada a función en código intermedio representa la <strong>ejecución de una subrutina</strong>, lo cual incluye varios pasos:</p><ol><li><p>Evaluar y preparar los argumentos que se van a pasar.</p></li><li><p>Crear el marco de activación (stack frame) con información de la llamada.</p></li><li><p>Saltar a la dirección donde inicia la función.</p></li><li><p>Regresar al punto de llamada con el valor obtenido.</p></li></ol>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/2377481035/25527c1796b361e87146239e34ae3d1e/image.png" />
         <pubDate>2025-09-26 00:27:32 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604782703</guid>
      </item>
      <item>
         <title>Estructuras de datos complejas</title>
         <author>l22590410</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604797634</link>
         <description><![CDATA[<p>Son aquellas que van más allá de los tipos de datos primitivos (enteros, flotantes, caracteres) y permiten manejar información estructurada, como <strong>arreglos, registros (structs), objetos o punteros</strong>. En el código intermedio, trabajar con estas estructuras se traduce en operaciones de memoria como accesos a índices, desplazamientos o referencias. Por ejemplo, el acceso A[i] puede convertirse en una suma de la dirección base más un desplazamiento calculado.<br>Esto facilita que el compilador pueda manipular datos complejos de una forma estándar y preparar su traducción eficiente a código máquina.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-26 00:35:17 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3604797634</guid>
      </item>
      <item>
         <title>Esquema de traducción dirigida por sintaxis (SDT)</title>
         <author>l22590332</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610022167</link>
         <description><![CDATA[<p>Un SDT es un mecanismo en el que a una gramática se le agregan <strong>acciones semánticas</strong> dentro de sus producciones. Estas acciones permiten <strong>traducir, generar código o realizar verificaciones</strong> al mismo tiempo que se hace el análisis sintáctico. Es muy usado en compiladores para convertir código fuente en representaciones intermedias.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-29 20:51:34 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610022167</guid>
      </item>
      <item>
         <title>Atributos sintetizados</title>
         <author>l22590332</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610023215</link>
         <description><![CDATA[<p>Son aquellos atributos que se <strong>calculan a partir de los atributos de los hijos de un nodo en el árbol de derivación</strong>. Es decir, la información “sube” en el árbol. Ejemplo: en una expresión aritmética, el valor de un nodo E → E1 + T se puede calcular sumando los atributos de E1 y T.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-29 20:52:30 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610023215</guid>
      </item>
      <item>
         <title>Gramática aumentada</title>
         <author>l22590332</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610023873</link>
         <description><![CDATA[<p>Es una gramática a la que se le agrega un <strong>nuevo símbolo inicial</strong> y una nueva producción. Se usa principalmente en algoritmos de análisis sintáctico (como LR o SLR) para <strong>marcar de forma clara el inicio y final de la derivación</strong>, facilitando la construcción de autómatas.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-29 20:53:00 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610023873</guid>
      </item>
      <item>
         <title>Expresión aritmética</title>
         <author>l22590332</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610024211</link>
         <description><![CDATA[<p>Una expresión aritmética es una combinación de <em>operandos (números o variables) y operadores (+, -, , /) que permiten realizar cálculos. En compiladores, su gramática define la </em><strong><em>precedencia y asociatividad de operadores</em></strong><em>, asegurando que se evalúe correctamente (ejemplo: a + b </em> c).</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-29 20:53:24 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610024211</guid>
      </item>
      <item>
         <title>Expresión booleana</title>
         <author>l22590332</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610024643</link>
         <description><![CDATA[<p>Es una expresión que se compone de <strong>valores lógicos (verdadero/falso)</strong> y operadores lógicos como AND (∧), OR (∨) y NOT (¬). Se usa en estructuras de control (if, while) para tomar decisiones en los programas.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-29 20:53:59 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610024643</guid>
      </item>
      <item>
         <title>Instrucción de asignación</title>
         <author>l22590332</author>
         <link>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610025584</link>
         <description><![CDATA[<p>Es una construcción que permite <strong>guardar un valor en una variable</strong>. Generalmente se representa con el operador = (ejemplo: x = a + b;). En traducción dirigida por sintaxis, se genera código para evaluar la expresión y almacenar el resultado en la dirección asociada a la variable.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-09-29 20:54:33 UTC</pubDate>
         <guid>https://padlet.com/l22590320/ldo8ol4rq5g71e2r/wish/3610025584</guid>
      </item>
   </channel>
</rss>
