• No se han encontrado resultados

Clase11(ER-BNF)

N/A
N/A
Protected

Academic year: 2020

Share "Clase11(ER-BNF)"

Copied!
16
0
0

Texto completo

(1)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares – BNF

Diagramas Sintácticos

Ciencias de la Computación I

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares

• Las expresiones regulares describen lenguajes regulares.

• Una expresión regular (también llamada patrón) es una

expresión que describe cadenas sobre un alfabeto.

• Las expresiones regulares se construyen utilizando los

operadores de unión (+) concatenación (.) y Clausura (*).

Ejemplos

(a+b)* describe L= {a, b}*

(2)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares

• La sintaxis de las expresiones regulares cambia (respecto

de la notación convencional) según las herramientas y

aplicaciones consideradas.

• Se utilizan en editores de texto, bases de datos, sistemas

operativos y aplicaciones para buscar y reemplazar patrones

de texto; también para validación de un formato específico

como

fechas,

identificadores,

nombres

de

usuario,

direcciones de email, etc.

• Se incluyen en lenguajes de programación (por ej. en PERL

es parte de su sintaxis y en otros como PHP y JAVA, existen

librerías para el uso de expresiones regulares).

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares - Notación especial

El Punto “

.

” El punto es interpretado como cualquier símbolo (caracter alfanumérico, dígito, etc.), excepto el salto de línea.

Ej: patrón: a.n en la cadena “tiene amnesia” hay coincidencia

“captando” no hay coincidencia

Los corchetes “[ ]” Los corchetes agrupan caracteres. Dentro de los corchetes es posible utilizar el guión "-" para especificar rangos de caracteres.

Ej. Patrón: [A-Z] coincide si la cadena contiene cualquier letra mayúscula

Patrón: canci[oó]n coincide si contiene canción o cancion

La barra “|”Se utiliza como OR, es equivalente al + en notación convencional

(3)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares-Notación Especial

El signo “$” Representa el final de la cadena de caracteres

Ej. Patrón: a$ coincide con toda cadena que termine con a

El acento circunflejo “^” Este caracter tiene doble funcionalidad:

1) Al inicio "^" Significa que el inicio de la cadena debe coincidir con el símbolo que lo sucede

Ej. Patrón: ^[A-Z] Había una vez tiene coincidencia

Patrón: ^a[0-9]abc$ a5abc tiene coincidencia

2) Cuando se utiliza en conjunto con los corchetes significa NOT

Ej. Patrón: [^a-z] casa no hay coincidencia

[^a-z] @012 tiene coincidencia

Los paréntesis “()” tienen el mismo significado que en la notación convencional de expresiones regulares

Ej: patrón: al (este|oeste|norte|sur) de

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares- Notación Especial

La barra inversa “\” Se utiliza para "marcar" el siguiente caracter de forma que deje de tener o adquiera un significado especial:

1) En combinación con caracteres especiales como ( ., $, *,+, etc.) \.— Representa al punto como caracter literal

