semántica de lenguajes de programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 programming...

34
Sem´ antica de Lenguajes de Programaci´ on Jos´ e de Jes´ us Lavalle Mart´ ınez http://aleteya.cs.buap.mx/ ~ jlavalle/ Benem´ erita Universidad Aut´onoma de Puebla Facultad de Ciencias de la Computaci´ on Licenciatura en Ciencias de la Computaci´on Fundamentos de Lenguajes de Programaci´on CCOS 255 Oto˜ no 2020 Jos´ e de Jes´ us Lavalle Mart´ ınez (FCC-BUAP) Sem´ antica de Lenguajes de Programaci´on Oto˜ no 2020 1 / 13

Upload: others

Post on 12-Jun-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Semantica de Lenguajes de Programacion

Jose de Jesus Lavalle Martınezhttp://aleteya.cs.buap.mx/~jlavalle/

Benemerita Universidad Autonoma de PueblaFacultad de Ciencias de la Computacion

Licenciatura en Ciencias de la ComputacionFundamentos de Lenguajes de Programacion

CCOS 255

Otono 2020

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 1 / 13

Page 2: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Contenido

1 Introduccion a la Semantica de los Lenguajes de Programacion

2 Lenguaje de terminos aritmeticos

3 Ejercicios

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 2 / 13

Page 3: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Lenguajes de Programacion

Todo Lenguaje de Programacion consta de:

1 Un alfabeto sobre el cual se construyen los terminos del lenguaje.

2 Una sintaxis que establece la manera en que se deben combinar lossımbolos del alfabeto para formar los terminos del lenguaje.

3 Una semantica que precisamente nos especifica como son evaluadoslos terminos del lenguaje.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 3 / 13

Page 4: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Lenguajes de Programacion

Todo Lenguaje de Programacion consta de:

1 Un alfabeto sobre el cual se construyen los terminos del lenguaje.

2 Una sintaxis que establece la manera en que se deben combinar lossımbolos del alfabeto para formar los terminos del lenguaje.

3 Una semantica que precisamente nos especifica como son evaluadoslos terminos del lenguaje.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 3 / 13

Page 5: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Lenguajes de Programacion

Todo Lenguaje de Programacion consta de:

1 Un alfabeto sobre el cual se construyen los terminos del lenguaje.

2 Una sintaxis que establece la manera en que se deben combinar lossımbolos del alfabeto para formar los terminos del lenguaje.

3 Una semantica que precisamente nos especifica como son evaluadoslos terminos del lenguaje.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 3 / 13

Page 6: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos I

Semantica operacional:

Especifica el comportamiento de un lenguaje de programaciondefiniendo una maquina abstracta para el.

La maquina es “abstracta” en el sentido que usa los terminos dellenguaje como codigo de maquina, en lugar de usar instrucciones debajo nivel de algun microprocesador.

Para lenguajes simples, un estado de la maquina es un termino dellenguaje.

El comportamiento de la maquina se define mediante una funcion detransicion, que para cada estado nos proporciona el siguiente estadoal ejecutar un paso de simplificacion sobre el termino, o declara quela maquina ha parado.

El significado de un termino t se toma como el estado final al quellega la maquina cuando empezo con t como estado inicial.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 4 / 13

Page 7: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos I

Semantica operacional:

Especifica el comportamiento de un lenguaje de programaciondefiniendo una maquina abstracta para el.

La maquina es “abstracta” en el sentido que usa los terminos dellenguaje como codigo de maquina, en lugar de usar instrucciones debajo nivel de algun microprocesador.

Para lenguajes simples, un estado de la maquina es un termino dellenguaje.

El comportamiento de la maquina se define mediante una funcion detransicion, que para cada estado nos proporciona el siguiente estadoal ejecutar un paso de simplificacion sobre el termino, o declara quela maquina ha parado.

El significado de un termino t se toma como el estado final al quellega la maquina cuando empezo con t como estado inicial.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 4 / 13

Page 8: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos I

Semantica operacional:

Especifica el comportamiento de un lenguaje de programaciondefiniendo una maquina abstracta para el.

La maquina es “abstracta” en el sentido que usa los terminos dellenguaje como codigo de maquina, en lugar de usar instrucciones debajo nivel de algun microprocesador.

Para lenguajes simples, un estado de la maquina es un termino dellenguaje.

El comportamiento de la maquina se define mediante una funcion detransicion, que para cada estado nos proporciona el siguiente estadoal ejecutar un paso de simplificacion sobre el termino, o declara quela maquina ha parado.

