<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>Proyecto Examen Practico by Ilse Carrillo</title>
      <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z</link>
      <description>Tema 2. Generación del Código Intermedio </description>
      <language>en-us</language>
      <pubDate>2025-03-04 02:22:27 UTC</pubDate>
      <lastBuildDate>2025-03-06 13:26:15 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url>https://padlet.net/icons/8.0/png/1f4bb.png</url>
      </image>
      <item>
         <title>Introducción</title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349951974</link>
         <description><![CDATA[<p>En el proceso de compilación, la generación de código intermedio es una fase crucial que facilita la optimización y posterior traducción del programa a código de máquina. Uno de los métodos más utilizados para representar este código intermedio es a través de <strong>triplos</strong>, los cuales estructuran cada operación en una tupla de tres elementos: <strong>(operador, operando1, operando2)</strong>.</p><p><br></p><p>Este proyecto tiene como objetivo diseñar e implementar un <strong>Generador de Código Intermedio con Triplos</strong> en el lenguaje de programación Java, utilizando el entorno de desarrollo Apache NetBeans. Se busca transformar expresiones matemáticas en código intermedio y representarlas mediante triplos, facilitando la comprensión del proceso de compilación.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:23:53 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349951974</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349954229</link>
         <description><![CDATA[<ul><li><p><strong>Código Intermedio</strong></p></li></ul><p>El código intermedio es una representación abstracta entre el código fuente y el código de máquina. Su propósito principal es <strong>independizar la fase de análisis de la fase de generación de código</strong>, permitiendo optimizaciones antes de la traducción final.</p><p><br></p><ul><li><p><strong>Triplos en Compiladores</strong></p></li></ul><p>Los triplos son una forma de representar expresiones aritméticas y lógicas de manera estructurada. Cada operación se guarda en una tupla de tres elementos:</p><p><strong>(operador, operando1, operando2)</strong></p><p>Por ejemplo, la expresión:</p><pre><code>x = a + b * c</code></pre><p>Se representa en triplos como:</p><pre><code>( *, b, c ) → T1
( +, a, T1 ) → x</code></pre><p>Aquí, <strong>T1</strong> es una variable temporal que almacena el resultado intermedio.</p><p><br></p><ul><li><p><strong>Estructura de un Triplo</strong></p></li></ul><p>Cada triplo contiene:</p><ul><li><p><strong>Operador</strong>: Tipo de operación (+, -, *, /, etc.).</p></li><li><p><strong>Operando 1</strong>: Primer operando.</p></li><li><p><strong>Operando 2</strong>: Segundo operando (puede ser otro triplo).</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:25:36 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349954229</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349955811</link>
         <description><![CDATA[<ul><li><p><strong>Descripción del Problema</strong></p></li></ul><p>El problema consiste en transformar expresiones matemáticas en código intermedio usando triplos. Se debe diseñar un sistema que reciba expresiones, las analice y genere la representación con triplos.</p><p><br></p><ul><li><p><strong>Transformación de Expresiones en Código Intermedio</strong></p></li></ul><p>Para convertir una expresión matemática en triplos, se debe analizar la precedencia de operadores y asignar temporales para resultados intermedios.</p><p>Ejemplo: Expresión: (a + b) * c</p><ol><li><p>Sumar a + b → <strong>T1 = ( +, a, b )</strong></p></li><li><p>Multiplicar T1 * c → *<em>T2 = ( , T1, c )</em></p></li></ol><p><br></p><ul><li><p><strong>Representación con Triplos</strong></p></li></ul><p>Cada operación se almacena en una estructura de datos que contiene:</p><ul><li><p>Índice del triplo</p></li><li><p>Operador</p></li><li><p>Operando 1</p></li><li><p>Operando 2</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:26:58 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349955811</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349958031</link>
         <description><![CDATA[<ul><li><p><strong>Diseño del Programa</strong></p></li></ul><p>El programa debe:</p><ol><li><p>Leer una expresión matemática.</p></li><li><p>Convertir la expresión en una estructura de triplos.</p></li><li><p>Mostrar la representación intermedia.</p><p><br></p></li></ol><ul><li><p><strong>Código en Java</strong></p></li></ul><pre><code>import java.util.*;

class Triplo {
    String operador, operando1, operando2;
    
    public Triplo(String operador, String operando1, String operando2) {
        this.operador = operador;
        this.operando1 = operando1;
        this.operando2 = operando2;
    }
    
    @Override
    public String toString() {
        return "(" + operador + ", " + operando1 + ", " + operando2 + ")";
    }
}

public class GeneradorTriplos {
    private static List&lt;Triplo&gt; triplos = new ArrayList&lt;&gt;();
    private static int tempIndex = 1;
    
    public static String generarTriplo(String operador, String operando1, String operando2) {
        String temp = "T" + tempIndex++;
        triplos.add(new Triplo(operador, operando1, operando2));
        return temp;
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Ingrese la expresión en notación postfija (ejemplo: a b + c *):");
        String[] tokens = scanner.nextLine().split(" ");
        Stack&lt;String&gt; pila = new Stack&lt;&gt;();
        
        for (String token : tokens) {
            if (token.matches("[a-zA-Z]") || token.matches("\\d+")) {
                pila.push(token);
            } else {
                String op2 = pila.pop();
                String op1 = pila.pop();
                String temp = generarTriplo(token, op1, op2);
                pila.push(temp);
            }
        }
        
        System.out.println("Triplos generados:");
        for (int i = 0; i &lt; triplos.size(); i++) {
            System.out.println(i + ": " + triplos.get(i));
        }
    }
}</code></pre><ul><li><p><strong>Explicación del Código</strong></p><p><br></p></li><li><p>Se define la clase Triplo para almacenar las tuplas.</p></li><li><p>generarTriplo crea nuevas tuplas y las guarda en una lista.</p></li><li><p>Se solicita una expresión en <strong>notación postfija</strong>.</p></li><li><p>Se usa una pila para evaluar la expresión y generar los triplos.</p></li></ul><p><br></p><p><strong>Ejecución y Resultados</strong></p><p>Ejemplo de entrada:</p><pre><code>a b + c *</code></pre><p>Salida esperada:</p><pre><code>0: (+, a, b)
1: (*, T1, c)</code></pre><p><br></p><p><br></p>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:28:22 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349958031</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349967004</link>
         <description><![CDATA[<p>El uso de <strong>triplos</strong> en compiladores permite una representación estructurada y optimizada del código intermedio. Con esta implementación en Java, se logra una conversión eficiente de expresiones matemáticas a su forma intermedia, facilitando futuras optimizaciones y traducción a código de máquina.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:35:44 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349967004</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349969726</link>
         <description><![CDATA[<p>Índice</p><ol><li><p>Introducción</p></li><li><p>Conceptos clave</p><ul><li><p>Código intermedio</p></li><li><p>Triplos en compiladores</p></li><li><p>Estructura de un triplo</p></li></ul></li><li><p>Desarrollo del proyecto</p><ul><li><p>Descripción del problema</p></li><li><p>Transformación de expresiones en código intermedio</p></li><li><p>Representación con triplos</p></li></ul></li><li><p>Implementación en Java</p><ul><li><p>Diseño del programa</p></li><li><p>Explicación del código</p></li><li><p>Ejecución y resultados</p></li></ul></li><li><p>Conclusiones</p></li><li><p>Referencias</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:37:56 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349969726</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349980603</link>
         <description><![CDATA[<ul><li><p>Aho, A. V., Lam, M. S., Sethi, R., &amp; Ullman, J. D. (2006). <em>Compiladores: Principios, Técnicas y Herramientas</em>(2da ed.). Pearson Educación.</p></li><li><p>Appel, A. W. (2002). <em>Implementación moderna de compiladores en Java</em>. Cambridge University Press.</p></li><li><p>Muchnick, S. S. (1997). <em>Diseño avanzado de compiladores e implementación</em>. Morgan Kaufmann.</p></li><li><p>Dragon Book. (1986). <em>Principios de compiladores</em>. Pearson.</p></li><li><p>Hopcroft, J. E., Motwani, R., &amp; Ullman, J. D. (2007). <em>Introducción a la teoría de autómatas, lenguajes y computación</em>. Pearson Educación.</p></li><li><p>Louden, K. (2004). <em>Construcción de compiladores: Principios y práctica</em>. Thomson Learning.</p></li><li><p>Tanenbaum, A. S. (2014). <em>Sistemas operativos modernos</em> (3ra ed.). Pearson Educación.</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 02:47:17 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3349980603</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350010146</link>
         <description><![CDATA[<p><strong>Lenguajes y Autamatas ll</strong></p><p>GENERADOR DE CODIGO INTERMEDIO. TRANSFORMACION DE EXPRESIONES</p><p><strong>Docente:</strong></p><ul><li><p>Oscar A. Garizurieta Castillo</p></li></ul><p><br></p><p><strong>Integrantes del Equipo:</strong></p><ul><li><p>Barrios Lara Jesús Emmanuel</p></li><li><p>Carrillo Morales Ilse del Carmen</p></li></ul><p><br></p><p><strong>Carrera</strong></p><ul><li><p>Ingeniería en Sistemas Computacionales</p></li></ul><p><br></p>]]></description>
         <enclosure url="" />
         <pubDate>2025-03-04 03:08:36 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350010146</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350035023</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3389322161/49f53098049d72a7651bec7afb48f9bb/WhatsApp_Image_2025_03_03_at_21_08_53.jpeg" />
         <pubDate>2025-03-04 03:27:40 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350035023</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350041666</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3389322161/73ed87016433ea3b73d08ee9d47e4693/WhatsApp_Image_2025_03_03_at_21_10_30.jpeg" />
         <pubDate>2025-03-04 03:33:12 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350041666</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350060655</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3389322161/fcfe03f435d7dd8564794e3b9fd551b7/Captura_de_Pantalla_2025_03_03_a_la_s__21_48_48.png" />
         <pubDate>2025-03-04 03:49:00 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350060655</guid>
      </item>
      <item>
         <title></title>
         <author>carmyss</author>
         <link>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350064210</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://www.youtube.com/watch?v=-8CbjWy0PE4" />
         <pubDate>2025-03-04 03:51:59 UTC</pubDate>
         <guid>https://padlet.com/carmyss/m0ownjo4hlb6k70z/wish/3350064210</guid>
      </item>
   </channel>
</rss>
