Gramática de Expresiones Matemáticas

También podría gustarte

Está en la página 1de 13

UNIVERSIDAD DE CONCEPCIÓN

FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA

Tarea 2:
Expresiones
matemáticas
POR: JOAQUÍN BAHAMONDE B.

Trabajo presentado a la Facultad de Ingeniería de la Universidad de Concepción.

Profesora: María Angélica Pinninghoff J.

Alumno ayudante: Carlos Landero A.

Fecha: Octubre 12, 2018.

Concepción, Chile.
Algunas definiciones…
Uno de los campos más importantes estudiados en el curso, es la
comprensión de las gramáticas, las cuales, tienen como fin el generar algún
lenguaje en específico. Lenguaje es toda combinación de strings de algún largo
determinado que son válidos para una máquina. El generar un lenguaje es algo de
suma importancia, ya que, bastantes arquetipos usados por los informáticos hoy en
día son producto de esto. Sin ir más lejos, todos los lenguajes de programación
compilados, son producto de un lenguaje generado. Sabida la importancia que
conllevan estos, es interesante recalcar que existen distintas gramáticas que van a
permitir generar distintos lenguajes. Entre las más destacadas, se encuentran las
gramáticas independientes del contexto. Estas, tienen como peculiaridad, que son
relativamente fáciles de originar y permiten generar lenguajes bastante interesantes
y útiles. Toda gramática libre de contexto, al igual que todas las gramáticas,
presentan una estructura formal que las definen. Esta es, siendo G la gramática:

𝐺 = ( 𝑉, Ʃ, 𝑆, 𝑅)
En donde:

- V corresponde al conjunto finito de estados no terminales, que son los que


pueden generar nuevas derivaciones de la gramática. Generalmente se
representan con letras mayúsculas.

- Ʃ al conjunto de estados terminales capaces de producir la gramática

(generalmente son caracteres de un alfabeto, por ejemplo {0,1} o {a, b, c,


d….,z}).

- 𝑆 al estado no terminal por el que se debe comenzar a generar la gramática.


Generalmente recibe el nombre de S.

- 𝑅 al conjunto de reglas de formación de las palabras.


Otro aspecto a tener en consideración en el ámbito de los lenguajes, es que
existen máquinas capaces de reconocerlos. Estás máquinas son las llamadas
autómatas finitos. Estos tienen como objetivo, el aceptar o rechazar algún string
a verificar si pertenece en el lenguaje o no. Para el caso particular de las
gramáticas independientes del contexto, se tienen los llamados autómatas de
pila. Estos autómatas tienen la particularidad de tener una “pila”, en donde será
posible ir empilando los caracteres que se deseen. Así, toda gramática
generadora de un lenguaje, tiene un autómata de pila que reconozca este
mismo. Un autómata de pila, siendo A el autómata, está definido por:

𝐴 = ( 𝑄, Ʃ, 𝛤, 𝛥, 𝑞0 , 𝑧0 , 𝐹)
En donde:

- Q corresponde al conjunto de estados del autómata. Generalmente se

enumeran con la letra “q” y un subíndice. EJ: Q = { 𝑞0 , 𝑞1 , 𝑞2}

- Ʃ corresponde al alfabeto reconocido por el autómata. Sigue la misma idea


del Ʃ de las gramáticas.
- Γ corresponde al alfabeto reconocido por la pila del autómata.
- Δ es el conjunto de transiciones presentes en el autómata.

- 𝑞0 corresponde al estado inicial del autómata.

- 𝑧0 corresponde al símbolo inicial de la pila.

- F corresponde al conjunto de estados finales del autómata.

Con estas definiciones mostradas, y conociendo las reglas que se deben


seguir para las gramáticas de libre contexto y generación de autómata de pila
equivalente, se describirá la problemática del lenguaje a generar mediante una
gramática independiente del contexto junto a su autómata de pila
correspondiente.
Problemática
En resumidas cuentas, se ha pedido diseñar una gramática, y a la vez un
autómata de pila, de expresiones matemáticas. Es decir, deben ser capaces de
reconocer y generar expresiones matemáticas válidas también llamadas
expresiones infijo. Pero esto no queda solo en las expresiones matemáticas infijo,
dado que también se han pedido diseñar 2 nuevos tipos de expresiones
matemáticas, las cuales son denominadas prefijo y sufijo.

