Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Gramaticas
1.
2. Gramática
La Gramática es el estudio de las reglas y principios que
regulan el uso de las lenguas y la organización de las
palabras dentro de una oración.
La tarea de proveer una descripción bien concisa y
entendible de un lenguaje de programación es difícil pero
esencial para el éxito de un lenguaje. Uno de los problemas
en describir un lenguaje es la diversidad de gente que debe
comprender esas descripciones.
Javi
3. Las personas que implementan obviamente deben ser
capaces de determinar cómo se forman las expresiones,
sentencias y unidades de programas y también el orden de
ejecución de los mismos. La dificultad del trabajo que tiene
esta gente (los implementadores) está determinado en parte
por la claridad y complejidad de las descripciones del
lenguaje. La sintaxis de un lenguaje de programación
describe la forma correcta en la cual las sentencias,
expresiones y unidades de programa se deben escribir,
mientras que la semántica denota el significado de esas
sentencias, expresiones y unidades de programa. Por
ejemplo la sintaxis de una sentencia Pascal if then es:
if <condición> then <sentencia> Javi
4. La semántica de esta sentencia es que si el valor actual de la
condición es verdadero, se ejecutará <sentencia>.
Describir sintaxis es más fácil que describir semántica, ya
que existen notaciones aceptadas universalmente para la
descripción de sintaxis y no así de semánticas.
En la definición de un lenguaje de programación la sintaxis
usualmente se expresa en BNF (Backus- Naur Form) y la
semántica está expresada en lenguaje natural (español,
inglés, etc). BNF es un ejemplo de un metalenguaje, es decir,
un lenguaje usado para definir otros lenguajes. Algol 60 fue
el primer lenguaje que utilizó BNF para su descripción
sintáctica.
Javi
5. Una gramática consiste de un conjunto de no-
terminales, terminales y una serie de reglas de
producción. Un no-terminal está definido en una regla
de producción, mientras que un terminal es un símbolo
del lenguaje que se está definiendo. En una regla de
producción el no-terminal (que aparece en la parte
izquierda) está definido en términos de una secuencia de
no-terminales y terminales (que se encuentran en la
parte derecha )
Javi
7. Así, el identificador “ab1” puede ser derivado de
<identificador>como sigue:
Sintaxis y Semántica del Lenguaje
<identificador>
<identificador><dígito>
<identificador> <letra>><dígito>
<letra><letra><dígito>
a <letra><dígito>
a b <dígito>
a b 1
Javi
8. En cada etapa, el no-terminal de más a la izquierda es
reemplazado por la parte derecha de una de sus reglas de
producción, la secuencia de terminales y no-terminales
producidos en cada etapa en una derivación se conoce como
formas senténciales. La forma sentencia final (que ya no
contiene símbolos no-terminales) se conoce como una
sentencia.
La estructura de una derivación se muestra mejor en un
árbol de derivación. árbol de derivación que muestra cómo
ab1 de
Javi
10. Gramática Formal
Una gramática formal es un objeto o modelo matemático
que permite especificar un lenguaje, ya sea este lenguaje
formal o un lenguajes natural.
La expresión ‹‹gramática formal›› tiene dos sentidos:
• Gramática de un lenguaje formal
• Descripción formal de parte de la gramática de un
lenguaje natural
Javi
11. Hay distinto tipo de gramáticas formales que general
gramáticas formales y esto lo veremos mas adelante en la
jerarquía de Chomsky.
Imaginemos una gramática con esta dos reglas:
La idea es sustituir el símbolo inicial de la izquierda por
otro símbolos aplicando las reglas.
Ejemplo:
A bAc bbAcc bbbAccc bbbdeccc
Javi
12. El elemento en mayúscula es el símbolo inicial. Los
elementos el minúscula son símbolos terminales. Las
cadenas de la lengua son aquellas que solo contienen
elementos terminales, como por ejemplo:
Bbbdeccc, de, bdec,….. Estas serian tres posibles
relaciones del lenguaje cuya gramática hemos definido
con dos reglas.
• Elementos que constituyen la gramática
formal: una gramatica formal es un modelo
matemático compuesto por una serie de categorías
sintácticas que se combinan entre si por medio de unasRichar
13. Existen una única categoría superior que denota
cadenas completas y validas.
• Mecanismo de especificación: por medio de estos
elementos constituyentes se define un mecanismo de
especificación consistente en repetir el mecanismo de
sustitución de una categoría superior y finalizando
cuando la oración ya no contiene ninguna categoría.
Richar
14. Es decir que una gramática formal es una cuádrupla
G=(N,T,S,P) donde:
Richar
15. Gramática Regular
La gramática regular o de estado finito son de la forma:
• Lineal por la derecha;
A aB o A a, donde A,B € ∑N , a € ∑T
• Lineal por la izquierda
A Ba o A a, donde A,B € ∑N , a € ∑T
Richar
21. Jerarquía de chomsky
Chomsky clasificó las gramáticas en cuatro grandes grupos
: G0, G1, G2 y G3. Cada uno de estos grupos incluye las
gramáticas del siguiente, de acuerdo con el siguiente
esquema:
Richar
22. 1. gramáticas tipo 0
Las reglas de producción tienen la forma
u : : = v
donde u € ∑+, v € ∑ *, u = xAy con x € ∑ *, y €
∑ *, A € ∑ N sin otra restricción
En las reglas de producción: • La parte izquierda no
puede ser la palabra vacía. • En la parte izquierda (u) ha
de aparecer algún símbolo no terminal.
Richar
23. Los lenguajes representados por estas gramáticas
reciben el nombre de lenguajes sin restricciones. Puede
demostrarse que todo lenguaje representado por este
tipo de gramáticas pueden ser descritos también por un
grupo de gramáticas un poco más restringido (llamado
de gramáticas de estructura de frases), cuyas
producciones tienen la forma xAy ::= xvy, donde x, y, v
€ ∑ *,, siendo A un símbolo no terminal.
Richar
24. En las gramáticas compresoras, las derivaciones pueden
ser decrecientes, ya que la longitud de las palabras puede
disminuir en cada uno de los pasos de derivación.
Ejemplo: sea G = ({a, b}, {A, B, C}, A, P), donde
P:
A ::= aABC | abC
CB ::= BC
bB ::= bb
bC ::= b
Richar
25. 2. Gramática de tipo 1
Las reglas de producción de esta gramática tienen la
forma
xAy ::= xvy
donde x, y € ∑*, v € ∑+ y A ha de ser un símbolo no
terminal. (A puede transformarse en v sólo si aparece en
el contexto definido por x e y)
Richar
26. Ya que v no puede ser la palabra vacía, se deduce de aquí
que este tipo de gramáticas no pueden tener reglas
compresoras. Se admite una excepción en la regla S ::=
(siendo S el axioma de la gramática). Como consecuencia
se tiene que la palabra vacía pertenece al lenguaje
generado por la gramática sólo si contiene esta regla.
Los lenguajes generados por este tipo de gramticas se
denominan “dependientes del contexto”.
Richar
27. 3. Gramática de tipo 2
Los lenguajes generados por este tipo de gramáticas se
denominan independientes de contexto, ya que la
conversión de A en v puede realizarse independientemente
del contexto en que aparezca A.
Martin
28. La mayor parte de los lenguajes de programación de ordenadores
pueden describirse mediante gramáticas de este tipo.
• Ejemplo : sea la gramática G = ({a, b}, {S}, S, { S ::= aSb | ab}).
Es una gramática de tipo 2. La derivación de la palabra aaabbb
será:
S aSb aaSbb aaabbb
Puede verse que el lenguaje definido por esta gramática es {an bn |
n=1, 2, ...}
Un mismo lenguaje puede generarse por muchas gramáticas
diferentes. Sin embargo, una gramática determinada describe
siempre un lenguaje único.
Martin
30. Árbol de derivaciones
A toda derivación de una gramática de tipo 1, 2 ó 3 le
corresponde un árbol de derivación. Este árbol se construye así:
• La raíz del árbol corresponde al axioma de la gramática
• Una derivación directa se representa por un conjunto de ramas
que salen de un nodo determinado. Al aplicar una regla, uno de
los símbolos de la parte izquierda de la producción queda
sustituido por la palabra de la parte derecha. Por cada uno de
los símbolos de x se dibuja una rama, que parte del nodo
correspondiente al símbolo sustituido.
Martin
31. • En cada rama, el nodo de partida se denomina padre. El
final se denomina hijo del primero. Dos nodos hijos del
mismo padre se denominan hermanos. Un nodo es
ascendiente de otro si es su padre o ascendiente de su
padre. Un nodo es descendiente de otro si es su hijo o es
descendiente de su hijo.
A lo largo del proceso de construcción del árbol, los nodos
finales de cada paso, leídos de izquierda a derecha, forman la
forma sentencia obtenida por la derivación representada por
el árbol. Será rama terminal aquella dirigida hacia un
símbolo terminal. Este nodo se llama hoja. El conjunto de
hojas, leído de izquierda a derecha, forma la sentenciaMartin
32. • Ejemplo : sea la gramática
G = ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},{N,C}, N, {N ::= C | NC,
C::=0|1|2|3|4|5|6|7|8|9})
Consideraremos la derivación :
N NC NCC CCC 2CC 23C 234
El árbol de derivación correspondiente es:
Martin
33. Maquina de Turing(MT)
Es un dispositivo de reconocimientos de lenguaje, es más
general que cualquier autómata finito y cualquier
autómata de pila, debido a que ellas pueden reconocer
tanto los lenguajes regulares, como los lenguajes
independientes de contexto y además muchos otros tipos
de lenguajes.
Martin
34. La máquina de Turing (abreviado MT) tiene, un control
finito, una cabeza lectora y una cinta donde puede haber
caracteres, y donde eventualmente viene la palabra de
entrada. La cinta es de longitud infinita hacia la derecha,
hacia donde se extiende indefinidamente, llenándose los
espacios con el carácter blanco (que representaremos con
“t”). La cinta no es infinita hacia la izquierda, por lo que
hay un cuadro de la cinta que es el extremo izquierdo, la
MT la cabeza lectora es de lectura y escritura, por lo que la
cinta puede ser modificada en curso de ejecución. Además,
en la MT la cabeza se mueve bidireccionalmente
(izquierda y derecha), por lo que puede pasar repetidasMartin
35. Este modelo está conformado por un alfabeto de entrada
y uno de salida, un símbolo especial llamado
blanco(normalmente b, Δ o 0), un conjunto de estados
finitos y un conjunto de transiciones entre dichos
estados. Su funcionamiento se basa en una función de
transición, que recibe un estado inicial y una cadena de
caracteres(la cinta, la cual es finita por la izquierda)
pertenecientes al alfabeto de entrada.
Martin
36. • La máquina de Turing consta de un cabezal
lector/escritor y una cinta infinita en la que el cabezal
lee el contenido, borra el contenido anterior y escribe
un nuevo valor. Las operaciones que se pueden realizar
en esta máquina se limitan a: avanzar el cabezal
lector/escritor hacia la derecha. Avanzar el cabezal
lector/escritor hacia la izquierda. El cómputo es
determinado a partir de una tabla de estados de la
forma: (estado, valor) (nuevo estado, nuevo valor,
dirección)
Martin
37. • Como funciona la maquina de turing
Una máquina de Turing es un dispositivo que transforma
un INPUT en un OUTPUT después de algunos pasos.
Tanto el INPUT como el OUPUT constan de números en
código binario (ceros y unos). En su versión original la
máquina de Turing consiste en una cinta infinitamente
larga con unos y ceros que pasa a través de una caja. La
caja es tan fina que solo el trozo de cinta que ocupa un
bit (0 ó 1) está en su interior. La máquina tiene una serie
de estados internos finitos que también se pueden
numerar en binario.
Martin
38. Una instrucción típica podría ser: 01 11011i
La traducción es como sigue: si la máquina se encuentra en
el estado interno 0 y lee 1 en la cinta, entonces pasará al
estado interno 1101 (13), escribirá 1 y se moverá hacia la
izquierda un paso (la cinta se moverá hacia la derecha).
A continuación es conveniente inventar una notación para
la secuencia del INPUT. Esta notación se llama notación
binaria expandida. Consiste en cambiar la secuencia
original binaria por otra construida de la siguiente forma:
el 0 se cambia por 0 y el 1 por 10 y se ponen un cero a la
izquierda y/o a la derecha del resultado si empieza o acaba
en 1 respectivamente. Martin
39. La máquina de Turing consta de un cabezal lector/escritor
y una cinta infinita en la que el cabezal lee el contenido,
borra el contenido anterior y escribe un nuevo valor. Las
operaciones que se pueden realizar en esta máquina se
limitan a:
• avanzar el cabezal lector/escritor hacia la derecha.
Martin
40. • avanzar el cabezal lector/escritor hacia la izquierda.
El cómputo es determinado a partir de una tabla de
estados de la forma:
(estado, valor) (nuevo estado, nuevo valor, dirección)
Martin