El significado de un termino t se toma como el estado final al quellega la maquina cuando empezo con t como estado inicial.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 4 / 13

Page 9: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos I

Semantica operacional:

Especifica el comportamiento de un lenguaje de programaciondefiniendo una maquina abstracta para el.

La maquina es “abstracta” en el sentido que usa los terminos dellenguaje como codigo de maquina, en lugar de usar instrucciones debajo nivel de algun microprocesador.

Para lenguajes simples, un estado de la maquina es un termino dellenguaje.

El comportamiento de la maquina se define mediante una funcion detransicion, que para cada estado nos proporciona el siguiente estadoal ejecutar un paso de simplificacion sobre el termino, o declara quela maquina ha parado.

El significado de un termino t se toma como el estado final al quellega la maquina cuando empezo con t como estado inicial.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 4 / 13

Page 10: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos I

Semantica operacional:

Especifica el comportamiento de un lenguaje de programaciondefiniendo una maquina abstracta para el.

La maquina es “abstracta” en el sentido que usa los terminos dellenguaje como codigo de maquina, en lugar de usar instrucciones debajo nivel de algun microprocesador.

Para lenguajes simples, un estado de la maquina es un termino dellenguaje.

El comportamiento de la maquina se define mediante una funcion detransicion, que para cada estado nos proporciona el siguiente estadoal ejecutar un paso de simplificacion sobre el termino, o declara quela maquina ha parado.

El significado de un termino t se toma como el estado final al quellega la maquina cuando empezo con t como estado inicial.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 4 / 13

Page 11: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos II

Semantica denotacional:

El significado de un termino es algun objeto matematico, como unnumero o una funcion.

Para darle una semantica denotacional a un lenguaje debemosencontrar una coleccion de dominios semanticos y definirposteriormente una funcion de intrepretacion que mapea un terminodel lenguaje a algun elemento de uno de los dominios semanticos.

Dadas las propiedades que tienen los dominios semanticos, este estilode semantica permite demostrar que dos programas tienen el mismocomportamiento o que un programa satisface una especificacion dada.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 5 / 13

Page 12: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos II

Semantica denotacional:

El significado de un termino es algun objeto matematico, como unnumero o una funcion.

Para darle una semantica denotacional a un lenguaje debemosencontrar una coleccion de dominios semanticos y definirposteriormente una funcion de intrepretacion que mapea un terminodel lenguaje a algun elemento de uno de los dominios semanticos.

Dadas las propiedades que tienen los dominios semanticos, este estilode semantica permite demostrar que dos programas tienen el mismocomportamiento o que un programa satisface una especificacion dada.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 5 / 13

Page 13: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos II

Semantica denotacional:

El significado de un termino es algun objeto matematico, como unnumero o una funcion.

Para darle una semantica denotacional a un lenguaje debemosencontrar una coleccion de dominios semanticos y definirposteriormente una funcion de intrepretacion que mapea un terminodel lenguaje a algun elemento de uno de los dominios semanticos.

Dadas las propiedades que tienen los dominios semanticos, este estilode semantica permite demostrar que dos programas tienen el mismocomportamiento o que un programa satisface una especificacion dada.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 5 / 13

Page 14: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos III

Semantica axiomatica:

Se definen axiomas para los terminos basicos del lenguaje.

Para los terminos compuestos del lenguaje se definen reglas deinferencia que permiten simplificarlos.

El significado de un termino es lo que se puede demostrar de el.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 6 / 13

Page 15: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos III

Semantica axiomatica:

Se definen axiomas para los terminos basicos del lenguaje.

Para los terminos compuestos del lenguaje se definen reglas deinferencia que permiten simplificarlos.

El significado de un termino es lo que se puede demostrar de el.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 6 / 13

Page 16: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Estilos semanticos III

Semantica axiomatica:

Se definen axiomas para los terminos basicos del lenguaje.

Para los terminos compuestos del lenguaje se definen reglas deinferencia que permiten simplificarlos.

El significado de un termino es lo que se puede demostrar de el.

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 6 / 13

Page 17: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo: terminos aritmeticos

Ejemplo 1

Queremos definir el lenguaje de terminos aritmeticos para los enteros, quepermita: sumar, restar y multiplicar.

Algunos ejemplos de terminos aritmeticos son:

0, 1, 2, · · · , 923, 892, 4159, · · ·(23 + 50), (315− 15), (28 ∗ 15), · · ·(9− (5 ∗ 2)), (23 ∗ (8 + 2)), · · ·

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 7 / 13

Page 18: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo: terminos aritmeticos