Se mostrará un ejemplo para que muestra más claramente a que hace


referencia infijo, prefijo y sufijo.

- Expresión matemática en infijo: a + b * c


- Expresión matemática en prefijo: *c + ab
- Expresión matemática en sufijo: ab + c *

Se pidió generar una gramática independiente del contexto que genere cada una
de estos tipos de expresiones matemáticas y a la vez su autómata de pila
correspondiente que las reconozca.

Cada una de estas expresiones matemáticas pueden llevar solo dígitos entre 0
y 9, además de las operaciones +, -, * y /. Solo las expresiones infijo deben aceptar
paréntesis.
Gramáticas libres de contexto
Se procederán a definir, de manera formal, cada una de las gramáticas de
libre contexto que generarán los distintos tipos de expresiones matemáticas
mencionadas anteriormente. Notar que todas las gramáticas pueden generar un
único dígito, esto es así dado que a un único número se le puede considerar una
expresión matemática.

a) Expresión matemática infijo:

La gramática libre de contexto capaz de generar estás expresiones matemáticas


es la siguiente. Sea G la gramática:

𝐺 = ( 𝑉, Ʃ, 𝑆, 𝑅)

Con:

- 𝑉 = {S, OP, DIG}


- Ʃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, /, ( , )}
- 𝑆 = S.

- 𝑅 ={

 1,2,3 S → S OP S | (S) | DIG


 4,5,6,7 OP → + | - | * | /
 8,9,10,11,12,13,14,15 DIG → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
16,17

}
b) Expresión matemática con prefijo:

Para la generación de esta gramática, se siguió la misma idea de la gramática


anterior, simplemente cambiando el orden de las operaciones. La gramática libre de
contexto capaz de generar estás expresiones matemáticas es la siguiente. Sea G
la gramática:

𝐺 = ( 𝑉, Ʃ, 𝑆, 𝑅)
Con:

- 𝑉 = {S, OP, DIG}


- Ʃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / }
- 𝑆 = S.

- 𝑅 ={

 1,2 S → OP SS | DIG
 3,4,5,6 OP → + | - | * | /
 7,8,9,10,11,12,13,14,15 DIG → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
16

}
c) Expresión matemática con sufijo:

Para la generación de esta gramática, se siguió la misma idea de la gramática


anterior, simplemente cambiando el orden de las operaciones. La gramática libre de
contexto capaz de generar estás expresiones matemáticas es la siguiente. Sea G
la gramática:

𝐺 = ( 𝑉, Ʃ, 𝑆, 𝑅)
Con:

- 𝑉 = {S, OP, DIG}


- Ʃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / }
- 𝑆 = S.

- 𝑅 ={

 1,2 S → SS OP | DIG
 3,4,5,6 OP → + | - | * | /
 7,8,9,10,11,12,13,14,15 DIG → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
16

}
DEFINICIÓN AUTÓMATAS DE PILA
Se procederán a definir, de manera formal, cada uno de los autómatas de
pila que reconocerán los distintos tipos de expresiones matemáticas mencionadas
anteriormente. Cada uno de estos autómatas se generaron a partir de las reglas de
conversión de gramática de libre contexto a autómata de pila, es por esto que en
general estos autómatas son no deterministas.

a) Expresión matemática infijo:

El autómata de pila capaz de reconocer estás expresiones matemáticas es el


siguiente. Sea A el autómata:

𝐴 = ( 𝑄, Ʃ, 𝛤, 𝛥, 𝑞0 , 𝑧0 , 𝐹)
Con:

- 𝑄 = {𝑞1 , 𝑞2 , 𝑞3 }

- Ʃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, /, ( , ) }
- 𝛤 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / , ( , ), S, OP, DIG, 𝑧0 }

