Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tarea Semana 3 Luis Valdez

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Luis Enrique Valdez Jimenez (2-17-1906).

Investigar:

Análisis Sintáctico

El análisis sintáctico es un análisis a nivel de sentencias, y es mucho más complejo


que el análisis léxico. Su función es tomar el programa fuente en forma de tokens,
que recibe del analizador léxico, y determinar la estructura de las sentencias del
programa. Este proceso es similar a determinar la estructura de una frase en un
idioma de habla humana, determinando quien es el sujeto, predicado, el verbo y los
complementos.

Análisis Ascendente y descendente

El objetivo de un análisis ascendente consiste en construir el árbol sintáctico desde


abajo hacia arriba, esto es, desde los tokens hacia el axioma inicial, lo cual disminuye
el número de reglas mal aplicadas con respecto al analizador descendente en éste
analizador las entradas son de izquierda a derecha, y construcciones de derivaciones
por la izquierda de una sentencia o enunciado. Un analizador puede empezar con el
símbolo inicial e intentar transformarlo en la entrada, intuitivamente esto sería ir
dividiendo la entrada progresivamente en partes cada vez más pequeñas.

Gramática de contexto libre

En gramática libre de contexto (o de contexto libre) es una gramática formal en la


que cada regla de producción es de la forma:

V→w

Donde V es un símbolo no terminal y w es una cadena de terminales y/o no


terminales. El término libre de contexto se refiere al hecho de que el no terminal V
puede siempre ser sustituido por w sin tener en cuenta el contexto en el que ocurra.
Un lenguaje formal es libre de contexto si hay una gramática libre de contexto que
lo genera.

Las gramáticas libres de contexto permiten describir la mayoría de los lenguajes de


programación, de hecho, la sintaxis de la mayoría de lenguajes de programación está
definida mediante gramáticas libres de contexto. Por otro lado, estas gramáticas son
suficientemente simples como para permitir el diseño de eficientes algoritmos de
análisis sintáctico que, para una cadena de caracteres dada, determinen cómo puede
ser generada desde la gramática. Los analizadores LL y LR tratan restringidos
subconjuntos de gramáticas libres de contexto.
Analizador Sintáctico LR

Las gramáticas libres de contexto permiten describir la mayoría de los lenguajes de


programación, de hecho, la sintaxis de la mayoría de lenguajes de programación está
definida mediante gramáticas libres de contexto. Por otro lado, estas gramáticas son
suficientemente simples como para permitir el diseño de eficientes algoritmos de
análisis sintáctico que, para una cadena de caracteres dada, determinen cómo puede
ser generada desde la gramática. Los analizadores LL y LR tratan restringidos
subconjuntos de gramáticas libres de contexto. Los analizadores sintácticos LR,
también conocidos como Parser LR, son un tipo de analizadores para algunas
gramáticas libres de contexto. Pertenece a la familia de los analizadores ascendentes,
ya que construyen el árbol sintáctico de las hojas hacia la raíz. Utilizan la técnica de
análisis por desplazamiento reducción. Existen tres tipos de parsers LR: SLR (K), LALR
(K) y LR (K) canónico.

Un analizador LR consta de:

 Un programa conductor
 Una entrada
 Una salida
 Una tabla de análisis sintáctico, compuesta de 2 partes (ACCIÓN Y GOTO)

Cabe acotar que el programa conductor es siempre igual, solo variando para cada
lenguaje la tabla de análisis sintáctico.

Generadores de Analizadores Sintácticos

El generador de analizadores sintácticos YACC Se puede construir un traductor utilizando Y ACC


de la forma que se ilustra en la figura. Primero, se prepara un archivo, por ejemplo traduce. y,
que contiene una especificación en YACC del traductor. La orden del sistema UNIX Yacc traduce
y transforma al archivo traduce, y en un programa escrito en C llamado y .tab.c usando el
método LALR. El programa y. tab. c es una representación de un analizador sintáctico escrito en
C, junto con otras rutinas en C que el usuario pudo haber preparado. La tabla de análisis
sintáctico LALR se comprime, al compilar y. tab. c junto con la biblioteca ly que contiene el
programa de análisis sintáctico LR utilizando la orden cc y. tab.c–ly se obtiene el programa objeto
deseado a. out que realiza la traducción especificada por el programa original en Y ACC!'. Si se
necesitan otros procedimientos, se pueden compilar o cargar con y. tab. e, igual que en cualquier
programa en C
Ejercicios:

1) Crear un analizador Sintáctico (Cualquier tipo, LL, LR o sin usar estos


métodos) en el Lenguaje de programación de su preferencia.

2) Subir el código a Github, enviar el código fuente y el ejecutable del


proyecto.

Subí un archivo rar ya que me da error el git por problemas de admin en mi pc, de igual manera
lo mostrare en clases.

También podría gustarte