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