Está en la página 1de 45

Lenguajes Formales y de Programacin

Gramaticas Regulares y Expresiones Regulares


Evander Flores (evanderex@gmail.com)

Objetivos
Definir que es una gramtica. Identificar los componentes de una gramtica. Determinar la estructura para la construccin de gramticas

regulares. Construir de rboles de derivacin Identificar gramticas ambiguas Definir Expresiones Regulares Reglas de construccin para Expresiones Regulares

Gramticas
Concepto, componentes y estructura

Gramtica
Sirven para describir como se genera las cadenas del

lenguaje. Se clasifican al igual que los lenguajes segn la Jerarqua de Chomsky como gramticas tipo 0, 1, 2 y 3 Estn construidas a travs de cudruplas.

Definicin de Gramtica
Definida por G = (N, T, P, S) donde
N Conjunto finito de smbolos no terminales (Alfabeto) T Conjunto finito de smbolos terminales

P es un conjunto finito de producciones


S Smbolo incial

Componentes de una Gramtica


N Conjunto de No Terminales
Son smbolos definidos que representan una expresin del

lenguaje. Por lo general son representados por medio de letras o palabras en MAYUSCULAS.

S Smbolo Inicial
Smbolo No Terminal que representa el inicio de la gramtica. Por lo general se utiliza la letra S.

Componentes de una Gramtica


T Conjunto de Terminales
Son smbolos que representan a un token de la gramtica. Los tokens son expresiones que se definen por medio de

Expresiones Regulares Por lo general son representados por medio de letras o palabras en minsculas.

Componentes de una Gramtica


P Conjunto de Producciones Es la representacin de una definicin de la gramtica. Utiliza en el lado izquierdo un smbolo No Terminal El lado derecho una secuencia de smbolos terminales y no terminales; tambin puede ser una cadena vaca ()

GRAMTICA regular
Estructura, Producciones, Clasificacin, rbol de Derivacin, gramticas ambiguas.

Gramtica Regular
Generan los lenguajes regulares, reconocidos por un

autmata finito. Son las gramticas ms restrictivas. El lado derecho de una produccin es como mnimo un smbolo TERMINAL o NO TERMINAL y del lado izquierdo como mximo uno NO TERMINAL.

10

Gramticas Regulares

Produccin
Representada generalmente

Lado Izquierdo
::= -> == =

Lado Derecho
(Cadena vaca) terminal (uno o ms) No Terminal (uno o ms) Combinacin de terminales y No Terminales.

Smbolo No Terminal

11

Ejemplos de Producciones
Correctas
Aa B Aa C

Incorrectas
A aB AB C a DE

D numero
E num . num F aA G AabcD

12

Clasificacin de Gramticas Regulares


Las gramticas regulares se dividen dependiendo de la estructura de las producciones, esto depende de la direccin hacia la que se expanden: Lineales a la derecha
A aB

Aa

Lineales a la izquierda
A Ba Aa Donde A y B son NO TERMINALES
Donde a es TERMINAL

13

Gramticas Regulares

Lineales a derecha
Los smbolos No Terminales se ubican al lado derecho de la produccin. G1 = ({A, B}, {a}, P1, S1)

S1 S1 aA A aB Aa B aA

14

Gramticas Regulares

Lineales a Izquierda
Los smbolos No Terminales se ubican al lado izquierdo de la produccin. G2 = ({C, D}, {a}, P2, S2)

S2 S2 Ca C Da Ca D Ca

15

rbol de Derivacin
Consiste en la esquematizacin de la Gramtica, a travs de

una entrada determinada. Permite identificar la secuencia por la cual una cadena es reconocida por la gramtica. Tambin son llamados rboles sintxis.

16

rbol de Derivacin
Para ser un rbol un conjunto de nodos y arcos debe satisfacer ciertas propiedades: hay un nico nodo distinguido, llamado raz (se dibuja en la parte superior) que no tiene arcos incidentes. todo nodo c excepto el nodo raz est conectado con un arco a otro nodo k, llamado el padre de c (c es el hijo de k). El padre de un nodo, se dibuja por encima del nodo. todos los nodos estn conectados al nodo raz mediante un nico camino. los nodos que no tienen hijos se denominan hojas, el resto de los nodos se denominan nodos interiores.
17

rbol de Derivacin
El rbol de derivacin tiene las siguientes propiedades: - el nodo raz est rotulado con el smbolo distinguido de la gramtica; - cada hoja corresponde a un smbolo terminal o un smbolo no terminal; - cada nodo interior corresponde a un smbolo no terminal.

18

Construccin
El smbolo inicial S es la raz Los nodos internos son smbolos NO Terminales Las hojas son los smbolos terminales. No son rboles binarios, cada nodo representa la secuencia de

cada produccin, independientemente del nmero de smbolos.

19

Ejemplo
Gramtica S aB B bC Cc

Cadena abc

20

Ejemplo
Gramtica S aB B aBB |b

Cadena aabb

21

Gramticas Ambiguas
Una gramtica es ambigua si permite construir dos o ms

22

rboles de derivacin distintos para la misma cadena. Una gramtica en la cual, para toda cadena generada w, todas las derivaciones de w tienen el mismo rbol de derivacin es no ambigua Una gramtica G(N,T,P,S) se considera ambigua, si existen por lo menos dos rboles de derivacin que la representen. Una gramtica es ambigua si por lo menos posee una produccin ambigua. La ambigedad es una propiedad indecidible

Gramticas Ambiguas
Aqu hay un ejemplo de este tipo de gramticas, donde se

reconoce la misma entrada a+a+a A A +A |a

23

Expresiones Regulares

24

Expresion Regular
Constituyen un mecanismo bastante potente para realizar

