Semántica de los lenguajes de programación

Semántica de los lenguajes de programación


La semántica de un lenguaje de programación se refiere al significado que adoptan las distintas sentencias, expresiones y enunciados de un programa. La semántica engloba aspectos sensibles al contexto, a diferencia de la sintaxis que considera aspectos libres de contexto.


Los principales elementos de la semántica son:


Variables: se refieren a locaciones de memoria ligadas a un nombre y a un tipo.


Valores y referencias: los valores son el estado de determinada celda o grupo de celdas de la memoria, mientras que las referencias indican la posición de esa celda en memoria. Estos 2 conceptos están muy involucrados con los punteros. La mayoría de los lenguajes los soportan, aunque son una conocida fuente de errores de programación.


Expresiones: Son construcciones sintácticas que permiten combinar valores con operadores y producir nuevos valores. Son los elementos de los que se componen los enunciados. Las expresiones pueden ser aritméticas (a +b*c), relacionales (a a), lógicas (a && b || c)

o condicionales (if (a*b > 2)...). Cada una de estas tiene una semántica especifica que la define. Por ejemplo en una expresión aritmética el tipo esperado es numérico (esto es int, long, etc.), los operadores deben ser +,-,*, /; y las funciones utilizadas dentro de ésta deben retornar valores numéricos.


Semántica estática. Gramática de atributos: Las gramáticas de atributos son más poderosas que las BNF porque permiten formalizar aspectos sensibles al contexto.

Por ejemplo, el chequeo de tipos depende del contexto porque debemos saber el tipo esperado y el actual y determinar si son compatibles. El tipo esperado lo obtenemos del contexto analizando la definición de la variable. Si la variable num1 está definida de tipo String, y más adelante le queremos asignar el valor 1000, se producirá un error de tipo.


La gramática de atributos de compone de:


Atributos: o heredados: son los que se obtienen de un elemento más general. Esquema de arriba hacia abajo. Por ejemplo, number y float. En este caso float heredará los atributos de number e incorporará nuevos atributos propios de su tipo.


Sintetizados: se conocen a partir de los sub- elementos, como ser un subrango. Esquema de abajo hacia arriba, opuesto a los atributos heredados.


Intrínsecos: Estos atributos se obtienen de tablas externas, fuera del árbol de derivación.


condiciones: Son hechos que se evalúan si suceden o no.


Por ejemplo, if(num>=20) ...


reglas: A partir de un conjunto de condiciones se forman las reglas.  por ejemplo



1 comentario:

  1. La gramática de atributos de compone de:
    esta es la semantica que usa el lenguaje de psint

    ResponderEliminar