\$— Representa al $ como caracter literal \(— Representa al ( como caracter literal

Ej: Patrón: \([0-9][0-9]\.[0-9][0-9]\$\) en la cadena (10.99$)coincide

2) En otros casos da significado según la combinación: \n— Representa la "nueva línea”

\d— Representa un dígito del 0 al 9.

\w— Representa cualquier caracter alfanumérico. \s— Representa un espacio en blanco.

\D— Representa cualquier caracter que no sea un dígito del 0 al 9. \S— Representa cualquier caracter que no sea un espacio en blanco.

(4)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Exp. Regulares- Notación Especial: Cuantificadores

Las llaves “{}”

{nro1} ó Entre nro1 y nro2, es la cantidad de veces {nro1,nro2} ó consecutivas que puede aparecer la expresión

{nro1,} anterior. El nro2 puede no especificarse.

Ej: Patrón ^\d{2}/\d{2}/\d{4}$ 01/01/1999coincide

Patrón \d{2,4} 00, 865, 9999 y 84236 coinciden

El asterisco “*” Se usa para encontrar la expresión anterior al mismo 0 ó más veces.

Ej: patrón ^[a-zA-Z]*$ abcZcoincide

El signo “+” Significa que la expresión anterior al mismo debe aparecer 1 ó más veces

Ej: [a-z]\d+ coincidirá en var1, var2, var10… pero no con var.

El signo de interrogación “?” Significa que la expresión anterior al mismo debe aparecer 0 ó 1 vez en la cadena

Ej: Patrón: a?bb con la cadenas bb, abb, bbb, cdbb tiene coincidencia

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Expresiones Regulares

Algunos ejemplos

Notación convencional Notación Especial

(aa)*a ^(aa)*a$

(a+b)*ab(a+b)* ^(a|b)*ab(a|b)*$

(0+1+2+3+4+5+6+7+8+9) (0+1+2+3+4+5+6+7+8+9) ^[0-9]{2}$

En la página web

(5)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Backus-Naur Form (BNF)

• Notación utilizada frecuentemente para escribir gramáticas de tipo 2 o libres del contexto.

• Esta notación sigue las siguientes convenciones:

- no terminales se escriben entre < >

- terminales son cadenas de caracteres sin < >

- en lugar de →se utiliza :: =que se lee “se define como”

- varias reglas del tipo

<A> :: =<B1> <A> :: =<B2> ...

<A> :: =<Bn>

Se pueden escribir como

<A> :: =<B1> <B2> ... <Bn>

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Backus-Naur Form (BNF)

Ejemplos:

Ejemplos

( ( ( ) ) )

L

( ( ) )( )

L

( ( )

L

L = { x / x ∈{ (, ) }* y x es una cadena de paréntesis balanceados }

BNF para L

<cadena_par> :: = <parentesis> <parentesis> <cadena_par>

(6)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Backus-Naur Form (BNF)

Ejemplos:

L = { x / x ∈{ begin, end }* y x es una cadena de begin end balanceados }

BNF para L

<lista> :: = <anidados> <anidados> <lista>

<anidados> :: = begin<lista > end begin end

Ejemplos

begin begin end end begin end ∈L

begin begin end ∉L

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Backus-Naur Form (BNF)

BNF para sentencia for de Pascal

<sentencia_for> :: =for<variable>:=<lista_for>do <sentencia>

<lista_for> :: = <exparit> to<exparit> <exparit> downto<exparit>

<variable> :: =a

z

/*en este ejemplo simplificamos*/

<sentencia> :: = <variable>:=<variable> /*en este ejemplo simplificamos*/

<exparit> :: = 0

9 /*en este ejemplo simplificamos*/

Ejemplos

for i := 1 to 3 do i := j

for i := 1 to 9 do sum:= i

for i = 2 to 9 do k:=i

bien definida según BNF anterior

(7)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Árbol

• El concepto de árbol es muy usado en computación.

• Un árbol es un conjunto de puntos, llamados nodos, unidos por líneas, llamadas arcos. Un arco conecta dos nodos distintos.

Nodo raíz

Rama Nodo hoja

• Propiedades del árbol:

- hay un único nodo distinguido, llamado raíz.

- Un nodo padre puede tener conectados uno o mas nodos hijos. El padre de un nodo se dibuja por encima de los nodos hijos. El nodo raíz no tiene padre. Los nodos hojas no tienen hijos.

- cada nodo es alcanzable desde el nodo raíz mediante un único camino

Nodo interior

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Árbol de derivación

Un árbol es un árbol de derivación para una gramática G = <N, T, P, S> si:

- La raíz del árbol se rotula con S, el símbolo distinguido de G

- Cada nodo interior está rotulado con un símbolo de N

- Cada hoja está rotulada con un símbolo de N ∪T

- Si un nodo interior tiene rótulo A y sus hijos tienen rótulos x1, x2, ..., xnentonces la regla A → x1x2...xn∈P

(8)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Árbol de derivación

Ejemplo:

Sea G = <{A, B}, {a, b, c}, P, S> donde

P = { S→AB, A →aAb, A →ab, B →cB, B →c }

- La cadena aabbccc∈L(G)?

S

a A b

a b

Cadena derivada: aabbccc

A B

c B

c B

c

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

4+5* no es exparit

Árbol de derivación

Ejemplo: BNF para expresiones aritméticas “simplificadas”

<exparit> :: = <exparit> +<exparit> <exparit> -<exparit> <exparit> *<exparit>

<exparit> /<exparit> (<exparit>)<numero>

<numero> :: =<digito> <digito><numero>

<digito> :: =01 2 3456 789

4 + 53

<exparit>

<exparit> + <exparit>

5 3 <digito> 4 <numero> <digito><numero> <numero> <exparit>

<exparit> + <exparit>

4

<digito>

<exparit> * <exparit>

5

<digito>

4+53 es exparit

4+5*

<digito>

<numero>

(9)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Árbol de derivación

Ejemplo: BNF para expresiones aritméticas “simplificadas”

<exparit>

Se quiere derivar la expresión aritmética 3*4 + 5

<exparit> + <exparit>

<exparit> * <exparit>

<numero> 3 <numero> <numero> 4 5 <digito> <digito> <digito> <exparit>

<exparit> * <exparit>

<exparit> + <exparit>

<numero> 4 <numero> 5 3 <digito> <digito>

<exparit> :: = <exparit> +<exparit> <exparit> -<exparit> <exparit> *<exparit>

<exparit> /<exparit> (<exparit>)<numero>

<numero> :: =<digito> <digito><numero>

<digito> :: =01 2 3456 789

<numero>

<digito>

3*4 + 5 3*4 + 5

Si para la misma

cadena

3*4+5

hay dos árboles

diferentes:

BNF es ambiguo

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Gramáticas ambiguas

• En el ejemplo anterior, existen dos árboles de derivación para la misma cadena

→ → →

gramática ambigua

• Una GLC G es ambigua si existe al menos una cadena de L(G) para la cual hay dos o más árboles de derivación distintos (o dos derivaciones más a la izquierda diferentes).

• Una GLC G es no ambigua si toda cadena de L(G) tiene un único árbol de derivación (o una única derivación más a la izquierda).

• La ambigüedad puede ser un problema para los lenguajes en los que el significado depende, en parte, de la estructura (lenguaje natural, lenguajes de programación). En el ejemplo anterior 3*4+5 puede ser igual a 17 o 27 según el árbol de derivación que se construya.

En algunos casos, dada una gramática ambigua, se puede encontrar otra no ambigua que genera el mismo lenguaje.

(10)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

BNF no ambiguo

Ejemplo: BNF no ambiguo para expresiones aritméticas “simplificadas”

<exparit>

<exparit> + <termino>

<termino> * <factor> <factor>

3

<numero>

<numero>

4

5

<digito> <numero>

<digito>

<exparit> :: = <exparit> +<termino> <exparit> -<termino> <termino>

<termino> :: = <termino> *<factor> <termino> /<factor> <factor>

<factor> :: =(<exparit>)<numero>

<numero> :: =<digito> <digito><numero>

<digito> :: =01 2 3456 789

3*4 + 5

Para

3*4+5

un único árbol de derivación

<digito>

<factor>

En general,

toda cadena ↔un árbol de derivación

entonces este BNF es no ambiguo

<termino>

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

BNF Extendido

• Usa nuevas reglas y símbolos. Sintaxis Significado

::= se define como

t el símbolo terminal t

<nt> el símbolo no terminal nt

(...) usado para agrupar

* cero o más repeticiones del elemento anterior

+ una o más repeticiones del elemento anterior

[...] elemento opcional

| alternativa de varias formas sintácticas válidas

Nota: Para distinguir los metasímbolos de los terminales con el mismo caracter se usa ´

(11)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

BNF Extendido

Ejemplos:

L1= { x / x ∈{ begin, end }* y x es una cadena de begin end balanceados }

BNF para L1

<lista> :: = <anidados>| <anidados><lista>

<anidados> :: = begin<lista > end begin end

ó <lista> :: = <anidados>+

BNF Extendido para L1

<lista> :: = <anidados> <anidados>*

<anidados> :: = begin<lista > end begin end

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Diagramas Sintácticos

• Un diagrama sintáctico está formado por:

- un conjunto de rectángulos etiquetados con nombres de símbolos no terminales

- un conjunto de círculos o elipses etiquetados con nombres de símbolos terminales (tokens),

- un conjunto de arcos que representan las secuencias en las que pueden combinarse los terminales y no terminales de la gramática.

•Cada diagrama representa un símbolo no terminal.

•Todo diagrama posee un punto de entrada (generalmente situado a la izquierda,) y un punto de salida (a la derecha), que están representados por un arco sin origen y un arco sin destino respectivamente.

(12)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Diagramas Sintácticos

• Al igual que en la notación BNF se debe indicar cual es el símbolo distinguido o axioma, a partir del cual comienza la derivación.

•Para reconocer una cadena del lenguaje, se parte del punto de entrada del diagrama correspondiente, y siguiendo algún camino en dicho diagrama, se llega al punto de salida.

Si el camino no existe, la cadena se rechaza.

Cuando en el camino se encuentra un no terminal, el “flujo” continúa recursivamente a través del diagrama sintáctico correspondiente a ese no terminal (la aparición de un no terminal en un diagrama “explota” en otro diagrama que lo define).

•Cualquier camino entre el punto de entrada y el de salida representa una cadena generada por la regla que describe el diagrama.

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

BNF Diagrama sintáctico

<no terminal>

terminal

ε

Secuencia A1 A2… An

Diagramas Sintácticos

Las reglas para la construcción de diagramas sintácticos a partir de una definición BNF son las siguientes:

No terminal

terminal

Diagrama sintáctico para A

1

Diagrama sintáctico para An Diagrama

(13)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

BNF Diagrama sintáctico

Alternativa A1| A2|… | An

[A] (ε| A)

Diagramas Sintácticos

Diagrama sintáctico para A Diagrama sintáctico

para A1

Diagrama sintáctico

para An Diagrama sintáctico

para A2

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

BNF Diagrama sintáctico

Repetición A+

(1 ó más veces)

A*

(0 ó más veces)

Diagramas Sintácticos

Diagrama sintáctico

para A

Diagrama sintáctico

(14)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Diagramas Sintácticos

Ejemplos:

BNF Extendido para L1

<lista> :: = <anidados> <anidados>*

<anidados> :: = begin<lista > end begin end

anidados

<lista>

<anidados>

begin end

begin lista end

Diagrama sintáctico para L1

begin begin end end begin end es una lista?

begin end end es una lista?

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

begin begin end end begin end

es una lista?

anidados anidados anidados

<lista> <anidados>

begin end

begin lista end

begin lista end

end begin

end begin

(15)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Diagramas Sintácticos

Ejemplos:

(De FreePascal, compilador usado en Introducción a la Programación I y II, www.freepascal.org)

1) <sentencia> ::= <sentencia simple> | <sentencia estructurada>

sentencia simple

sentencia estructurada

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Diagramas Sintácticos

2) <sentencia estructurada> ::= <sentencia compuesta> | <sentencia condicional> | <sentencia repetitiva> | <sentencia with>