- 𝑞0 = 𝑞1
- 𝑧0 = 𝑧0
- 𝐹 = {𝑞3 }
- 𝛥 ={
1) 𝛥(𝑞1, 𝜀, 𝑧0 ) = {(𝑞2 , 𝑆𝑧0 )}
2) 𝛥(𝑞2, 𝜀, 𝑆) = {(𝑞2 , S OP S), (𝑞2 , (S)), (𝑞2, 𝐷𝐼𝐺)}
3) 𝛥(𝑞2, 𝜀, 𝑂𝑃) = {(𝑞2 , +), (𝑞2 , −), (q2 ,∗), (𝑞2 ,/)}
4) 𝛥(𝑞2, 𝜀, 𝐷𝐼𝐺 ) =
{(𝑞2 , 0), (𝑞2 , 1), (q2 , 2), (𝑞2 , 3), (𝑞2 , 4), (𝑞2 , 5), (q2 , 6), (𝑞2 , 7)(𝑞2 , 8), (𝑞2 , 9)}
5) 𝛥(𝑞2,0,0) = {(𝑞2 , 𝜀)}
6) 𝛥(𝑞2,1,1) = {(𝑞2 , 𝜀)}
7) 𝛥(𝑞2,2,2) = {(𝑞2 , 𝜀)}
8) 𝛥(𝑞2,3,3) = {(𝑞2 , 𝜀)}
9) 𝛥(𝑞2,4,4) = {(𝑞2 , 𝜀)}
10) 𝛥(𝑞2,5,5) = {(𝑞2 , 𝜀)}
11) 𝛥(𝑞2,6,6) = {(𝑞2 , 𝜀)}
12) 𝛥(𝑞2,7,7) = {(𝑞2 , 𝜀)}
13) 𝛥(𝑞2,8,8) = {(𝑞2 , 𝜀)}
14) 𝛥(𝑞2,9,9) = {(𝑞2 , 𝜀)}
15) 𝛥(𝑞2, +, +) = {(𝑞2 , 𝜀)}
16) 𝛥(𝑞2, −, −) = {(𝑞2 , 𝜀)}
17) 𝛥(𝑞2,∗,∗) = {(𝑞2 , 𝜀)}
18) 𝛥(𝑞2,/,/) = {(𝑞2 , 𝜀)}
19) 𝛥(𝑞2, (, () = {(𝑞2 , 𝜀)}
20) 𝛥(𝑞2, ), )) = {(𝑞2 , 𝜀)}
21) 𝛥(𝑞2, 𝜀, 𝑧0 ) = {(𝑞3 , 𝜀)}

}
b) Expresión matemática prefijo:

El autómata de pila capaz de reconocer estás expresiones matemáticas es el


siguiente. Sea A el autómata:

𝐴 = ( 𝑄, Ʃ, 𝛤, 𝛥, 𝑞0 , 𝑧0 , 𝐹)
Con:

- 𝑄 = {𝑞1 , 𝑞2 , 𝑞3 }

- Ʃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / }
- 𝛤 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / , S, OP, DIG, 𝑧0 }

- 𝑞0 = 𝑞1
- 𝑧0 = 𝑧0
- 𝐹 = {𝑞3 }

