Programa Lex para verificar si la string dada es Palindrome o no

Problema: escriba un programa Lex para verificar si la string dada es Palindrome o no. Explicación: Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer … Continue reading «Programa Lex para verificar si la string dada es Palindrome o no»

DFA en código LEX que acepta strings que terminan en 11

Prerrequisito: Diseño de autómatas finitos Problema: Diseñe un código LEX para construir un DFA que acepte el lenguaje: todas las strings que terminan en «11» sobre las entradas ‘0’ y ‘1’. Ejemplos: Input: 100011 Output: Accepted Input: 100101 Output: Not Accepted Input: asdf Output: Invalid Enfoque: LEX nos proporciona un estado INICIAL por defecto. Entonces, … Continue reading «DFA en código LEX que acepta strings que terminan en 11»

Primer pedido de profundidad en el diseño del compilador

La primera búsqueda en profundidad del gráfico visita todos los Nodes del gráfico una vez, comenzando por el punto de entrada y visitando los Nodes hasta el punto de entrada lo más rápido posible. La ruta de búsqueda para la búsqueda en profundidad crea el primer árbol expandible (DFST). Pre-orden visita el sitio antes de … Continue reading «Primer pedido de profundidad en el diseño del compilador»

Asignación única estática (con ejemplos relevantes)

La asignación única estática fue presentada en 1988 por Barry K. Rosen, Mark N, Wegman y F. Kenneth Zadeck.  En el diseño del compilador, la asignación única estática (SSA abreviada) es un medio para estructurar la IR (representación intermedia) de modo que a cada variable se le asigna un valor solo una vez y cada … Continue reading «Asignación única estática (con ejemplos relevantes)»

Desarrollo de un shell basado en Linux

¿Qué es una concha? Es la parte visible de un sistema operativo con la que interactúan los usuarios, los usuarios interactúan con el sistema operativo proporcionando comandos al shell, que a su vez interpreta estos comandos y los ejecuta. La siguiente imagen muestra el proceso de ejecución simplificado, en el que el shell recibe la … Continue reading «Desarrollo de un shell basado en Linux»

Analizadores SLR, CLR y LALR | conjunto 3 – Part 1

En este artículo, estamos discutiendo el analizador SLR, el analizador CLR y el analizador LALR, que son las partes del analizador Bottom Up. Analizador SLR El analizador SLR es similar al analizador LR(0) excepto por la entrada reducida. Las producciones reducidas se escriben únicamente en el SEGUIMIENTO de la variable cuya producción se reduce. Construcción de la … Continue reading «Analizadores SLR, CLR y LALR | conjunto 3 – Part 1»

Gramáticas regulares lineales derecha e izquierda

La gramática regular es un tipo de gramática que describe un lenguaje regular. Una gramática regular es un objeto matemático, G, que consta de cuatro componentes, G = (N, E , P, S), donde  N: conjunto finito no vacío de símbolos no terminales, E: un conjunto finito de símbolos terminales, o alfabeto, símbolos, P: un … Continue reading «Gramáticas regulares lineales derecha e izquierda»

Diagrama de transición para identificadores en el diseño del compilador

El diagrama de transición es un tipo especial de diagrama de flujo para el análisis del lenguaje. En el diagrama de transición, las cajas del diagrama de flujo se dibujan como un círculo y se denominan estados. Los estados están conectados por flechas llamadas aristas. La etiqueta o peso en el borde indica el carácter … Continue reading «Diagrama de transición para identificadores en el diseño del compilador»

Shift Reduce Parser en Compilador

Requisito previo: análisis | Conjunto 2 (Analizadores de reducción de desplazamiento o de abajo hacia arriba) Shift Reduce los intentos del analizador para la construcción del análisis de una manera similar a como se hace en el análisis de abajo hacia arriba, es decir, el árbol de análisis se construye desde las hojas (abajo) hasta … Continue reading «Shift Reduce Parser en Compilador»

MCQ en Asignación de memoria y proceso de compilación

1. ¿Cuál será el resultado del siguiente código?   C #include <stdio.h> #include <stdlib.h>   int main() {     union test {         int i;         float f;         char c;     };     union test* t;     t = (union test*)malloc(sizeof(union test));     t->f = 20.60f;     printf(«%f», t->f);     return 0; } (a) Valor de basura  (b) 20.600000  (c) Error de sintaxis  (d) 20.60 … Continue reading «MCQ en Asignación de memoria y proceso de compilación»