7
SEMANTICA OPERACIONAL Y ESTRUCTURAL Universidad Nacional de Trujillo Sede Valle del Jequetepeque Escuela de Informática IX Ciclo Semántica Formal RESUMEN: Una semántica es el modelo matemático que permita comprender y razonar sobre el comportamiento de los programas de un lenguaje. La semántica operacional estructural describe formalmente cómo los pasos individuales de un cálculo se realizan en un sistema informático. La forma más común de de nir el signi cado de las construcciones de un lenguaje es por medio de explicaciones en una lengua natural (inglés, generalmente). Sin embargo, el lenguaje natural se presta a las ambigüedades y éstas, a los errores o a las divergencias entre las diferentes implementaciones de un mismo lenguaje. Para evitar estos problemas, se usan reglas de semántica operacional estructural o SOE. PALABRAS CLAVES: Semántica Operacional Estructural (SOE), programación imperativa, estados de memoria, comandos, expresiones. 1. INTRODUCCIÓN En la informática, una semántica es el modelo matemático que permita comprender y razonar sobre el comportamiento de los programas de un lenguaje. Las semánticas operacionales estructurales son un marco introducido originalmente por G. D. Plotkin a principios de la década de los ochenta, en el cual la semántica operacional de un lenguaje de programación se especi ca de forma lógica, independiente de la arquitectura de una maquina o de detalles de implementación, por medio de reglas que proporcionan una de nición inductiva basada en la estructura de las expresiones del lenguaje. Dirigimos al lector al libro de M. Hennessy “The Semantics of Programming Languages: An Elementary Introduction Using Structural Operational

SEMANTICA OPERACIONAL Y ESTRUCTURAL

Embed Size (px)

DESCRIPTION

semantica Operacional y estructural

Citation preview

Page 1: SEMANTICA OPERACIONAL Y ESTRUCTURAL

SEMANTICA OPERACIONAL Y ESTRUCTURAL

Universidad Nacional de TrujilloSede Valle del Jequetepeque

Escuela de InformáticaIX Ciclo

Semántica Formal

RESUMEN:

Una semántica es el modelo matemático que permita comprender y razonar sobre el comportamiento de los programas de un lenguaje.La semántica operacional estructural describe formalmente cómo los pasos individuales de un cálculo se realizan en un sistema informático.La forma más común de definir el significado de las construcciones de un lenguaje es por medio de explicaciones en una lengua natural (inglés, generalmente).Sin embargo, el lenguaje natural se presta a las ambigüedades y éstas, a los errores o a las divergencias entre las diferentes implementaciones de un mismo lenguaje.Para evitar estos problemas, se usan reglas de semántica operacional estructural o SOE.

PALABRAS CLAVES: Semántica Operacional Estructural (SOE), programación imperativa, estados de memoria, comandos, expresiones.

1. INTRODUCCIÓN

En la informática, una semántica es el modelo matemático que permita comprender y razonar sobre el comportamiento de los programas de un lenguaje.Las semánticas operacionales estructurales son un marco introducido originalmente por G. D. Plotkin a principios de la década de los ochenta, en el cual la semántica operacional de un lenguaje de programación se especifica de forma lógica, independiente de la arquitectura de una maquina o de detalles de implementación, por medio de reglas que proporcionan una definición inductiva basada en la estructura de las expresiones del lenguaje. Dirigimos al lector al libro de M. Hennessy “The Semantics of Programming Languages: An Elementary Introduction Using Structural Operational Semantics” [Hen90], donde se presenta una introducción clara al tema.La semántica operacional estructural describe formalmente cómo los pasos indivi-duales de un cálculo se realizan en un sistema informático. La semántica operacio-nal en un lenguaje de programación describe cómo un programa válido se interpre-ta como secuencias de pasos de cálculo. Estas secuencias son, pues, el significado del programa. En el contexto de los programas funcionales, el paso final en una se-cuencia de terminación devuelve el valor del programa.

2. CONCEPTOS BASICOS

Page 2: SEMANTICA OPERACIONAL Y ESTRUCTURAL

Semántica Operacional

