Programa para calcular primero y seguir conjuntos de gramática dada

Antes de continuar, se recomienda encarecidamente familiarizarse con los conceptos básicos del análisis de sintaxis, el análisis sintáctico LL(1) y las reglas para calcular los conjuntos Primero y Siguiente de una gramática.  Introducción al análisis de sintaxis ¿Por qué Primero y Seguir? FIRST Conjunto en análisis de sintaxis SEGUIR establecido en análisis de sintaxis Suponiendo … Continue reading «Programa para calcular primero y seguir conjuntos de gramática dada»

Diferencia entre código fuente y código objeto

1. Código fuente: el código fuente se refiere a un código de alto nivel o código ensamblador generado por un humano/programador. El código fuente es fácil de leer y modificar. Está escrito por un programador utilizando cualquier lenguaje de alto nivel o lenguaje intermedio que sea legible por humanos. El código fuente contiene comentarios que … Continue reading «Diferencia entre código fuente y código objeto»

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

Problema: escriba un programa YACC para verificar si la string dada es Palindrome o no. Explicación: Yacc (por «otro compilador compilador más») es el generador de analizador estándar para el sistema operativo Unix. Un programa de código abierto, yacc genera código para el analizador en el lenguaje de programación C. El acrónimo generalmente se representa … Continue reading «Programa YACC para verificar si la string dada es Palindrome o no»

Algoritmo de etiquetado en el diseño del compilador

El algoritmo de etiquetado es utilizado por el compilador durante la fase de generación de código. Básicamente, este algoritmo se utiliza para averiguar cuántos registros necesitará un programa para completar su ejecución. El algoritmo de etiquetado funciona de forma ascendente. Comenzaremos etiquetando primero los Nodes secundarios y luego los Nodes interiores. Las reglas del algoritmo … Continue reading «Algoritmo de etiquetado en el diseño del compilador»

Teoría del compilador | conjunto 2

Las siguientes preguntas se han hecho en el examen GATE CS.  1. Dada la siguiente expresión gramatical:  E -> E * F | F+E | FF  -> FF | id ¿cuál de las siguientes es verdadera? (GATE CS 2000)  (a) * tiene mayor precedencia que +  (b) – tiene mayor precedencia que *  (c) + … Continue reading «Teoría del compilador | conjunto 2»

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

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 – Part 1»

Algoritmos de asignación de registros en el diseño del compilador

La asignación de registros es un método importante en la fase final del compilador. Los registros son más rápidos de acceder que la memoria caché. Los registros están disponibles en tamaño pequeño hasta unos pocos cientos de Kb. Por lo tanto, es necesario utilizar un número mínimo de registros para la asignación de variables. Hay … Continue reading «Algoritmos de asignación de registros en el diseño del compilador»

Programa Lex para conversión de decimal a hexadecimal

Problema: escriba un programa Lex para la conversión de decimal a hexadecimal. Explicación: 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. La función yylex() es la principal función flexible que ejecuta la sección de reglas. Requisito previo: … Continue reading «Programa Lex para conversión de decimal a hexadecimal»

Diferencia entre ensamblador cruzado y compilador

1. Ensamblador cruzado: un ensamblador cruzado es un ensamblador que se ejecuta en una computadora con un tipo de procesador pero genera código de máquina para un tipo diferente de procesador. Por ejemplo, si usamos una PC con el lenguaje de máquina compatible con 8086 para generar un código de máquina para el procesador 8085, … Continue reading «Diferencia entre ensamblador cruzado y compilador»

Programa Lex para Contar Números Positivos, Números Negativos y Fracciones

Problema: Escriba un programa Lex para contar los números positivos, números negativos y fracciones Explicación: FLEX (Fast Lexical Analyzer Generator) es una herramienta/programa informático para generar analizadores léxicos (escáneres o lexers) escrito por Vern Paxson en C alrededor de 1987. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código … Continue reading «Programa Lex para Contar Números Positivos, Números Negativos y Fracciones»