analisis sintactico en un compilador
gramaticas de libre contexto
ejemplos de gramaticas de libre contexto
como crear una gramatica de libre contexto
funciones de una analizador sintatctico
dificultades para crea una gramatica de libre contexto
analisis sintactico en un compilador
gramaticas de libre contexto
ejemplos de gramaticas de libre contexto
como crear una gramatica de libre contexto
funciones de una analizador sintatctico
dificultades para crea una gramatica de libre contexto
Es un curso autoinstructivo dirigido a estudiantes y profesionales que necesitan ayuda para lograr competencias en un determinado curso o asignatura.
Mas información sobre el curso en: www.anival.net
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxYahirSnchezDjMix
Esta es una investigación acerca de los errores léxicos y los generadores y analizadores léxicos, dando a conocer los conceptos principales y los diagramas de desarrollo de cada uno de ellos.
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analizadores Léxicos
Presentación de la Materia Lenguajes y Automatas I
En el Tec de Comitan
Carlos Daniel Loria Jimenez
21700205
Ingenieria en sistemas computacionales 5A
4.4 Errores léxicos
4.5 Generadores de analiza
Para mayor comprencion de los conceptos basicos de la compilacion en referencia al analisis sintactico, se responde alguna de las principales preguntas del tema.
Documento sobre las diferentes fuentes que han servido para transmitir la cultura griega, y que supone la primera parte del tema 4 de "Descubriendo nuestras raíces clásicas", optativa de bachillerato en la Comunitat Valenciana.
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMJuan Martín Martín
Examen de Selectividad de la EvAU de Geografía de junio de 2023 en Castilla La Mancha. UCLM . (Convocatoria ordinaria)
Más información en el Blog de Geografía de Juan Martín Martín
http://blogdegeografiadejuan.blogspot.com/
Este documento presenta un examen de geografía para el Acceso a la universidad (EVAU). Consta de cuatro secciones. La primera sección ofrece tres ejercicios prácticos sobre paisajes, mapas o hábitats. La segunda sección contiene preguntas teóricas sobre unidades de relieve, transporte o demografía. La tercera sección pide definir conceptos geográficos. La cuarta sección implica identificar elementos geográficos en un mapa. El examen evalúa conocimientos fundamentales de geografía.
Ponencia en I SEMINARIO SOBRE LA APLICABILIDAD DE LA INTELIGENCIA ARTIFICIAL EN LA EDUCACIÓN SUPERIOR UNIVERSITARIA. 3 de junio de 2024. Facultad de Estudios Sociales y Trabajo, Universidad de Málaga.
LA PEDAGOGIA AUTOGESTONARIA EN EL PROCESO DE ENSEÑANZA APRENDIZAJEjecgjv
La Pedagogía Autogestionaria es un enfoque educativo que busca transformar la educación mediante la participación directa de estudiantes, profesores y padres en la gestión de todas las esferas de la vida escolar.
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁClaude LaCombe
Recuerdo perfectamente la primera vez que oí hablar de las imágenes subliminales de los Testigos de Jehová. Fue en los primeros años del foro de religión “Yahoo respuestas” (que, por cierto, desapareció definitivamente el 30 de junio de 2021). El tema del debate era el “arte religioso”. Todos compartíamos nuestros puntos de vista sobre cuadros como “La Mona Lisa” o el arte apocalíptico de los adventistas, cuando repentinamente uno de los participantes dijo que en las publicaciones de los Testigos de Jehová se ocultaban imágenes subliminales demoniacas.
Lo que pasó después se halla plasmado en la presente obra.
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
Analizador Léxico, Analizador Sintáctico
1. CIS-IXB-001
UNIVERSIDAD
NACIONAL
DE LOJA
´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables
Carrera de Ingenier´ıa en Sistemas
”ANALIZADOR LEXICO
ESTRUCTURA ARCHIVO JFLEX”
Tarea 1
Noveno B
Autor:
• Raul-Gomez
Docente: Ing. Henry-Paz,
Tarea de C. Por Raul-Gomez is licensed Under a Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Fecha: December 15, 2014
LOJA ECUADOR
1
2. 1 Analizador L´exico
Se encarga de buscar los componentes l´exicos o palabras que componen el programa
fuente, seg´un unas reglas o patrones. La entrada del analizador l´exico podemos definirla
como una secuencia de caracteres.
Figure 1: Estructura Lexica
• gram´atica (N, T, P, S)
• N S´ımbolos no terminales.
• T S´ımbolos terminales
• P Reglas de producci´on
• S Axioma inicial
El analizador l´exico tiene que dividir la secuencia de caracteres en palabras con
significado propio y despu´es convertirlo a una secuencia de terminales desde el punto de
vista del analizador sint´actico, que es la entrada del analizador sint´actico. El analizador
l´exico reconoce las palabras en funci´on de una gram´atica regular de manera que sus NO
TERMINALES se convierten en los elementos de entrada de fases posteriores. En LEX,
por ejemplo, esta gram´atica se expresa mediante expresiones regulares.
1.1 Funci´on del analizador l´exico.
El analizador l´exico es la primera fase de un compilador. Su principal funci´on consiste
en leer los caracteres de entrada y elaborar como salida una secuencia de componentes
l´exicos que utiliza el analizador sint´actico para hacer el an´alisis. Esta interacci´on, suele
aplicarse convirtiendo al analizador l´exico en una subrutina o corrutina del analizador
sint´actico. Recibida la orden “Dame el siguiente componente l´exico”del analizador
sint´actico, el analizador l´exico lee los caracteres de entrada hasta que pueda identificar
el siguiente componente l´exico.
• Eliminar los comentarios del programa.
• Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en general, todo
aquello que carezca de significado seg´un la sintaxis del lenguaje.
2
3. Figure 2: Interacci´on de un analizador l´exico con el analizador sint´actico
• Reconocer los identificadores de usuario, n´umeros, palabras reservadas del lenguaje,
..., y tratarlos correctamente con respecto a la tabla de s´ımbolos (solo en los casos
que debe de tratar con la tabla de s´ımbolos).
• Llevar la cuenta del n´umero de l´ınea por la que va leyendo, por si se produce alg´un
error, dar informaci´on sobre donde se ha producido.
• Avisar de errores l´exicos. Por ejemplo, si @ no pertenece al lenguaje, avisar de un
error.
• Puede hacer funciones de preprocesador.
Adem´as el analizador l´exico es responsable de:
• Manejo de apertura y cierre de archivo, lectura de caracteres y gesti´on de posibles
errores de apertura.
• Eliminar comentarios, espacios en blanco, tabuladores y saltos de l´ınea.
• Inclusi´on de archivos y macros.
• Contabilizar n´umero de l´ıneas y columnas para emitir mensajes de error.
1.2 Componentes L´exicos, Patrones y Lexemas
El analizador lexicogr´afico puede tener la siguiente estructura:
Figure 3: Interacci´on de componentes
3
4. Donde cada acci´on es un fragmento de programa que describe cual ha de ser la acci´on
del analizador l´exico cuando la secuencia de entrada coincida con la expresi´on regular.
En la fase de an´alisis, los t´erminos componentes l´exicos (token), patr´on y lexema se
emplean con significados espec´ıficos. Un analizador l´exico, inicialmente lee los lexemas y
le asigna un significado propio.
Componente l´exico es la secuencia l´ogica y coherente de caracteres relativo a una
categor´ıa: identificador, palabra reservada, literales (cadena/num´erica), operador o
car´acter de puntuaci´on, adem´as de que un componente l´exico puede tener uno o varios
lexemas.
Patr´ones una regla que genera la secuencia de caracteres que puede representar a un
determinado componente l´exico (expresi´on regular).
Lexema es una cadena de caracteres que concuerda con un patr´on que describe un
componente l´exico (valor de cadena). Ejemplo de una cadena de c´odigo: const pi =
3.1416;
Ej: 8, 23, 50 ( son lexemas que encajan con el patr´on ( 0 — 1 — 2 — ... — 9) + ).
Una vez detectado que un grupo de caracteres coincide con un patr´on, se ha detectado
un lexema. A continuaci´on se le asocia un n´umero, que se le pasar´a al sint´actico, y, si es
necesario, informaci´on adicional, como puede ser una entrada en la tabla de s´ımbolos.
La tabla de s´ımbolos suelen ser listas encadenadas de registros con parte variable: listas
ordenadas, ´arboles binarios de b´usqueda, tablas hash, etc.
Lexemas Componente l´exico Patr´on
const const const
= relaci´on ¡ o ¡= o = o ¡¿ o ¿ o ¿=
Pi identificador letra seguida de letras o n´umeros
3.1416 n´umero cualquier literal num´erica
“hola mundo” literal caracteres entre comillas
<identificador, atributo para el s´ımbolo E>
<op_asignacion>
<identificador, atributo para el s´ımbolo M>
<op_multiplica>
<identificador, apuntador al s´ımbolo C>
<op_exponente>
<numero, atributo valor 2>
1.3 Analizador Sint´actico
Este analizador se encarga de formar componentes sint´acticos del lenguaje fuente. En
definitiva, nos permitir´a saber si un texto concreto pertenece al conjunto de posibles
textos de un lenguaje. Para implementar un analizador sint´actico necesitamos una
gram´atica que nos proporcione la especificaci´on sint´actica del lenguaje fuente. Una
gram´atica est´a formado por una serie de reglas. Cada regla tiene una parte izquierda y
una parte derecha. Si se reconoce la parte derecha de una regla, se puede sustituir todo
por la parte izquierda de la misma regla. Las reglas est´an formadas por dos tipos de
s´ımbolos:
4
5. • No terminales: tambi´en llamados variables y que se expanden en partes derechas de
otras reglas.
• Terminales: son tokens de la especificaci´on l´exica. Ejemplo: queremos especificar la
sintaxis de operaciones aritm´eticas de n´umeros enteros. Las operaciones en cuesti´on
son la suma y la resta. Una primera aproximaci´on podr´ıa ser: E E + E E E – E
E nint Los tokens son: +: el signo m´as (suma) -: el signo menos (resta) nint: un
n´umero entero, cuya expresi´on regular ser´ıa [0-9]* Sin embargo, esta gram´atica no
es v´alida ya que es ambigua. La ambiguedad es un problema bastante importante
ya que implica que puede haber m´as de un ´arbol de derivaci´on para encontrar
una misma cadena. No se pueden implementar analizadores mediante gram´aticas
ambiguas, ya que aparecer´ıan conflictos. Veamos dos ´arboles de derivaci´on con la
primera gram´atica para formar la expresi´on 1+1:
Figure 4: Comprobacion de un analizador sintaxico
La ambiguedad es bastante dif´ıcil de detectar. Para ello se definen una serie de
subconjuntos de gram´aticas, y a la hora de dise˜nar el analizador podemos detectar
dicha ambiguedad. En nuestro caso interesa usar las gram´aticas SLR a partir de las
cuales se pueden implementar analizadores sint´acticos ascendentes. La gram´atica
anterior en SLR ser´ıa: E E + T E E - T E T T nint
1.4 Analisis Sem´antico
Sem´antica: conjunto de reglas que especifican el significado de cualquier sentencia
sint´acticamente correcta y escrita en un determinado lenguaje. El an´alisis sem´antico,
a diferencia de otras fases, no se realiza claramente diferenciado del resto de las tareas
del compilador. Fase en la que se obtiene informaci´on necesaria para la compilaci´on
tras conocer la estructura sint´actica del programa. Completa las fases de an´alisis
l´exico y sint´actico incorporando comprobaciones que no pueden asimilarse al mero
reconocimiento de una cadena dentro de un lenguaje.
Errores sem´anticos de un programa: Conversiones de tipos no permitidas
int x;
x = 4.32;
Error: Ej1.java [6:1] possible loss of precision
{ Variables usadas y no definidas
5
6. { Operandos de tipos no compatibles
if (x || 5) x = 0;
Error: Ej2.java [7:1] operator || cannot be applied to int,int
El an´alisis sem´antico se divide en dos categor´ıas:
– An´alisis de la exactitud del programa para garantizar una ejecuci´on adecuada.
– Algunos lenguajes (Lisp, Smalltallk) pueden no tener an´alisis est´atico.
– Por ejemplo, ADA es un lenguaje con fuertes restricciones para que un pro-
grama sea ejecutable.
– An´alisis para mejorar la eficiencia (optimizaci´on del programa traducido)
2 Jflex
Lex es un programa para generar analizadores l´exicos (en ingl´es scanners o lexers).
Lex se utiliza com´unmente con el programa yacc que se utiliza para generar an´alisis
sint´actico. Lex, escrito originalmente por Eric Schmidt y Mike Lesk, es el analizador
l´exico est´andar en los sistemas Unix, y se incluye en el est´andar de POSIX. Lex
toma como entrada una especificaci´on de analizador l´exico y devuelve como salida
el c´odigo fuente implementando el analizador l´exico en C.
Aunque tradicionalmente se trata de software propietario, existen versiones libres
de lex basadas en el c´odigo original de ATT en sistemas como OpenSolaris y Plan
9 de los laboratorios Bell. Otra versi´on popular de software libre de lex es Flex.
2.1 Estructura de un archivo de lex
La estructura de un archivo de lex es intencionadamente similar a la de un archivo
del yacc; los archivos se dividen en tres secciones, separadas por l´ıneas que contienen
solamente dos s´ımbolos
"%", como sigue:
Secci´on de declaraciones
%%
Secci´on de reglas
%%
Secci´on de c´odigo en C
Lo siguiente es un ejemplo de archivo lex para la versi´on Flex de lex. Reconoce
cadenas de n´umeros (n´umeros enteros) en la entrada, y simplemente los imprime en
la salida.
6
7. /*** Secci´on de declaraciones ***/
%{
/* C´odigo en C que ser´a copiado */
#include <stdio.h>
%}
/* Esto indica a Flex que lea s´olo un fichero de entrada */
%option noyywrap
%%
/*** Secci´on de reglas ***/
/* [0-9]+ identifica una cadena de uno o m´as d´ıgitos */
[0-9]+ {
/* yytext es una cadena que contiene el texto coincidente. */
printf("Encontrado un entero: %sn", yytext);
}
. { /* Ignora todos los dem´as caracteres. */ }
%%
/*** Secci´on de c´odigo en C ***/
int main(void)
{
/* Ejecuta el ’’lexer’’, y despu´es termina. */
yylex();
return 0;
}
Si se da esta entrada a flex, ser´a convertida en un archivo de C, lex.yy.c. Esto se
puede compilar en un ejecutable que encuentre y haga salir cadenas de n´umeros
enteros. Por ejemplo, dando la entrada:
abc123z.!&*2ghj6
el programa imprimir´a:
Encontrado un entero: 123
Encontrado un entero: 2
Encontrado un entero: 6
7
8. 3 BIBLIOGRAFIA
References
[1] Juan Marcos Sacrist´an Donoso “Desarrollo de compiladores”. 2008. Ensenanza
informatica.Disponible en: http://megazar.tripod.com/compil.pdf
[2] Alfred V. Aho,Ravi Sethi,Jeffrey D. Ullman “Compiladores: principios,
t´ecnicas y herramientas”. 1998. (impreso en mexico) 53519 Naucalpan de
Juares, Edo. Mexico. Disponible en: https://books.google.com.ec/books?
id=yG6qJBAnE9UC&pg=PA86&lpg=PA86&dq=compiladores+lexico&source=
bl&ots=rsWPT13_jQ&sig=4xTPyW6bjHW0UvLJNCDs6Vo5cco&hl=es&sa=X&ei=
UVePVLW8CIueNsCjg7gD&ved=0CFkQ6AEwCQ#v=onepage&q=compiladores%
20lexico&f=false
[3] Jeffrey D. Ullaman . ”Traductores, Compiladores e Interpretes. ”. 2012. De-
partamento de Lenguajes y Automatas. Universidad de Sevilla. Disponible en:
https://www.lsi.us.es/docs/doctorado/memorias/TESINA-Roche.pdf
[4] Louden, K.C (2010)Construccion de Compiladores”. Disponible en:
http://centrodeartigo.com/articulos-noticias-consejos/article_
126048.html
8