• Énfasis en explicar cómo se ejecuta en una máquina abstracta.• Especiación de expresiones y comandos dirigidos por sintaxis• Describe el comportamiento de los programas de un lenguaje.• Separa evaluación de ejecución – modelo de máquina abstracta.• Cumple como notación formal para la implantación del lenguaje “alcanzas” el len-guaje si implantas su semántica operacional.• Permite demostrar algunas propiedades del lenguaje equivalencia entre coman-dos suele ser la de interés.

Técnicas complementarias

• Útil para los implementadores de un lenguaje.

• Soporte a la construcción de axiomas semánticos.

Semántica operacional estructural

La forma más común de definir el significado de las construcciones de un lenguaje es por medio de explicaciones en una lengua natural (inglés, generalmente).Sin embargo, el lenguaje natural se presta a las ambigüedades y éstas, a los erro-res o a las divergencias entre las diferentes implementaciones de un mismo lengua-je.Para evitar estos problemas, aquí se usarán reglas de semántica operacional es-tructural o SOE, para abreviar.Una regla de inferencia tiene la forma siguiente:

Donde p1,. . ., pn son las premisas y q es la conclusiónLas reglas de SOE son un tipo particular de reglas de inferencia en las que las pre-misas y la conclusión son transiciones.Una transición tiene la forma α → β

La forma concreta de las expresiones α y β, así como las transiciones aceptables, se definirán más adelante.

¿Qué es la programación imperativa?

IMP es un lenguaje imperativo típico: el comando básico es la asignación de valor a las localidades de la memoria de la computadora.

Page 3: SEMANTICA OPERACIONAL Y ESTRUCTURAL

Para definir el significado de una asignación se parte de la existencia de una máqui-na virtual que posee una memoria con localidades con nombre:Loc = {X, Y, Z, X0,. . .}Las localidades pueden tomar valores de Z.

Estados de la Memoria

Un estado de la memoria es una función σ: Loc → Z.La expresión σ(X) nos dice qué valor contiene la localidad X en el estado σ.La alteración del valor de una sola localidad de la memoria cuando se encuentra en el estado σ se representa con la funciónσ[m/X], donde X es la localidad modificada y m es el nuevo valor.Formalmente:

El conjunto de estados es Σ.

3. EXPRESIONES

3.1.SOE para IMP. Expresiones Aritméticas

En el caso de las expresiones aritméticas, las transiciones α → β tiene la forma

Donde a ∈ EA, σ ∈ Σ y n ∈ Z.Diremos que “evaluar operacionalmente la expresión a en el estado σ da como resultado el valor n”.Dicha evaluación se realiza de acuerdo con las siguientes reglas:

En esta regla op puede ser +, − o × y op, +Z, −Z o ×Z (ambos operadores deben coincidir).

3.2.SOE para IMP. Expresiones Booleanas

En las expresiones booleanas, una transición es <b, σ >→ T, con b ∈ EB, σ ∈ Σ y T ∈ {V, F}. Las reglas operacionales son:

Page 4: SEMANTICA OPERACIONAL Y ESTRUCTURAL

4. COMANDOS

4.1.SOE para IMP. Comandos

Las reglas de transición de los comandos son así:

Donde c ∈ IMP y σ, σ ∈ Σ.El valor de σ se infiere de este modo:

5. CONCLUSIÓN

Page 5: SEMANTICA OPERACIONAL Y ESTRUCTURAL

Semántica Operacional es útil para los implementadores de un lenguaje y soporte a la construcción de axiomas semánticos.

SO describe el comportamiento de los programas de un lenguaje.

Separa evaluación de ejecución – modelo de máquina abstracta.

Cumple como notación formal para la implantación del lenguaje –“alcanzas” el lenguaje si implantas su semántica operacional.

Permite demostrar algunas propiedades del lenguaje –Equivalencia entre comandos suele ser la de interés.

6. REFERENCIAS BIBLIOGRAFICAS

[1] Maude como marco semántico ejecutable, Tesis Doctoral

http://eprints.ucm.es/4386/1/ucm-t26376.pdf

[2] Análisis Lógico Lenguajes De Programación,

http://lya.fciencias.unam.mx/fhq/Cursos/ALogico/2012-2/al-2-ho.pdf

[3] Una Formalización De La Semántica De Los Lenguajes De Programación http://www.inf.udec.cl/~revista/ediciones/edicion9/garces.pdf

[4] Semántica Operacional http://ldc.usb.ve/~emhn/cursos/ci4722/201204/Clases/14-semantic.pdf