Gramaticas Regulares

4

Click here to load reader

Transcript of Gramaticas Regulares

Page 1: Gramaticas Regulares

6/9/2008

1

1

Gramáticas Regulares

Sección 3.3.2

2

Autómata de estados finito

Un autómata de estados finito (FSA) es un grafo con

arcos dirigidos y con etiqueta, dos tipos de nodos

(estado final y no final), y un estado inicial único:

Esto es también llamado

máquina de estados.

¿que cadena, que se inicia en

estado A, termina en estado C?

El lenguaje aceptado por la máquina M es un conjunto de

cadenas que se mueve del nodo inicial a un nodo

final, o más formalmente: T(M) = { | (A,) = C} donde A es el nodo inicial y C un nodo final.

3

Mas FSA

Un FSA puede tener más de un estado final:

4

Autómatas Deterministicos

Deterministicos: Para cada estado y para cada miembro

del alfabeto existe exactamente una transición.

No-deterministicos FSA (NDFSA): remueve la restricción.

• En cada nodo existe 0, 1, o más de una transición

para cada símbolo del alfabeto.

• Una cadena es aceptada si existe algún sendero del

estado inicial a algún estado final.

Ejemplo de un FSA no deterministico (NDFSA):

01 es aceptado vía el sendero:

ABD

A pesar de que 01 puede tomar

también los siguientes senderos:

ACC o ABC

y C no es el estado final.

Page 2: Gramaticas Regulares

6/9/2008

2

5

Equivalencia de FSA y NDFSA

Resultado inicial importante:

NDFSA = DFSA

Subconjuntos de estados son

Estados en DFSA.

Siga el subconjunto en que

puede estar.

Cualquier cadena desde

{A} a {D} o {CD}

representa un sendero

desde A a D en el

NDFA original.

6

Expresiones regulares

Se puede escribir lenguaje regular como una expresión:

0*11*(0|100*1)1*|0*11*1

Operadores:

• Concatenación

• O (| o algunas veces escrito como )

• Cerramiento de Kleene (* - 0 o más instancias)

7

Gramáticas regulares

Una gramática regular es una gramática

de contexto libre donde toda

producción es una gramática de

contexto libre de una de dos formas:

• X aY

• X a

para X, Y N, a T

Teorema: L(G) para una gramática regular G es un

equivalente a T(M) para FSA M.

La prueba es “constructiva”. Esto es dado G o M,

podemos construir el otro [siguiente slide]

8

Equivalencia de FSA y gramáticas regulares

Page 3: Gramaticas Regulares

6/9/2008

3

9

BNF extendido

Existe una notación extendida para las reglas de BNF.

No le añade poder a la sintaxis, es solo una manera

de escribir las producciones:

| - Escoger

( ) - Agrupar

{}* - Repetir - 0 o más veces

{}+ - Repetir - 1 o más veces

[ ] - Opcional

Ejemplo: identificador – una letra seguida de 0 o más

letras o dígitos:

BNF extendido BNF regular

I L { L | D }* I L | L M

L a | b |... M CM | C

D 0 | 1 |... C L | D

L a | b |...

D 0 | 1 |...

10

Notación EBNF para sentencias de asignación

<sentencia de asignación>::= <variable>= <expresión aritmética>

<expresión aritmética>::= <término> {[ + | - ] <término>}*

<término>::= <primario> {[ * | -]<primario>}*

<primario>::= <variable>|<número>|

(<expresión aritmética>)

<variable>::= <identificador>|

<identificador>[<lista subscrita>]

<lista subscrita>::=<expresión aritmética>

{,<expresión aritmética>}*

11

Diagramas sintácticos

También llamados diagramas de ferrocarril.

Trace un sendero en la red: Una L seguida o repetida

por mallas a través de L y D, por ejemplo, BNF

extendido:

L L (L | D)*

12

Diagrama sintáctico para expresiones regulares

Page 4: Gramaticas Regulares

6/9/2008

4

13 14

¿Por que nos preocupamos de lenguajes regulares?

Programas están compuestos de tokens:

• Identificador

• Número

• Palabra clave

• Símbolos especiales

Cada una de estas puede ser definidas por gramáticas

regulares. (siguiente slide.)

Problema: Como podemos manejar operadores de símbolos

múltiples (por Ej.., ++ en C, =+ en C, := en Pascal)?

?? –estados finales múltiples?

15

Muestras de clases de token

16

Resumen de FSA

Barrido (Scanner) para un lenguajes tiende a ser un

gigante NDFSA para la gramática (es decir, tiene

reglas desde el estado inicial al estado inicial de

cada tipo de token del slide anterior).

integer

identifier

keyword

symbol