Ejemplo 1

Queremos definir el lenguaje de terminos aritmeticos para los enteros, quepermita: sumar, restar y multiplicar.

Algunos ejemplos de terminos aritmeticos son:

0, 1, 2, · · · , 923, 892, 4159, · · ·(23 + 50), (315− 15), (28 ∗ 15), · · ·(9− (5 ∗ 2)), (23 ∗ (8 + 2)), · · ·

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 7 / 13

Page 19: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo: terminos aritmeticos

Ejemplo 1

Queremos definir el lenguaje de terminos aritmeticos para los enteros, quepermita: sumar, restar y multiplicar.

Algunos ejemplos de terminos aritmeticos son:

0, 1, 2, · · · , 9

23, 892, 4159, · · ·(23 + 50), (315− 15), (28 ∗ 15), · · ·(9− (5 ∗ 2)), (23 ∗ (8 + 2)), · · ·

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 7 / 13

Page 20: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo: terminos aritmeticos

Ejemplo 1

Queremos definir el lenguaje de terminos aritmeticos para los enteros, quepermita: sumar, restar y multiplicar.

Algunos ejemplos de terminos aritmeticos son:

0, 1, 2, · · · , 923, 892, 4159, · · ·

(23 + 50), (315− 15), (28 ∗ 15), · · ·(9− (5 ∗ 2)), (23 ∗ (8 + 2)), · · ·

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 7 / 13

Page 21: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo: terminos aritmeticos

Ejemplo 1

Queremos definir el lenguaje de terminos aritmeticos para los enteros, quepermita: sumar, restar y multiplicar.

Algunos ejemplos de terminos aritmeticos son:

0, 1, 2, · · · , 923, 892, 4159, · · ·(23 + 50), (315− 15), (28 ∗ 15), · · ·

(9− (5 ∗ 2)), (23 ∗ (8 + 2)), · · ·

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 7 / 13

Page 22: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo: terminos aritmeticos

Ejemplo 1

Queremos definir el lenguaje de terminos aritmeticos para los enteros, quepermita: sumar, restar y multiplicar.

Algunos ejemplos de terminos aritmeticos son:

0, 1, 2, · · · , 923, 892, 4159, · · ·(23 + 50), (315− 15), (28 ∗ 15), · · ·(9− (5 ∗ 2)), (23 ∗ (8 + 2)), · · ·

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 7 / 13

Page 23: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos I

De los ejemplos anteriores podemos identificar que necesitamos elsiguiente alfabeto:

Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+,−, ∗, (, )}

Nuestro primer elemento sintactico es el que corresponde a los dıgitos:

d ::= 0|1| · · · |9

Analizando los siguientes numeros 23, 892, 4159, · · · observamos que losnumeros que tienen mas de un dıgito tienen la caracterıstica de que elsımbolo mas a la derecha es un dıgito y que los sımbolos anteriores alultimo conforman un numero. Por supuesto los digitos tambien son unnumero.

Ası, nuestro siguiente regla sintactica es la de numero:

n ::= d|nd

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 8 / 13

Page 24: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos I

De los ejemplos anteriores podemos identificar que necesitamos elsiguiente alfabeto:

Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+,−, ∗, (, )}

Nuestro primer elemento sintactico es el que corresponde a los dıgitos:

d ::= 0|1| · · · |9

Analizando los siguientes numeros 23, 892, 4159, · · · observamos que losnumeros que tienen mas de un dıgito tienen la caracterıstica de que elsımbolo mas a la derecha es un dıgito y que los sımbolos anteriores alultimo conforman un numero. Por supuesto los digitos tambien son unnumero.

Ası, nuestro siguiente regla sintactica es la de numero:

n ::= d|nd

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 8 / 13

Page 25: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos I

De los ejemplos anteriores podemos identificar que necesitamos elsiguiente alfabeto:

Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+,−, ∗, (, )}

Nuestro primer elemento sintactico es el que corresponde a los dıgitos:

d ::= 0|1| · · · |9

Analizando los siguientes numeros 23, 892, 4159, · · · observamos que losnumeros que tienen mas de un dıgito tienen la caracterıstica de que elsımbolo mas a la derecha es un dıgito y que los sımbolos anteriores alultimo conforman un numero. Por supuesto los digitos tambien son unnumero.

Ası, nuestro siguiente regla sintactica es la de numero:

n ::= d|nd

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 8 / 13

Page 26: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos I

De los ejemplos anteriores podemos identificar que necesitamos elsiguiente alfabeto:

Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+,−, ∗, (, )}

