Diseño del compilador: variantes del árbol de sintaxis

Un árbol de sintaxis es un árbol en el que cada Node hoja representa un operando, mientras que cada Node interior representa un operador. El árbol de análisis se abrevia como el árbol de sintaxis. El árbol de sintaxis generalmente se usa cuando se representa un programa en una estructura de árbol. Reglas para construir … Continue reading «Diseño del compilador: variantes del árbol de sintaxis»

Diferencia entre compilador e intérprete

 1. Compilador :  es un traductor que toma entrada, es decir, lenguaje de alto nivel, y produce una salida de lenguaje de bajo nivel, es decir, lenguaje de máquina o ensamblador.  Un compilador es más inteligente que un ensamblador, comprueba todo tipo de límites, rangos, errores, etc. Pero el tiempo de ejecución de su programa … Continue reading «Diferencia entre compilador e intérprete»

Operador de gramática y analizador de precedencia en TOC

Una gramática que se utiliza para definir operadores matemáticos se denomina gramática de operadores o gramática de precedencia de operadores . Tales gramáticas tienen la restricción de que ninguna producción tiene un lado derecho vacío (producciones nulas) o dos no terminales adyacentes en su lado derecho. Ejemplos: este es un ejemplo de gramática de operadores: … Continue reading «Operador de gramática y analizador de precedencia en TOC»

Eliminación de la ambigüedad (Conversión de una gramática ambigua en una gramática inequívoca)

Requisitos previos: Gramáticas libres de contexto , Gramática ambigua , Diferencia entre gramática ambigua y no ambigua, Precedencia y asociatividad de operadores , Gramática recursiva En este artículo vamos a ver la eliminación de la ambigüedad de la gramática usando ejemplos adecuados. Gramática ambigua vs inequívoca: las gramáticas que tienen más de un árbol de … Continue reading «Eliminación de la ambigüedad (Conversión de una gramática ambigua en una gramática inequívoca)»

Compiladores de paso único, paso doble y paso múltiple

Ya conocemos todas las Fases del diseño del Compilador , ahora los Pases del Compilador. Un paso del compilador se refiere al recorrido de un compilador a través de todo el programa. El paso del compilador es de dos tipos: Compilador de paso único y Compilador de dos pasos o Compilador de paso múltiple. Estos … Continue reading «Compiladores de paso único, paso doble y paso múltiple»

Programa Lex para contar el número de líneas, espacios y tabulaciones

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 en el lenguaje de programación C. Veamos cómo contar el número de líneas, espacios y tabulaciones … Continue reading «Programa Lex para contar el número de líneas, espacios y tabulaciones»

Introducción al análisis de sintaxis en el diseño de compiladores

Cuando se entrega una string de entrada (código fuente o un programa en algún idioma) a un compilador, el compilador la procesa en varias fases, comenzando desde el análisis léxico (escanea la entrada y la divide en tokens) hasta la generación del código de destino. El Análisis Sintáctico o Parsing es la segunda fase, es … Continue reading «Introducción al análisis de sintaxis en el diseño de compiladores»

Análisis | Conjunto 1 (Introducción, Ambigüedad y Analizadores) – Part 1

En este artículo, estudiaremos varios tipos de análisis. Es uno de los temas más importantes en Compiler desde el punto de vista de GATE. El funcionamiento de varios analizadores se explicará desde el punto de vista de resolución de preguntas GATE. Requisito previo : conocimiento básico de gramáticas, árboles de análisis, ambigüedad.   Rol del analizador: En … Continue reading «Análisis | Conjunto 1 (Introducción, Ambigüedad y Analizadores) – Part 1»

Optimización de mirilla en el diseño del compilador

La optimización de mirilla es un tipo de optimización de código que se realiza en una pequeña parte del código. Se realiza en un conjunto muy pequeño de instrucciones en un segmento de código. El pequeño conjunto de instrucciones o pequeña parte de código sobre el que se realiza la optimización de mirilla se conoce … Continue reading «Optimización de mirilla en el diseño del compilador»

Programa para construir DFA para expresiones regulares C( A + B)+

Dada una string S , la tarea es diseñar un autómata finito determinista (DFA) para aceptar el lenguaje L = C (A + B)+ . Si DFA acepta la string proporcionada, imprima «Sí» . De lo contrario, escriba “No” . Ejemplos: Entrada: S = “CABABABAB” Salida: Sí Explicación: La string dada tiene la forma C(A … Continue reading «Programa para construir DFA para expresiones regulares C( A + B)+»