Está en la página 1de 19

INSTITUTO TECNOLOGICO SUPERIOR DE

TAMAZUNCHALE

SINTESIS U5_ANALICIS SINTACTICO


MATERIA: LENGUAJES Y AUTOMATAS 1
DOCENTE: ING. HECTOR SOLIS ALVINEDA

ALUMNA:
VICTORIA SANCHEZ ORTIZ 19ISC075

6° SEMESTRE – M2
CARRERA: ING EN SISTEMAS COMPUTACIONALES
PERIODO ESCOLAR: FEBRERO - JUNIO 2023

0
INDICE

Contenido
INTRODUCCIÓN.................................................................................................................................................1
5.1 DEFINICIÓN Y CLASIFICACIÓN DE GRAMATICAS............................................................................2
5.2 GRAMATICAS LIBRES DE CONTEXTO (GLC).....................................................................................6
5.3 ÁRBOLES DE DERIVACIÓN.....................................................................................................................7
5.4 FORMAS NORMALES DE CHOMSKY.....................................................................................................9
5.5 DIAGRAMAS DE SINTAXIS.....................................................................................................................10
5.6 ELIMINACIÓN DE LA AMBIGUEDAD....................................................................................................11
5.7 TIPOS DE ANALIZADORES SINTACTICOS.........................................................................................12
5.8 GENERACIÓN DE MATRIZ PREDICTIVA (CALCULO FIRST Y FOLLOW)...................................13
5.9 MANEJO DE ERRORES...........................................................................................................................14
5.10 GENERADORES DE ANALIZADORES SINTACTICOS...................................................................15
CONCLUSIONES..............................................................................................................................................17
INTRODUCCIÓN

Dentro de esta unidad 5 se conocerá sobre análisis sintáctico en la materia de Lenguajes y


Autómatas, se ha explorado la importancia y los fundamentos del análisis sintáctico en la
construcción de compiladores y otros sistemas de procesamiento de lenguajes de
programación. El análisis sintáctico es una etapa crucial en el proceso de compilación, ya
que se encarga de verificar si una secuencia de símbolos léxicos cumple con la estructura
gramatical definida por la gramática del lenguaje. Esto permite detectar errores sintácticos y
garantizar que el programa esté correctamente estructurado.

Durante el estudio de esta unidad, se ha comprendido que existen diferentes técnicas para
realizar el análisis sintáctico, como el análisis descendente y el análisis ascendente. Además,
se ha explorado los generadores de analizadores sintácticos, herramientas que automatizan
la generación de analizadores sintácticos a partir de una descripción formal de la gramática.

1
5.1 DEFINICIÓN Y CLASIFICACIÓN DE GRAMATICAS

En el campo de la informática, el concepto de Gramática Formal adquirió gran importancia


para el desarrollo de lenguajes de programación, consiguientemente el desarrollo de
autómatas y máquinas de Turing cobró vida en las últimas décadas, fortaleciendo el vínculo
entre Electrónica e Informática, creando máquinas cada vez más sofisticadas y menos
complicadas para el usuario final.

Conceptos que nos permitirán conceptualizar la gramática

SÍMBOLO

Es una entidad abstracta, que no se va a definir. Normalmente los símbolos son letras (a, b,
c, z), dígitos (0,1,2…9) y otros caracteres (+, *, /, -,?...).

Un símbolo también puede estar formado por varias letras o caracteres, como las palabras
reservadas de un lenguaje de programación son símbolos de dicho lenguaje. Ejemplo:

- a,b,c,#,+,-,*, then, begin, end, else, …

VOCABULARIO O ALFABETO

Un vocabulario o alfabeto es un conjunto finito de símbolos, no vacío. Para definir que un


símbolo a pertenecer a un alfabeto V, se utiliza la siguiente notación aÃŽV.

Los alfabetos se definen por enumeración de los símbolos que contienen, podemos ver los
siguientes ejemplos:

· V1={A,B,C,D,E,F,…..,X,Y,Z}