Nuestro primer elemento sintactico es el que corresponde a los dıgitos:

d ::= 0|1| · · · |9

Analizando los siguientes numeros 23, 892, 4159, · · · observamos que losnumeros que tienen mas de un dıgito tienen la caracterıstica de que elsımbolo mas a la derecha es un dıgito y que los sımbolos anteriores alultimo conforman un numero. Por supuesto los digitos tambien son unnumero.

Ası, nuestro siguiente regla sintactica es la de numero:

n ::= d|nd

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 8 / 13

Page 27: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos I

De los ejemplos anteriores podemos identificar que necesitamos elsiguiente alfabeto:

Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+,−, ∗, (, )}

Nuestro primer elemento sintactico es el que corresponde a los dıgitos:

d ::= 0|1| · · · |9

Analizando los siguientes numeros 23, 892, 4159, · · · observamos que losnumeros que tienen mas de un dıgito tienen la caracterıstica de que elsımbolo mas a la derecha es un dıgito y que los sımbolos anteriores alultimo conforman un numero. Por supuesto los digitos tambien son unnumero.

Ası, nuestro siguiente regla sintactica es la de numero:

n ::= d|nd

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 8 / 13

Page 28: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos II

Finalmente tenemos que especificar la sintaxis para los terminosaritmeticos e que nos permiten hacer las operaciones de suma, resta ymultiplicacion. Note que los numeros tambien son terminos aritmeticos.

e ::= n|(ei+ed)|(ei−ed)|(ei∗ed)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 9 / 13

Page 29: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Sintaxis para los terminos aritmeticos III

Poniendo todo junto tenemos:

d ::= 0|1| · · · |9n ::= d|nde ::= n|(ei+ed)|(ei−ed)|(ei∗ed)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 10 / 13

Page 30: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Semantica para los terminos aritmeticos I

Ahora le daremos significado (tambien podemos decir evaluaremos ointerpretaremos) a nuestro lenguaje de terminos aritmeticos, mediante lasiguiente funcion de significado.

JK : LT A → Z

J0K = 0, . . . , J9K = 9

JndK = ((JnK∗10)+JdK)Jei+edK = (JeiK+JedK)Jei−edK = (JeiK−JedK)Jei∗edK = (JeiK∗JedK)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 11 / 13

Page 31: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Semantica para los terminos aritmeticos I

Ahora le daremos significado (tambien podemos decir evaluaremos ointerpretaremos) a nuestro lenguaje de terminos aritmeticos, mediante lasiguiente funcion de significado.

JK : LT A → Z

J0K = 0, . . . , J9K = 9

JndK = ((JnK∗10)+JdK)Jei+edK = (JeiK+JedK)Jei−edK = (JeiK−JedK)Jei∗edK = (JeiK∗JedK)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 11 / 13

Page 32: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Semantica para los terminos aritmeticos I

Ahora le daremos significado (tambien podemos decir evaluaremos ointerpretaremos) a nuestro lenguaje de terminos aritmeticos, mediante lasiguiente funcion de significado.

JK : LT A → Z

J0K = 0, . . . , J9K = 9

JndK = ((JnK∗10)+JdK)Jei+edK = (JeiK+JedK)Jei−edK = (JeiK−JedK)Jei∗edK = (JeiK∗JedK)

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 11 / 13

Page 33: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejemplo

J

ei−ed︷ ︸︸ ︷(315− 15)K

− = 300

Jnd︷︸︸︷15 K

+ = 15

Jd︷︸︸︷5 K

5

∗ = 10

10Jn︷︸︸︷1 K

Jd︷︸︸︷1 K

1

Jnd︷︸︸︷

315 K

+ = 315

Jd︷︸︸︷5 K

5

∗ = 310

10Jnd︷︸︸︷31 K

+ = 31

Jd︷︸︸︷1 K

1

∗ = 30

10Jn︷︸︸︷3 K

Jd︷︸︸︷3 K

3Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 12 / 13

Page 34: Semántica de Lenguajes de Programaciónaleteya.cs.buap.mx/~jlavalle/flp/1 Programming Language...Jos e de Jesus Lavalle Mart nez (FCC-BUAP) Sem antica de Lenguajes de Programacion

Ejercicio 2

Encuentre el significado de los siguientes terninos aritmeticos:

1 (23 + 50), (315− 15), (28 ∗ 15).

2 (9− (5 ∗ 2)), (23 ∗ (8 + 2)).

Jose de Jesus Lavalle Martınez (FCC-BUAP) Semantica de Lenguajes de Programacion Otono 2020 13 / 13