manipulaciones de cadenas de texto Representan de forma ms simple un Lenguaje Regular Representan un patrn por medio del cual se construyen palabras. Utiliza caracteres de un alfabeto () definido, para la construccin.

25

Elementos de Definicin
Los elementos ms comunes utilizados para definir una Expresin Regular son:
Smbolo * + ? () Significado repeticin 0 o ms veces (Cerradura de Kleene) Repeticin 1 o ms veces (Cerradura Positiva) Aparece 1 vez o ninguna Agrupacin

|
\ ^ [] $
26

Indica opciones (o lgico)


Marca de caracter especial Comienzo de una linea Agrupacin de conjunto de caracteres opcionales Final de lnea

Elementos de Definicin
Los elementos ms comunes utilizados para definir una Expresin Regular son:
Smbolo * + ? () | \ ^ [] $
27

Ejemplo 1*234 a+bbc 0?11 (abc) (si|no|talvez) \t, \n ^M escrib[aoe] Fin$

Resultado Vale= 1234, 234,111234 Vale= abbc, aabbc, aaabbc Vale= 11, 011 Genera= abc Vale= si, no, talvez Tabulador, fin de lnea Lineas que comienzan con M Vale= escriba, escribo, escribe Palabras que terminan con Fin

Elementos de Definicin

Cerradura de Kleene
Tambin llamada Cerradura de Estrella se define como:
A*= U n0 An

La cadena se forma al realizar 0 o ms concatenaciones de los smbolos o caracteres que aplica. a* = { , a, aa, aaa, aaaa, aaaaa } 0*21 = { 21 , 021, 0021, 00021 }

28

Elementos de Definicin

Cerradura Positiva
Se define como: A+ = n>0 An Donde la cadena esta formada por al menos una repeticin de la cadena. a+ = { a, aa, aaa, aaaa, aaaaa} hi+ = { hi, hii, hiii, hiiii } mi+au+ = { miiiiau, miiiauuuuu, miau }

29

Elementos de Definicin

Aparicin
Utiliza el smbolo ? para indicar si el carcter que lo precede puede aparecer o no dentro de la cadena. a? = { , a } (sub)?marino = { submarino, marino}

30

Elementos de Definicin

Agrupacin
Se utilizan los parntesis para agrupar los caracteres del alfabeto que se utilizan.Y la precedencia de los operadores que se utilizan. (bis|tatar)?abuel(o|a) = { abuelo, bisabuelo, tatarabuelo, bisabuela } (0|1)0 = {10 , 00 }

31

Elementos de Definicin

Alternativa
Utiliza la barra | para indicar que puede existir alguna alternativa dentro de los smbolos o caracteres. blanco|negro = { blanco , negro } norte|sur|este|oeste = { sur, este, norte} (m|p)adre = { madre, padre }

32

Elementos de Definicin

Caracter Especial
Se utiliza la barra invertida \ para denotar un caracter especial \t describe espacios tabuladores \ describe una comilla \n indica el fin de una lnea \f indica un salto de pagina

33

Elementos de Definicin

Agrupacin de Caracteres
Se utilizan los corchetes [ ] para agrupar clases de caracteres, as se define una gama de smbolos relacionados entre s. Utilizando solo uno de ellos. [A-Z] = { A, B, D,Y, M, O, P } [0-9] = dgito del 0 al 9 [0-9]+.[0-9] = nmeros con un decimal.

34

Elementos de Definicin

Comienzo de lnea
El caracter ^ es utilizado para describir una cadena especfica la cual se encontrara en cada inicio de lnea ^usac describe todas las lneas que inician con la palabra usac ^Numero:[0-9]+ lneas que comienzan con la palabra Numero seguida de dos puntos y cualquier grupo de dgitos

35

Elementos de Definicin

Fin de palabra
El caracter $ es utilizado para indicar el fin de una palabra en cualquier cadena
z$ palabras que terminan con la letra z [aeiou]$ palabras que terminan en vocal

36

Precedencia
El orden de precedencia para los operadores es:
Parntesis () Cerraduras Concatenacin .

37

Ejemplo: Generacin de Palabras


Sea ER = (ab*) | (abc*) las palabras que genera son: Sea ER = z?x+(z*o)+ las palabras que genera son:

38

Ejemplo: Generacin de Palabras


Las palabras ms cortas que se obtienen de (01+0*) | (10?1) 01 , 11
a(b+c)*(ab)

aab

((ab+ba)|baab)*

abba , baab,

39

Ejemplo: Construccin ER
Expresar, mediante una expresin regular, el lenguaje formado por el alfabeto S = {a, b}, donde las palabras inician con a y finalizan siembre con bb

40

Ejemplo: Construccin ER
Expresar, mediante una expresin regular, el lenguaje formado por el alfabeto S = {a, b,c}, donde todas las cadenas no tiene ninguna subcadena ac se denota mediante la expresin regular:

41

GRAMTICAS y Expresiones regular


Relacin entre GR y ER

42

Relacin ER-LR
Expresin Regular Lenguaje {}

0
abc 0|1 (1|)001 (1|0)*(0|1)
43

{0}
{abc} {0,1} {1,e}{001}={1001,001} {1|0}*{0,1}={1110,000,.}

Equivalencia ER
Dos o ms expresiones regulares son equivalentes, si se

refieren al mismo lenguaje. ER Equivalente LR

011* 01+

01, 011,0111 0111, 01

44

Ejercicio
Escriba una expresin regular para el lenguaje denotado

por el alfabeto S={x, y, z} que reconozca cadenas que empiecen con x y terminen con z pero que no tengan dos y consecutivas:
RESPUESTA(una de tantas posibles):
x ( y? ( x | z )+ )* y? z

45