· V2={a,b,c,d,0,1,2,3,4,*,#,+}

· V3={0,1}

· V4={if, then, begin, end, else, a,b,;,=,>}

· También se pueden definir las tablas ASCII y EBCDIC como los alfabetos de distintos
ordenadores.

2
CADENA

Una cadena es una secuencia finita de símbolos de un determinado alfabeto.

Ejm. Tomando en cuenta los alfabetos o vocabularios definidos anteriormente, podemos


decir que:

abcb es una cadena del alfabeto V2

a+2*b es una cadena del alfabeto V2

000111 es una cadena del alfabeto V3

If a>b then b=a; es una cadena del alfabeto V4

LONGITUD DE CADENA

La longitud de una cadena consiste en el número de símbolos pertenecientes a la cadena.


Ejm. Tomando en cuenta los ejemplos de cadena podemos decir que:

· |abcb| es de longitud 4

· |a + 2*b| es de longitud 5

· |000111| es de longitud 6

· |if a>b then a=b;| es de longitud 9

CADENA VACÍA

Se denomina cadena vacía, que no tiene símbolos y se denota con l, por lo que su longitud
es:

|l|®0

CONCATENACIÓN DE CADENAS

Sean A y B dos cadenas cualesquiera, se denomina concatenación de A y B a una nueva


cadena AB constituida por los símbolos de la cadena A seguidos por los de la cadena B.

3
El elemento neutro de la concatenación es l:

A l = lA = A

UNIVERSO DEL DISCURSO

El conjunto de todas las cadenas que se pueden formar con los símbolos de un alfabeto, se
denomina universo del discurso V y se representa por W(V). Evidentemente W(V) es un
conjunto infinito. La cadena vacía pertenece a W(V).Ejm:

Sea un alfabeto con una sola letra V={a}, entonces el universo del discurso es:

W(V) = {l, a, aa, aaa, aaaa, ….}

que contiene infinitas cadenas.

GRAMÁTICA

Veamos algunos conceptos que nos ayuden a formular el concepto de gramática:

(Del lat. gramática, y este del gr. γραμματική). f. Ciencia que estudia los elementos de una
lengua y sus combinaciones. Arte de hablar y escribir correctamente una lengua. Estudio de
una lengua regido por el principio de que todos sus elementos mantienen entre sí relaciones
sistemáticas. La que trata de formular una serie de reglas capaces de generar o producir
todas las oraciones posibles y aceptables de un idioma o lenguaje

Una definición un tanto técnica: " La gramática es un ente formal para especificar, de una
manera finita, el conjunto de cadenas de símbolos que constituyen un lenguaje" . La
gramática genera o describe un lenguaje.

AUTÓMATA

(Del latín. autómata, t. f. de -tus, y este del gr. αὐτόματος, espontáneo). m.Instrumento o
aparato que encierra dentro de sí el mecanismo que le imprime determinados movimientos o
respuestas. Máquina que imita la figura y los movimientos de un ser animado. Microsoft®
Encarta® 2007. © 1993-2006 Microsoft Corporation. Reservados todos los derechos.

4
En el caso de los Procesadores de Lenguaje un autómata es una construcción lógica que
recibe como entrada una cadena de símbolos y produce una salida indicando si dicha
cadena pertenece o no a un determinado lenguaje.

LENGUAJE

Conjunto de sonidos articulados con que el hombre manifiesta lo que piensa o siente.
Sistema de comunicación verbal. Manera de expresarse. Conjunto de señales que dan a
entender algo. El lenguaje de los ojos, el de las flores. En Informática Conjunto de signos y
reglas que permite la comunicación con un ordenador.

Podemos expresarlo de manera más sencilla como un conjunto de palabras ó cadenas de


símbolos (palabras, oraciones, textos o frases) de un determinado alfabeto.

LENGUAJE VACÍO

Existe un lenguaje denominado lenguaje vacío, que es un conjunto vacío y que se denota por
{Ø}. El lenguaje vacío no debe confundirse con un lenguaje que contenga una sola cadena, y
que ésta sea la cadena vacía, es decir {l}, ya que el número de elementos (cardinalidad) de
estos dos conjuntos es diferente.

Cardinal ({ Ø }) = 0

Cardinal ({ l }) = 1

Las gramáticas son herramientas fundamentales en el estudio de los lenguajes formales y su


estructura. En pocas palabras, una gramática es un conjunto de reglas que definen cómo se
construyen las cadenas o secuencias de símbolos en un lenguaje dado.

Una gramática se compone de cuatro elementos principales: un conjunto de símbolos


terminales, un conjunto de símbolos no terminales, un símbolo inicial y un conjunto de reglas
de producción. Los símbolos terminales son los elementos básicos del lenguaje, como letras,
dígitos o cualquier otro símbolo que no pueda ser descompuesto en partes más pequeñas.

5
Los símbolos no terminales, por otro lado, son variables que representan un conjunto de
posibles símbolos terminales.

5.2 GRAMATICAS LIBRES DE CONTEXTO (GLC).

Gramáticas Libres de Contexto (GLC), o de tipo 2: las reglas son de la forma X → α, donde X
es una variable y α es una cadena que puede contener variables y constantes. Estas
gramáticas producen los lenguajes Libres de Contexto (abreviado “LLC”)

Capturan la noción de constituyente sintáctico y la noción de orden.

Herramienta formal que puede ser vista tanto desde un punto de vista generador como
estructurador.

Propiedades computacionales interesantes: se puede reconocer en tiempo polinómico.

Una Gramática Libre de Contexto es una tupla con 4 parámetros:

G = (V, T, P, S)

V – conjunto de símbolos variables

T – conjunto de símbolos terminales

S Є V, símbolo inicial

P – conjunto de reglas de producción: A → α, con α sucesión de símbolos de V U T,


eventualmente vacía (α = ε)

Una GLC es un dispositivo generador.

Definimos el lenguaje LG generado por una gramática G del siguiente modo: G = { w / S →*


w } , siendo ⇒* una “especie” de clausura transitiva de → y w una tira de terminales

Las Gramáticas Libres de Contexto son una herramienta fundamental en el campo de la


teoría de lenguajes formales y la lingüística computacional. Una GLC es un conjunto de
reglas que describen la estructura de un lenguaje, permitiéndonos generar y analizar
cadenas de símbolos de acuerdo con esas reglas. Una GLC se compone de cuatro

6
componentes principales: un conjunto finito de símbolos terminales, un conjunto finito de
símbolos no terminales, un símbolo inicial y un conjunto finito de reglas de producción. Los
símbolos terminales representan las unidades básicas del lenguaje, como las palabras en un
idioma. Los símbolos no terminales, por otro lado, son variables que se pueden reemplazar
por cadenas de símbolos.

5.3 ÁRBOLES DE DERIVACIÓN

Es una representación gráfica (en forma de árbol invertido) de un proceso de derivación en


una gramática. Se define el árbol de derivación como sigue:

la raíz del árbol será el símbolo inicial de la gramática

los nodo interiores del árbol están etiquetados por los símbolos no terminales

las hojas están etiquetadas por símbolos terminales

si un nodo interior etiquetado por A, posee como hijos los nodos etiquetados por X1,X2, …Xn
, entonces A→ X1,X2, …Xn es una producción de la gramática, en donde Xi , representa
símbolo terminal o no terminal.

Sea la siguiente gramática:

G=( Σ={a, b}, N={S,A,B},S P ) P: S→aABAa , A→ε |aA , B→ε|bB la construcción de un árbol
de derivación en el proceso de la generación de la palabra aa es el siguiente:

7
Propiedades de un árbol de derivación.

Sea G = (N, T, S, P) una gramática libre de contexto, sea A Є N una variable. Diremos que
un árbol TA= (N, E) etiquetado es un árbol de derivación asociado a G si verifica las
propiedades siguientes:

La raíz del árbol es un símbolo no terminal

Cada hoja corresponde a un símbolo terminal o λ.

Cada nodo interior corresponde a un símbolo no terminal.

Para cada cadena del lenguaje generado por una gramática es posible construir (al menos)
un árbol de derivación, en el cual cada hoja tiene como rótulo uno de los símbolos de la
cadena.

Los árboles de derivación son una representación gráfica que nos permite visualizar cómo se
generan las cadenas de un lenguaje a partir de una gramática libre de contexto (GLC). Son
una herramienta fundamental en el análisis sintáctico y nos ayudan a comprender la
estructura de una cadena y cómo se aplica el conjunto de reglas de producción de la GLC
para llegar a esa cadena específica.

Un árbol de derivación se compone de nodos y arcos, cada nodo representa un símbolo de la


GLC, ya sea terminal o no terminal, y los arcos indican las reglas de producción utilizadas
para llegar a ese símbolo. El nodo raíz representa el símbolo inicial de la gramática y los
nodos hoja representan los símbolos terminales que forman la cadena generada.

8
5.4 FORMAS NORMALES DE CHOMSKY

Una gramática formal está en Forma normal de Chomsky si todas sus reglas de producción son de
alguna de las siguientes formas:

A → BC o

A→ao

donde A, B y C son símbolos no terminales (o variables) y α es un símbolo terminal.

Todo lenguaje independiente del contexto que no posee a la cadena vacía, es expresable por medio
de una gramática en forma normal de Chomsky (GFNCH) y recíprocamente. Además, dada una
gramática independiente del contexto, es posible algorítmicamente producir una GFNCH equivalente,
es decir, que genera el mismo lenguaje.

Sea G = (∑ N, ∑T, P, $) una gramática con P ⊂ ∑N X (∑N U ∑T)* y X Є ∑N un símbolo no-terminal (o


una variable). Podemos clasificar tales símbolos X en tres clases:

Variables accesibles:

Si existe una derivación desde el símbolo inicial que contiene X, es decir, existe $ → * α Xβ donde α,
β Є∑*

Variables generativas:

Si existe una derivación desde el la variable que produce una sentencia , es decir, existe X →* ω
donde ω Є *T.

Variables útiles:

Si existe una derivación desde el símbolo inicial usando que produce una sentencia ω, es decir,
existe $ →* α X β →*ω donde α, β Є ∑* y ω Є ∑*T.

Las formas normales de Chomsky son una manera estandarizada de representar gramáticas libres de
contexto (GLC) con reglas de producción específicas, estas formas normales son importantes porque
simplifican el análisis y la manipulación de las gramáticas lo que facilita su implementación en
algoritmos y autómatas.

9
Todas las reglas deben tener una forma específica: el lado izquierdo de la regla debe contener
exactamente un símbolo no terminal, y el lado derecho debe contener dos símbolos, ya sean no
terminales o terminales. En otras palabras, las reglas deben ser de la forma A → BC, donde A, B y C
son símbolos no terminales.

5.5 DIAGRAMAS DE SINTAXIS

Los diagramas sintácticos, de sintaxis o diagramas del ferrocarril son una forma de
representar una gramática libre de contexto. Representan una alternativa gráfica para la
Forma de Backus-Naur (BNF, por sus siglas en inglés) o la Forma Extendida de Backus-Naur
(EBNF, por sus siglas en ingles).

Los diagramas de ferrocarril son más comprensibles para la mayoría de la gente. Alguna
parte de la popularidad del formato de intercambio de datos JSON se debe a su
representación en los diagramas de ferrocarril.

Un segundo método alternativo para desplegar las producciones de ciertas gramáticas de


tipo 2 es el diagrama de sintaxis. Ésta es una imagen de las producciones que permite al
usuario ver las sustituciones en forma dinámica, es decir, verlas como un movimiento a
través del diagrama. En la figura 10.5 se ilustrará los diagramas que resultan de la traducción
de conjuntos de producciones típicos, que son, por lo general, todas las producciones que
aparecen en el lado derecho de algún enunciado BNF.

Los diagramas de sintaxis, también conocidos como diagramas de árboles o diagramas de


análisis sintáctico, son representaciones gráficas utilizadas para visualizar la estructura
sintáctica de una cadena de un lenguaje generado por una gramática libre de contexto
(GLC). Los diagramas de sintaxis representan la derivación de una cadena en forma de un
árbol, donde cada nodo representa un símbolo no terminal o terminal de la gramática, y las
aristas representan las reglas de producción aplicadas en la derivación.

El nodo raíz del árbol representa el símbolo inicial de la gramática y los nodos hoja
representan los símbolos terminales que forman la cadena que se está analizando. A medida

10
que se desciende por el árbol, se aplican las reglas de producción correspondientes para
expandir los símbolos no terminales y generar nuevos nodos.

5.6 ELIMINACIÓN DE LA AMBIGUEDAD

Una GLC es ambigua si existe una cadena w Є L(G) que tiene más de una derivación por la
izquierda o más de una derivación por la derecha o si tiene dos o más arboles de derivación .

En casi de y que toda cadena w Є L (G) tenga un único árbol de derivación no es ambigua.

Ejemplo: La gramática S → aS| Sa | a es ambigua porque aa tiene dos derivaciones por la


izquierda S Þ aS Þ aa S Þ Sa Þ aa.

Ambigüedad Inherente:

Las gramáticas que presentan este tipo de ambigüedad no pueden utilizarse para lenguajes
de programación, ya que por más transformaciones que se realicen sobre ellas, nunca se
podrá eliminar completamente la ambigüedad que presentan:

Un lenguaje L es inherentemente ambiguo si todas sus gramáticas; si existe cuando menos


una gramática no ambigua para L, L no es ambiguo.

El lenguaje de las expresiones no es Ambiguo

Las expresiones regulares no son ambiguas

La ambigüedad en las gramáticas libres de contexto (GLC) ocurre cuando una cadena de
símbolos puede tener múltiples interpretaciones o derivaciones posibles. En otras palabras,
existen diferentes árboles de derivación que pueden generar la misma cadena. La

11
eliminación de ambigüedad es un proceso mediante el cual se modifica una gramática
ambigua para que solo tenga una interpretación unívoca.

5.7 TIPOS DE ANALIZADORES SINTACTICOS

Analizador Descendente:

Se construye el árbol de análisis sintético partiendo del símbolo inicial y aplicando las
producciones mediante derivaciones por la izquierda, el símbolo a expandir es el que está
más a la izquierda.

Analizador Ascendente:

Se construye el árbol de análisis sintético partiendo de la frase a reconocer y aplicando las


producciones mediante reducciones hasta llegar al símbolo inicial de la gramática.

Ejemplo:

G= ({+,*, ID, (,)}, {E, T, P},E, P)P={E:=E+T | T; T:=T*P | P; P:= ID | (E) }FraseID + ( ID * ID )

Ejemplo:

G= ({+,*, ID, (,)}, {E, T, P},E, P)P={E:=E+T | T; T:=T*P | P; P:= ID | (E) }FraseID + ( ID * ID )

Los analizadores sintácticos, también conocidos como parsers, son componentes esenciales
en el proceso de análisis de la estructura sintáctica de un lenguaje. Son responsables de
verificar si una cadena de símbolos sigue las reglas gramaticales de un lenguaje dado. Los
analizadores sintácticos son componentes cruciales en el análisis de la estructura sintáctica
de un lenguaje. Los analizadores sintácticos descendentes, ascendentes y otros tipos, como
LL y GLR, ofrecen diferentes enfoques y técnicas para realizar esta tarea. Cada tipo tiene
sus propias características y se utiliza en diferentes situaciones según los requisitos y las
características del lenguaje.

12
5.8 GENERACIÓN DE MATRIZ PREDICTIVA (CALCULO FIRST Y FOLLOW)

FIRST: Sea G := (V; ∑; Q0; P) una gramática libre de contexto. Para cada forma sentencial α
Є (V U ∑)* y para cada k Є N definiremos la función.

En otras palabras, el operador F IRST k asocia a cada forma sentencial los primeros k
símbolos de cualquier forma terminal alcanzable desde α mediante derivaciones “masa la
izquierda".

FOLLOW: Con las mismas notaciones anteriores, para cada forma sentencial α Є (V U ∑)*
definiremos la función FOLLOWG GK (α) del modo siguiente.

De nuevo nos ocuparemos solamente de FOLLOW: = FOLLOW1. Obsérvese que FOLLOW k


(α) ⊂ ∑* y que para cada x Є FOLLOW (α), Ixl ≤ k. Obsérvese que para cada variable A Є V,
FOLLOW(A) son todos los símbolos terminales que pueden aparecer a la derecha de A en
alguna forma sentencial de la gramática.

La generación de una matriz predictiva es una técnica utilizada en el análisis sintáctico para
construir una tabla que ayuda a determinar qué regla de producción aplicar en cada paso del
análisis. Esta tabla se basa en los conjuntos First y Follow, que se calculan a partir de una
gramática libre de contexto (GLC). El conjunto First de un símbolo no terminal o terminal en
una gramática es el conjunto de terminales que pueden aparecer como el primer símbolo en
alguna derivación de ese símbolo. Ademas representa los posibles símbolos iniciales de las
cadenas que pueden ser generadas por ese símbolo.

13
5.9 MANEJO DE ERRORES

Un compilador es un sistema que en la mayoría de los casos tiene que manejar una entrada
incorrecta. Sobre todo, en las primeras etapas de la creación de un programa, es probable
que el compilador se utiliza para efectuar las características que debería proporcionar un
buen sistema de edición dirigido por la sintaxis, es decir, para determinar si las variables han
sido declaradas antes de usarla, o si faltan corchetes o algo así.

Por lo tanto, el manejo de errores es parte importante de un compilador y el escritor del


compilador siempre debe tener esto presente durante su diseño. Hay que señalar que los
posibles errores ya deben estar considerados al diseñar un lenguaje de programación. Por
ejemplo, considerar si cada proposición del lenguaje de programación comienza con una
palabra clave diferente (excepto la proposición de asignación, por supuesto). Sin embargo,
es indispensable lo siguiente:

El compilador debe recuperarse de los errores sin perder demasiada información;

Y sobre todo, el compilador debe producir un mensaje de error que permita al programador
encontrar y corregir fácilmente los elementos (sintácticamente) incorrectos de su programa.

Errores Sintácticos.

Muchos errores de naturaleza sintáctica Recuperación: Al producirse un error el compilador


debe ser capaz de informar del error y seguir compilando. (Ideal).

El manejo de errores de sintaxis es el más complicado desde el punto de vista de la creación


de compiladores. Nos interesa que cuando el compilador encuentre un error, se recupere y
siga buscando errores. Por lo tanto, el manejador de errores de un analizador sintáctico debe
tener como objetivos:

Los lenguajes de programación y los sistemas computacionales manejan y responden a los


errores que pueden ocurrir durante la ejecución de un programa.

14
Cuando se escribe un programa, es común cometer errores, ya sea por errores de sintaxis
(errores en la estructura del código) o errores lógicos (errores en la lógica o el razonamiento
del programa). Estos errores pueden provocar que el programa se comporte de manera
inesperada o incluso se bloquee por completo. El manejo de errores es una técnica que se
utiliza para detectar, informar y responder adecuadamente a los errores en un programa.

5.10 GENERADORES DE ANALIZADORES SINTACTICOS

ANTLR:

(ANother Tool for Language Recognition; en español "otra herramienta para reconocimiento
de lenguajes") es una herramienta creada principalmente por Terence Parr, que opera sobre
lenguajes, proporcionando un marco para construir reconocedores (parsers), intérpretes,
compiladores y traductores de lenguajes a partir de las descripciones gramaticales de los
mismos (conteniendo acciones semánticas a realizarse en varios lenguajes de
programación).

GNU bison:

Es un programa generador de analizadores sintácticos de propósito general perteneciente al


proyecto GNU disponible para prácticamente todos los sistemas operativos, se usa
normalmente acompañado de flex aunque los analizadores léxicos se pueden también
obtener de otras formas.

Gramática:

Es un generador de analizadores sintácticos de C# y Java libre. Es similar a otras


herramientas como Yacc o ANTLR. Gramática soporta el algoritmo LL(k) para gramáticas
con un número ilimitado de tokens de anticipación. Está bastante bien probado, y ha sido
auto compilado desde la versión 0.1. La documentación contiene una lista completa de
características, así como una comparación con otros generadores de analizadores.

15
JavaCC:

(Java Compiler Compiler) es un generador de analizadores sintácticos de código abierto para


el lenguaje de programación Java. JavaCC es similar a Yacc en que genera un parser para
una gramática presentada en notación BNF, con la diferencia de que la salida es en código
Java. A diferencia de Yacc, JavaCC genera analizadores descendentes (top-down), lo que lo
limita a la clase de gramáticas LL (K) (en particular, la recursión desde izquierda no se puede
usar). El constructor de árboles que lo acompaña, JJTree, construye árboles de abajo hacia
arriba (bottom-up).

Yacc:

Es un programa para generar analizadores sintácticos. Las siglas del nombre significan Yet
Another Compiler-Compiler, es decir, "Otro generador de compiladores más". Genera un
analizador sintáctico (la parte de un compilador que comprueba que la estructura del código
fuente se ajusta a la especificación sintáctica del lenguaje) basado en una gramática analítica
escrita en una notación similar a la BNF. Yacc genera el código para el analizador sintáctico
en el Lenguaje de programación C.

Las herramientas y técnicas utilizadas para generar analizadores sintácticos automáticos a


partir de una descripción formal de la gramática de un lenguaje. Estos analizadores
sintácticos son parte importante en la construcción de compiladores y otros sistemas de
procesamiento de lenguajes de programación.

Un analizador sintáctico es responsable de analizar una secuencia de tokens (símbolos


léxicos) generados por el analizador léxico, y determinar si dicha secuencia cumple con la
estructura sintáctica definida por la gramática del lenguaje. Un generador de analizadores
sintácticos permite automatizar la generación de este tipo de analizadores a partir de una
descripción formal de la gramática.

16
CONCLUSIONES

En la unidad 5 sobre análisis sintáctico en la materia de Lenguajes y Autómatas, se ha dado


la importancia y los fundamentos del análisis sintáctico en la construcción de compiladores y
otros sistemas de procesamiento de lenguajes de programación. En general en esta unidad,
se han abordado conceptos clave como la gramática formal, los analizadores sintácticos y los
generadores de analizadores sintácticos.

El análisis sintáctico es una etapa crucial en el proceso de compilación, ya que se encarga


de verificar si una secuencia de símbolos léxicos cumple con la estructura gramatical definida
por la gramática del lenguaje. Esto permite detectar errores sintácticos y garantizar que el
programa esté correctamente estructurado.

17

También podría gustarte