1.-DEFINE EN QUE CONSISTEN LAS GRAMÁTICAS LIBRES DE CONTEXTO una gramática libre de contexto (o de contexto libre) es una gramática formal en la que cada regla de producción es de la forma:
V → w
Donde V es un símbolo no terminal y w es una cadena de terminales y/o no terminales.
Así como cualquier gramática formal, una gramática libre de contexto puede ser definida mediante la 4-tupla:
G = (Vt,Vn,P,S) donde
• Vt es un conjunto finito de terminales • Vn es un conjunto finito de no terminales
• P es un conjunto finito de producciones
• el denominado Símbolo Inicial • los elementos de P son de la forma
2. DEFINE EN QUE CONSISTEN LOS ÁRBOLES DE DERIVACIÓN. Un árbol de derivación permite mostrar gráficamente cómo se puede derivar cualquier cadena de un lenguaje a partir del símbolo distinguido de una gramática que genera ese lenguaje.Un árbol es un conjunto de puntos, llamados nodos, unidos por líneas, llamadas arcos. Un arco conecta dos nodos distintos. 3. EXPLIQUE AMPLIAMENTE CUALES SON LAS PROPIEDADES DE LOS ARBOLES DE DERIVACIÓN.
Para ser un árbol un conjunto de nodos y arcos debe satisfacer ciertas propiedades:
- hay un único nodo distinguido, llamado raíz (se dibuja en la parte superior) que no tiene
arcos incidentes.
- todo nodo c excepto el nodo raíz 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 están conectados al nodo raíz mediante un único camino. - los nodos que no tienen hijos se denominan hojas, el resto de los nodos se denominan
nodos interiores.
El árbol de derivación tiene las siguientes propiedades:
- el nodo raíz está rotulado con el símbolo distinguido de la gramática; - cada hoja corresponde a un símbolo terminal o un símbolo no terminal; - cada nodo interior corresponde a un símbolo no terminal.
Para cada cadena del lenguaje generado por una gramática es posible construir (al menos) un árbol de derivación, en el cual cada hoja tiene como rótulo uno de los símbolos de la cadena.
4. DEFINE EN QUE CONSISTEN LAS FORMAS NORMALES DE CHOMSKY.
Una gramática libre de contexto G=(V,T,P,S) se dice estar en forma normal de
Chomsky si sus producciones son de cualquiera de las dos formas
• con , o bien • con y .
Toda gramática libre de contexto G=(V,T,P,S) que no genere a la palabra vacía se puede transformar en una gramática libre de contexto G'=(V',T,P',S') en forma normal de Chomsky.
En efecto, dada una gramática G, apliquemos el último procedimiento de la
sección anterior para transformar a G en una gramática G'' sin variables inútiles ni producciones vacías ni producciones unitarias equivalente a G. A las producciones que quedasen de la forma con y las dejamos sin cambio alguno. A cada
producción de la forma , con y , la transformamos en una sucesión de producciones de la forma siguiente: A cada símbolo terminal
que aparezca en la palabra le asociamos una variable nueva Xa e incorporamos la
producción . Así pues las producciones que no sean de la forma con X variable y a terminal, han de ser de la forma
5. DEFINE EN QUE CONSISTEN LAS FORMAS NORMALES DE GREIBACH.
Una gramática libre de contexto G=(V,T,P,S) se dice estar en forma normal de
Greibach si sus producciones son de la forma
Veremosque la construcción de formas normales de Greibach equivalentes
agramáticas dadas es procedimental. Para cualquier gramática libre decontexto G, definamos, para cada variable , a los conjuntos siguientes:
Primeramenteobservemos que podemos ``componer producciones'' de manera que tengamossiempre una gramática equivalente a la gramática dada.
(Composición de producciones) Si
es una producción en G y las producciones en P(Y) pueden escribirse como entonces al sustituir por las producciones
, obtenemos una gramática equivalente a G.
En efecto, en toda derivación terminal que aplique en un momento la producción
, necesariamente se ha de aplicar una producción en P(Y) para suprimir el símbolo
Y.
(Transformación de producciones ``reflexivas'') Para cada variable enumeremos
Q(X) y R(X) como
Sea Z una variable que no ocurra en V. Sea
la gramática que se obtiene al sustituir el conjunto de producciones P(X) por las producciones
6. EXPLIQUE EN QUE CONSISTE LA ELIMINACIÓN DE FACTORES COMUNES IZQUIERDOS.
Un automata finito o maquina de estado finito es un modelo matematico de un sistema que recibe una cadena constituida por simbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autamata reconoce.
Definicion formal Formalmente, un autoata finito (AF) puede ser descrito como una 5-tupla (S,W,T,s,A) donde: W es un alfabeto; S un conjunto de estados; T es la funcion de transicion: ; es el estado inicial; es un conjunto de estados de
aceptacion o finales. Ejemplo 1 w= {0,1}, S = {S1, S2}, T =
{(S1,0,{S2});(S1,1,{S1});(S2,0,{S1});(S2,1,{S2})} s = S1 A = {S1}. Formas de representar un automata finito Ademas de notar un AF a traves de su definicion formal es posible representarlo a traves de otras notaciones que resultan mas comodas.
7. EXPLIQUE EN QUE CONSISTE LA ELIMINACIÓN DE RECURSIVIDAD IZQUIERDA.
Tipos de recursividad
Directa. Una gram¨¢tica G es recursiva si tiene alguna Directa. Una gram¨¢tica G es recursiva si tiene alguna regla de producci¨®n que sea recursiva por la
izquierda regla de producci¨®n que sea recursiva por la izquierda A := A¦Á
Indirecta. Si, a partir de una forma sentencial que Indirecta. Si, a partir de una forma sentencial que empieza por un no terminal se puede derivar una nueva empieza por un no terminal se puede derivar una nueva forma no sentencial donde reaparece
al principio el forma no sentencial donde reaparece al principio el no Terminal. A¦Á =>* A¦Â¦Á Directa: A := A¦Á | ¦Â A := ¦ÂA¡¯ A¡¯ := ¦ÁA¡¯ A¡¯ := ¦Å Indirecta:
Ordenar no terminales: A1, A2, ¡ An For i := 1 To n Do
For j := 1 To i ¨C 1 Do
Sustituir cada Ai := Aj ¦Â por Ai := ¦Á1 ¦Â | ¦Á2 ¦Â | ¦Ák ¦Â donde Aj := ¦Á1 | ¦Á2 | ¡ | ¦Ák producciones actuales de Aj
Eliminar la recursividad directa de Ai
A<Z
8. EXPLIQUE EN QUE CONSISTE LA ELIMINACIÓN DE LA AMBIGÜEDAD. Una gramática ambigua permite más de una derivación para la misma forma sentencial por lo que también habrá más de un [árbol de derivación] para la misma. Por ello basta con encontrar dos [árboles derivación] distintos para la misma forma sentencial para demostrar que una gramática es ambigua. A continuación se presentan conceptos importantes dentro del estudio de las características de las gramáticas:
AMBIGÜEDAD:
Sea G = { N , T , P , S } una gramática libre de contexto y sea L(G) el lenguaje generado por esa gramática.
Si existe un string w (donde w oe L(G) ) para el cual existen dos ó más formas de realizar la derivación de más a la izquierda (S ˘ w) ó existen dos ó más formas de realizar la derivación de más a la derecha (S ¿ w), entonces se dice que: G es una gramática ambigua.
TIPOS DE AMBIGÜEDAD:
Dentro del estudio de gramáticas existen dos tipos fundamentales de ambigüedad, los cuales son:
Ambigüedad Inherente: Las gramáticas que presentan este tipo de ambigüedad no pueden utilizarse para lenguajes de programación, ya que por más
transformaciones que se realicen sobre ellas, NUNCA se podrá eliminar completamente la ambigüedad que presentan.
Ambigüedad Transitoria: Este tipo de ambigüedad puede llegar a ser eliminada realizando una serie de transformaciones sobre la gramática original. Una vez que se logra lo anterior, la gramática queda lista para ser reconocida por la mayor parte de los analizadores sintácticos. (Se le considera "ambigüedad" porque existen métodos para realizar análisis sintáctico que no aceptan gramáticas con estas características)
9. DEFINE EN QUE CONSISTE UN AUTÓMATAS PUSH-DOWN Y CUALES SON SUS ELEMENTOS (DESCRIBE CADA UNO DE ELLOS).
Un autómata de pila o Push-Down es un autómata que cuenta con un mecanismo que permita almacenamiento ilimitado y opera como una pila.
El autómata de pila (se abrevia PDA de sus siglas en inglés Push-Down Autómata) tiene una cinta de entrada, un control finito y una pila.
La pila es una cadena de símbolos de algún alfabeto. El símbolo que se encuentra más a la izquierda se considera como que está en la “cima”. El dispositivo será no
determinístico y tendrá un número finito de alternativas de movimiento en cada situación
Los movimientos serán de dos tipos. En el primer tipo de movimiento se utiliza un símbolo de entrada. Dependiendo del símbolo de entrada, del símbolo de la cima y
el estado de control finito, es posible un número de alternativas.
Cada alternativa consiste en un estado posterior para el control finito y una cadena (posiblemente vacía) de símbolos, para sustituir al símbolo que se encuentra en la
cima de la pila.
Una gramática es una estructura algebraica formada por cuatro elementos fundamentales:
G = { NT, T, S, P } donde
• NT es el conjunto de elementos No Terminales
• T es el conjunto de elementos Terminales
• S es el Símbolo inicial de la gramática
• P es el conjunto de Reglas de Producción
10. DEFINE EN QUE CONSISTEN LOS LENGUAJES NO REGULARES. Lenguajes no regulares
•Existen lenguajes que no son regulares y técnicas para demostrarlo: “El lema de bombeo”
Idea de la demostración: •Si L es regular, existe M = (Q, tiene un nofinito de estados. •Deben existir 0iy 0jcon i
•Esto significa que δ*(q0, 0i1i) = ∉L. Llegamos a un contradicción.
11. ILUSTRE EL DISEÑO DE UN AUTÓMATA PUSH
12. EXPLIQUE AMPLIAMENTE EN QUE CONSISTE LA FUNCIÓN DE UN COMPILADOR.
Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programación a lenguaje máquina. Además de un traductor, se
pueden necesitar otros programas
programa fuente se puede dividir en módulos almacenados en archivos distintos. La tarea de reunir el programa fuente a menudo se confía a un programa distinto, llamado preprocesador. El preprocesador también puede expandir abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente.
Normalmente la creación de un programa Windows o DOS) conlleva
(propiamente dicho) y traduce el código fuente escrito en un programación almacenado en un ar
código objeto, no directamente a lenguaje máquina). El segundo paso se llama
enlazado en el cual se enlaza el código de bajo nivel generado de
ficheros y subprogramas que se han mandado compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable Idea de la demostración:
•Si L es regular, existe M = (Q, Σ, δ, q0, F) un AFDt que lo reconoce. Adem e estados.
•Deben existir 0iy 0jcon i ≠j tales que δ*(q0, 0i) = δ*(q0, 0j) *(q0, 0i1i) = δ*(q0, 0j1i), pero por un lado 0i1i L. Llegamos a un contradicción.
11. ILUSTRE EL DISEÑO DE UN AUTÓMATA PUSH-DOWN.
12. EXPLIQUE AMPLIAMENTE EN QUE CONSISTE LA FUNCIÓN DE UN
Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programación a lenguaje máquina. Además de un traductor, se
pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa fuente se puede dividir en módulos almacenados en archivos distintos. La tarea de reunir el programa fuente a menudo se confía a un programa distinto,
. El preprocesador también puede expandir abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente.
Normalmente la creación de un programa ejecutable (un típico.exe para ) conlleva dos pasos. El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de
almacenado en un archivo a código en bajo nivel (normalmente en código objeto, no directamente a lenguaje máquina). El segundo paso se llama
en el cual se enlaza el código de bajo nivel generado de
ficheros y subprogramas que se han mandado compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable
, q0, F) un AFDt que lo reconoce. Además, M
*(q0, 0j1i), pero por un lado 0i1i ∈L y por otro 0j1i
12. EXPLIQUE AMPLIAMENTE EN QUE CONSISTE LA FUNCIÓN DE UN
Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programación a lenguaje máquina. Además de un traductor, se
para crear un programa objeto ejecutable. Un programa fuente se puede dividir en módulos almacenados en archivos distintos. La tarea de reunir el programa fuente a menudo se confía a un programa distinto,
. El preprocesador también puede expandir abreviaturas,
(un típico.exe para Microsoft dos pasos. El primer paso se llama compilación
lenguaje de
chivo a código en bajo nivel (normalmente en código objeto, no directamente a lenguaje máquina). El segundo paso se llama
en el cual se enlaza el código de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable
pueda comunicarse directamente con el sistema operativo, traduciendo así
finalmente el código objeto a código máquina, y generando un módulo ejecutable. Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilación en archivos objetos (un típico.obj para Microsoft Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes (por ejemplo C, C++ y Asm), que se podrían compilar de forma independiente y luego enlazar juntas para formar un único módulo ejecutable.
13. CUALES SON LAS CLASIFICACIONES DE UN COMPILADOR
Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categorías:
• Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
• Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. • Compiladores de una sola pasada: generan el código máquina a partir de
una única lectura del código fuente.
• Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
• Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.