TEORIA DE LENGUAJES DE PROGRAMACIÓN

Gramatica
Es un ente formal para especificar, de manera finita, el conjunto de cadenas de simbolos que constituyen un lenguaje.
Se definene
$$ G = \langle V, \sum, P, S \rangle$$
Gramaticas Formales
\(\sum\): Alfabeto de símbolos terminales. Todas las cadenas del lenguaje representado por la G (L(G)) están formadas con símbolos de este alfabeto.
\(V\): Alfabeto de símbolos No Terminales. Conjunto de símbolos auxiliares introducidos como elementos auxiliares para la definición de G pero que no figuran en las cadenas de L(G).
\(S\): Axioma o símbolo destacado. Es un símbolo NT a partir del que se comienzan a aplicar las reglas de P.
\(P\): conjunto de reglas de producción: \(\alpha\rightarrow \beta\) donde \(\alpha\in V^+\) y \(\beta\in\sum^*\)
Tipo 1 CSG
\( |\alpha| \leq |\beta|\)
Tipo 2 CFG
\( |\alpha| = 1 \)
Tipo 3 RG
\(|\alpha| = 1 \)
\(|\beta|_t =1 \)
\(|\beta|_T =1 \)
Notacion
- Mayusculas ( A , B, C, ... Z) para representar las variables
- Minusculas (a, b, c, ... ) para represental simbolos terminales
- Minusculas finales (... , w, x, y, z) para representar palabras formadas por terminales
- Minusculas griegas \( ( \beta, \alpha, .. )\) para representar palabras sobre \( (V \cup \sum)^* \), llamadas cadenas intermedias
Ejemplo
$$ S \rightarrow aBS | bAS | \lambda$$
$$ A \rightarrow bAA | a $$
$$ B \rightarrow aBB | b $$
Ejercicio
Escriba una gramática que genere:
- Números enteros
- Números binarios
Números enteros
Sea \( G = (V, \sum, S, P) \), \( V = \{<número>, <digitó>\} \) , \( \sum = \{0,1,2,3,4,5,6,7,8,9\}\) y \( S = <número>\) , Las producciones son
$$ <número> \rightarrow <digitó><número> $$
$$<número> \rightarrow <digitó>$$
$$<digitó> \rightarrow 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 $$
Relación de derivación
Se dice que dos cadena intermedias \( \alpha, \beta \in ( V \cup \sum)^* \) de un G dada hay una derivación directa, cuando \( \alpha \) y \( \beta\) pueden descomponerse de la forma \( \alpha = \gamma A \delta \) y \( \beta = \gamma \epsilon \delta \), donde \( \gamma, \delta, \epsilon \) son también palabras de \( (V \cup \sum)^* \)
$$G = (V, \sum, S,P ) V= \{S\}, \sum = \{a,b\} $$
$$ S \rightarrow ab $$
$$ S \rightarrow aSb $$
Ejemplo de derivación directa
$$ S \rightarrow aabb$$
Relación de derivación
Se dice que dos cadena están en relación de derivación cuando existe \( \alpha_1 , \alpha_2, \alpha_3 , ... ,\alpha_m\) tales que
$$\alpha_1\rightarrow \alpha_2 $$
$$ \alpha_2 \rightarrow \alpha_3 $$
$$ \alpha_{(m-1)} \rightarrow \alpha_m $$
Por lo que se puede decir que \( \alpha_m\) deriva de \(\alpha_1\) , o que \(\alpha_1\) produce \(\alpha_m\) así:
$$ \alpha \Rightarrow \beta $$
Lenguaje generado
Dada una gramática \(G = \langle V, \sum, P, S \rangle \), se llama lenguaje generado, al conjunto de palabras para las cuales existe una derivación que lleva de la variable inicial a la palabra considerada, se representa como \(L(G)\)
$$ L(G) = \{ w\in{\sum}^* | S \Rightarrow w \} $$
Gramática ambigua
Decimos que una gramática es ambigua cuando es posible construir dos árboles de derivación que correspondan a una misma palabra.
06 - [TLP] Gramaticas Formales
By Néstor Aldana
06 - [TLP] Gramaticas Formales
- 79