Introducción ............................................................................................... 2
Especificación sentica ............................................................................ 2
Especificación natural o informal ............................................................ 2
Especificación formal .............................................................................. 3
Metalenguajes de especificación semántica ........................................ 3
Gramáticas Atribuidas o con Atributos ................................................. 4
Evaluación de atributos ........................................................................ 5
2
Introducción
Los lingüistas estudian los lenguajes naturales que surgen de la necesidad de comunicación
entre individuos.
El estudio de los lenguajes formales involucra la definición y el análisis de sus componentes, su
sintaxis, y su semántica.
Recordando:
Análisis Léxico: componentes del lenguaje.
Análisis Sintáctico: estructura de sentencias. Es el conjunto de reglas formales que especifican
la estructura de los programas pertenecientes a dicho lenguaje.
Análisis Semántico: significado de sentencias. En un lenguaje de programación, la semántica
está representada por el conjunto de reglas que especifican el significado de toda sentencia
sintácticamente correcta del lenguaje. Haciendo uso de información parcial del
comportamiento, realiza comprobaciones para asegurarse de que el programa pertenece a ese
lenguaje.
Especificación sentica
Existen dos formas de describir los contenidos semánticos:
Especificación natural o informal
Usa lenguaje natural para definir las características semánticas que no sean deducibles de una
gramática que describe el lenguaje. Permite así que sea entendible por cualquier persona. La
desventaja es que el proceso es lento y por consecuencia no induce a la implementación
3
Especificación formal
Define el significado de las sentencias de un programa y de los programas completos mediante
una formulación matemática:
Significado de un programa = comportamiento al ejecutarlo
Entonces se tiene que explicar cual es el resultado obtenido al ejecutar el programa, utilizando
símbolos y procedimientos matemáticos: definir signos, funciones, conjuntos, modelos, etc.
La especificación formal es necesaria para:
Diseñar nuevos lenguajes de programación
Estandarizar lenguajes mediante la publicación de su semántica
Diseñar e implementar procesadores de nuevos lenguajes y generadores de
compiladores.
Identificar posibles ambigüedades en las implementaciones de los procesadores de
lenguajes de programación o sus documentos
Comprensión de los lenguajes por parte de programadores
Verificación de propiedades de programas a través de pruebas de corrección.
La sintaxis se realiza usando notación BNF (Backus-Naur Form)
En cuanto a la semántica, no existe una notación estándar para especificar
La especificación formal tiene además dos enfoques:
Metalenguajes de especificación semántica
Definen modelos (semántica operacional o denotacional) o propiedades (axiomáticos,
algebraicos, o de acciones)
Metalenguajes
Descripción
Operacional
Describe mo interpretar un programa a través de pasos de calculo u
operaciones (asociando código a cada regla sintáctica). Usan reglas de
inferencia premisa (el resultado de evaluar una expresión produce un
valor) y conclusión (dado un estado, la asignación de una expresión a un
identificador, produce un nuevo resultado)). Se centra en el ¿Cómo?
Cercano a la implementación
Denotacional
Describe el significado de una sentencia por una función, que, actuando
sobre algún conjunto, produzca como salida el resultado que debería dar la
sentencia. Se centra en el resultado y no en el ¿Cómo?
Axiomático
Describe el lenguaje de programación como un sistema axiomático (términos
primitivos, axiomas, definiciones) que permita obtener el resultado del
programa como una deducción desde los datos de entrada (teorema). Se
centra en verificar propiedades y corregir.
Algebraico
Describe el significado de las sentencias como el resultado de aplicar
operaciones a la estructura de datos. No induce a implementación.
De acciones
Operaciones habitualmente previstas en los lenguajes de programación.
Primitivas
operaciones que se hacen sobre los registros, directamente
sobre la BIOS (no se pueden modificar), con el fin de asignar y declarar
variables, y combinar instrucciones mediante el control de flujo secuencial,
condicional e iterativo. Induce a implementación.
4
Gramáticas Atribuidas o con Atributos
También llamada Semántica dirigida por sintaxis, propuesta por Donal Knuth, para definir
especificaciones semánticas de los lenguajes de programación.
Se centra en gramáticas tipo 2: independientes del contexto.
Se incorporan atributos a los símbolos terminales y no terminales, reglas o acciones
semánticas, y condiciones a cumplir.
Atributo: propiedad de un símbolo. Ej: tipo de variable, valor, dirección de memoria de
variable, numero de argumentos de una función, tipos de argumentos, identificador de clase,
punteros.
R(P): especifican la forma en que se modifican los atributos al aplicar R(P).
C(P): deben ser cumplidas por los valores de A. Una sentencia es sintáctica y semánticamente
correcta si y solo si satisface C(P)
¿Cómo funciona?
El análisis sintáctico de una cadena αϵ∑
T
*
determina si pertenece o no al lenguaje L generado
por la gramática, construyendo la derivación o el árbol de análisis sintáctico de α. Verifica en
cada producción de P la satisfacción de las reglas semánticas R(P) y de las condiciones C(P).
5
Evaluación de atributos
Las propiedades de los atributos deben ser evaluadas, es decir, se debe reconocer el orden en
que serán ejecutadas las R(P) para todas las sentencias, con el fin de asignar los valores a los
atributos.
Según la forma de calcular el valor con el árbol de derivación, tenemos 2 mecanismos:
Síntesis:
atributos
sintetizados
AS()
La evaluación es con un ASA, ya que
evalúa los atributos al mismo tiempo que
la sentencia.
Los atributos del padre (izquierda) son
evaluados a partir de la parte del hijo
(derecha).
Cuando todos los atributos son
sintetizados se trata de una Gramática S-
Atribuida.
Herencia:
atributos
heredados.
AH()
La evaluación es con un ASD.
Se asigna un valor a un atributo del nodo
hijo, para que, en aquellas reglas que éste
aparezca en la parte izquierda de la
producción, herede el valor asignado.
Si se pueden evaluar todos los atributos
de todas las sentencias de una gramática,
se dice que está bien definida o es no
circular.
Una gramática es L-Atribuida si se ha evaluado AH() y AS()
Entonces, una gramática S-Atribuida es un subconjunto de las L-Atribuidas
Resumen Unidad 2 Teórico.pdf
browser_emoji Estamos procesando este archivo...
browser_emoji Lamentablemente la previsualización de este archivo no está disponible. De todas maneras puedes descargarlo y ver si te es útil.
Descargar
. . . . .