- 𝛥 ={
1) 𝛥(𝑞1, 𝜀, 𝑧0 ) = {(𝑞2 , 𝑆𝑧0 )}
2) 𝛥(𝑞2, 𝜀, 𝑆) = {(𝑞2 , OP SS), (q2 , 𝐷𝐼𝐺)}
3) 𝛥(𝑞2, 𝜀, 𝑂𝑃) = {(𝑞2 , +), (𝑞2 , −), (q2 ,∗), (𝑞2 ,/)}
4) 𝛥(𝑞2, 𝜀, 𝐷𝐼𝐺 ) =
{(𝑞2 , 0), (𝑞2 , 1), (q2 , 2), (𝑞2 , 3), (𝑞2 , 4), (𝑞2 , 5), (q2 , 6), (𝑞2 , 7)(𝑞2 , 8), (𝑞2 , 9)}
5) 𝛥(𝑞2,0,0) = {(𝑞2 , 𝜀)}
6) 𝛥(𝑞2,1,1) = {(𝑞2 , 𝜀)}
7) 𝛥(𝑞2,2,2) = {(𝑞2 , 𝜀)}
8) 𝛥(𝑞2,3,3) = {(𝑞2 , 𝜀)}
9) 𝛥(𝑞2,4,4) = {(𝑞2 , 𝜀)}
10) 𝛥(𝑞2,5,5) = {(𝑞2 , 𝜀)}
11) 𝛥(𝑞2,6,6) = {(𝑞2 , 𝜀)}
12) 𝛥(𝑞2,7,7) = {(𝑞2 , 𝜀)}
13) 𝛥(𝑞2,8,8) = {(𝑞2 , 𝜀)}
14) 𝛥(𝑞2,9,9) = {(𝑞2 , 𝜀)}
15) 𝛥(𝑞2, +, +) = {(𝑞2 , 𝜀)}
16) 𝛥(𝑞2, −, −) = {(𝑞2 , 𝜀)}
17) 𝛥(𝑞2,∗,∗) = {(𝑞2 , 𝜀)}
18) 𝛥(𝑞2,/,/) = {(𝑞2 , 𝜀)}
19) 𝛥(𝑞2, 𝜀, 𝑧0 ) = {(𝑞3 , 𝜀)}

}
c) Expresión matemática sufijo:

El autómata de pila capaz de reconocer estás expresiones matemáticas es el


siguiente. Sea A el autómata:

𝐴 = ( 𝑄, Ʃ, 𝛤, 𝛥, 𝑞0 , 𝑧0 , 𝐹)

Con:

- 𝑄 = {𝑞1 , 𝑞2 , 𝑞3 }

- Ʃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / }
- 𝛤 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, / , S, OP, DIG, 𝑧0 }

- 𝑞0 = 𝑞1
- 𝑧0 = 𝑧0
- 𝐹 = {𝑞3 }

- 𝛥 ={
1) 𝛥(𝑞1, 𝜀, 𝑧0 ) = {(𝑞2 , 𝑆𝑧0 )}
2) 𝛥(𝑞2, 𝜀, 𝑆) = {(𝑞2 , SS OP), (q2 , 𝐷𝐼𝐺)}
3) 𝛥(𝑞2, 𝜀, 𝑂𝑃) = {(𝑞2 , +), (𝑞2 , −), (q2 ,∗), (𝑞2 ,/)}
4) 𝛥(𝑞2, 𝜀, 𝐷𝐼𝐺 ) =
{(𝑞2 , 0), (𝑞2 , 1), (q2 , 2), (𝑞2 , 3), (𝑞2 , 4), (𝑞2 , 5), (q2 , 6), (𝑞2 , 7)(𝑞2 , 8), (𝑞2 , 9)}
5) 𝛥(𝑞2,0,0) = {(𝑞2 , 𝜀)}
6) 𝛥(𝑞2,1,1) = {(𝑞2 , 𝜀)}
7) 𝛥(𝑞2,2,2) = {(𝑞2 , 𝜀)}
8) 𝛥(𝑞2,3,3) = {(𝑞2 , 𝜀)}
9) 𝛥(𝑞2,4,4) = {(𝑞2 , 𝜀)}
10) 𝛥(𝑞2,5,5) = {(𝑞2 , 𝜀)}
11) 𝛥(𝑞2,6,6) = {(𝑞2 , 𝜀)}
12) 𝛥(𝑞2,7,7) = {(𝑞2 , 𝜀)}
13) 𝛥(𝑞2,8,8) = {(𝑞2 , 𝜀)}
14) 𝛥(𝑞2,9,9) = {(𝑞2 , 𝜀)}
15) 𝛥(𝑞2, +, +) = {(𝑞2 , 𝜀)}
16) 𝛥(𝑞2, −, −) = {(𝑞2 , 𝜀)}
17) 𝛥(𝑞2,∗,∗) = {(𝑞2 , 𝜀)}
18) 𝛥(𝑞2,/,/) = {(𝑞2 , 𝜀)}
19) 𝛥(𝑞2, 𝜀, 𝑧0 ) = {(𝑞3 , 𝜀)}

También podría gustarte