sentencia compuesta

sentencia condicional

sentencia repetitiva

sentencia with

3) <sentencia condicional> ::= <sentencia if> | <sentencia case>

sentencia if

(16)

Ciencias de la Computación I - Filminas de Clase – Facultad Cs. Exactas – UNCPBA - 2014

Diagramas Sintácticos

4) <sentencia compuesta> ::= begin <sentencia> (; <sentencia>)* end

5) <sentencia if>::= if <condicion> then <sentencia> [else <sentencia>]

begin sentencia end

;

if condicion then sentencia

Referencias

Documento similar

Humanidades / Historia y Arqueología / Historia y Arqueología / Arqueología Forense Ciencias Naturales y Exactas / Ciencias de la Computación e Información / Ciencias de la

Coordinadores de Especialidad: Desde la visión conjunta de las asignaturas que se están impartiendo en este cuatrimestre, establecerán los procedimientos oportunos para evitar la

En relación a la nueva propuesta sobre vinculaciones de asignaturas de la titulación de Graduado/a en Biología por la Universidad de Málaga que hace la Comisión de Grado de

Para determinar un bit, el dispositivo electrónico se calibra para recibir la señal con un valor “X” máximo y otro mínimo, entonces cada vez que el valor eléctrico supere el

Dicha certificación, expedida por el Centro organizador de dichos estudios, deberá indicar, además de la relación de asignaturas cursadas y superadas, la

Este TFG es bibliográfico y experimental, ya que a partir de datos bibliográficos y diferentes mapas, el alumno debe realizar un análisis de la interacción entre los factores

Como se ha indicado anteriormente, en un diagrama de clase aparecen clases relacionadas entre sí, de esta forma, las clases y las principales relaciones

Revista de la Real Academia de Ciencias Exactas, Físicas, Químicas y Naturales de Zaragoza es una revista anual, editada por la Real Academia de Ciencias Exactas, Físicas, Químicas