Sintaxis y Semántica. S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta.

Slides:



Advertisements
Presentaciones similares
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
Advertisements

Ejemplo Práctico de un Compilador Pequeño
Filminas Segunda semana
Compiladores e intérpretes Generación de código intermedio II
Compiladores e intérpretes
Compiladores e intérpretes Análisis Sintáctico III
Gramáticas Libres de Contexto
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Gramáticas.
Análisis Lexicográfico
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Teoría de Autómatas y Compiladores
Notación BNF Backus-Naur Form.
¿Cómo hacer para que una máquina comprenda el LN?
Unidad 2. Análisis léxico
Teoría de lenguajes y compiladores
Tema 1.- Lenguajes. Gramáticas
Traducción dirigida por la Sintaxis
2º curso Ingeniería Técnica en Informática de Sistemas UNED
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Ciencias de la Computación I
Teoría de lenguajes y compiladores
Tema 1.- Lenguajes. Gramáticas
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Algoritmos para calcular el Conjunto Primero y el Conjunto Siguiente
Programación de sistemas
INTRODUCCIÓN A LA COMPUTACIÓN 12va Semana – 19va Sesión Miércoles 18 de Mayo del 2005 Juan José Montero Román
M.C. Meliza Contreras González
Análisis sintáctico LR: SLR (LR simple)
Lenguajes Independientes del Contexto
M.C. Juan Carlos Olivares Rojas
Autómatas de Pila Teoría del Autómata.
ANALISIS SINTACTICO Parte I
Clasificación de Gramáticas y Manejo de Errores
ESTRUCTURA DE DATOS ESD-243
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
Teoría de lenguajes y compiladores
Procesadores de Lenguajes
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Introducción al Análisis Sintáctico
Tema 2 Autómatas finitos 1. Autómata finito determinista
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Teoría de lenguajes y compiladores Analizadores lexicográficos
Teoría de Autómatas I 2º curso Ingeniería Técnica en Informática de Sistemas UNED.
Programación de Sistemas
COMPUTABILIDAD Y COMPLEJIDAD 1. Conceptos básicos (revisión). 2. Gramáticas independientes de contexto. 3. Propiedades de los lenguajes independientes.
Análisis Léxico Área Software de Base.
Lenguajes Formales y Autómatas
Autómatas de Pila (Pushdown Automatón)
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
Términos algoritmo diseñar algoritmo implementar algoritmo
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Teoría de lenguajes y compiladores
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
Elaboración de algoritmos usando lógica de programación
El proceso de compilación
Unidad 3 Analizador Sintáctico
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Universidad Valle del Momboy Carvajal, Trujillo Alumnas Luzmila.
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
Transcripción de la presentación:

Sintaxis y Semántica

S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta

S.Takahashi Lexer while (i<=5) x = x+i ; w hi le WHILE ( ABRIR_P i ID(“i”) < LTE 5 INT(5) ) Cerrar_P x ID("x") = EQ x ID("x") + PLUS i ID("i") ; PYC =

S.Takahashi Lexer while (i<5) x = x+i 55 temp * w hi le WHILE ( ABRIR_P i ID(“i”) < LT 5 INT(5) ) Cerrar_P x ID("x") = EQ x ID("x") + PLUS i ID("i") 5 5 INT(55) t e mp ID(“temp”) * star

S.Takahashi Definición: Alfabeto Un conjunto finito de símbolos: {a,b,c,d} {0,1,2,34,5,6,7,8,9} {identificador, número, +,-,*, /} {while, if, ‘{‘, ‘}’, >, >=, <, <= } { TipoTransacción, IdSucursal, NumCuenta,Cantidad}

S.Takahashi Definición: cadena o palabra de un alfabeto Secuencia finita de símbolos de un alfabeto Definición recursiva (Cadena de un alfabeto A) La cadena vacía (λ) es una cadena sobre cualquier alfabeto Si β es una cadena de A y σ  A entonces σβ es una cadena de A

S.Takahashi Ejemplo: cadena o palabra de un alfabeto A= {id, num, +,-,*, /,(,)} id * (id + id*num – num) id * (id + id*num id id num( ) λ

S.Takahashi Ejemplo: cadena o palabra de un alfabeto A= {a,b,c} a aab λ acab

S.Takahashi Operaciones sobre cadenas: Longitud: # #.λ = 1 + #.β Concatenación: ωβ 0 #.σβ = λ = σ(βω) 0 (σβ)ω =

S.Takahashi Definición: Lenguaje Conjunto de cadenas de un alfabeto.

S.Takahashi Sintaxis n Forma correcta de escribir programas n Formalismo para describir la forma de los programes bien escritos n Gramáticas - reglas que describen cómo construir todas las palabras en un lenguaje dado n Ejemplos

S.Takahashi Semántica n Significado de las estructuras semánticas del programa n Describe el comportamiento de los programas n Describe cómo debe traducirse al lenguaje de máquina

S.Takahashi Gramáticas: formalismo para definir sintaxis Define la forma que deben tener los las cadenas que pertenecen a un lenguaje Generalmente se usan para determinar si un programa es correcto sintácticamente También pueden usarse para la reingeniería reversa y para la reestructuración

S.Takahashi Un ejemplo más fácil n Una expresión aritmética entera –Un número o una constante entera –Si A y B son expresiones aritméticas las siguientes también son expresiones aritméticas  A + B  A * B  A -B  A / B  A % B  (A)  -A

S.Takahashi Definición 1: Gramática Independiente del contexto Una gramática es una 4-tupla (N,T,S,P) donde: N es un conjunto de símbolos no-terminales, T es un conjunto de símbolos terminales, S es un símbolo no-terminal denominado símbolo distinguido (S  N) P es un conjunto de producciones.

S.Takahashi Producciones Una producción es una regla con de la forma β   donde: A  N,  (N  T)* Β  (N  T)*.

S.Takahashi Definición 3: Derivable en 1 paso Dada una gramática independiente del contexto con (ω   ) una producción. La producción indica que si tenemos una cadena de la forma  ω , podemos obtener , reemplazando ω por . En este caso, se dice que  es derivable en un paso de  ω  y escribimos:  ω  .

S.Takahashi Derivable Dadas dos cadenas  0 y  n, decimos que  n es derivable (en cero o más pasos) de  0, y escribimos  0  *  n si se puede llegar de  0 a  n, por sucesivos reemplazos usando reglas de producción.

S.Takahashi Lenguaje generado Dada una gramática independiente del contexto G=(N,T,S,P), el lenguaje generado por la gramática es el conjunto de todas las cadenas derivables a partir de S L(G) = {  :  T*, S  *  }

S.Takahashi El ejemplo n G =({E,T,F,S}, {num,id,+,(,),-}, E, P) n P: – E  E + T – E  T – T  T*F – T  F – F  S – F  - S – S  ( E ) – S  i d –S  num

S.Takahashi Ejemplo 35 + (10+30*4)  E + T E  E + F  E + ( E )  E + ( E + T )  E + ( E + T * F )  E + ( E + T * num(4) )  E + ( E + F * num(4) )  E + ( E + num(30) * num(4) )  E + ( T + num(30) * num(4) )  E + ( F + num(30) * num(4) )  E + ( num(10) + num(30) * num(4) )  T + ( num(10) + num(30) * num(4) )  F + ( num(10) + num(30) * num(4) )  num(35) + ( num(10) + num(30) * num(4) )