jueves, 15 de agosto de 2013

Gramática libre de contexto, ejemplo lenguaje c

Una gramática libre de contexto es un conjunto finito de variables, cada una de las cuales representa un lenguaje.
De la forma V W
Donde  V es un símbolo  no Terminal y W es una cadena de terminales y/o no terminales.

Tiene como origen la descripción de lenguajes naturales tal como se expresa en las siguientes reglas.

à
 –>
–>
–> niño
–> pequeño
Dónde:
Variables: ,, ,,.
Terminales: niño, pequeño.
Notación: Como ocurre en toda gramática formal que se ha estado estudiado en el curso se define mediante una cuádrupla de la siguiente manera.
G = (V, T, P, S)
V=El alfabeto de variables.
T=El alfabeto de símbolos terminales.
P=El conjunto de reglas de producción.
S=El símbolo inicial.


Las gramaticas libres de contexto pueden describir a gran parte de los lenguajes de programación, en el caso del lenguaje C, pongo el siguiente ejemplo que es la declaración de variables.

Las variables enteras en C se declaran de la siguiente manera.
chart a = 4 ;

lo que se puede traducir como
=;
chart
id
|n
id
0,1,2,3,4,5....9

G= (,{chart,=,;,n},P,})

C maneja entre otros los siguientes tipos básicos de datos
chart, short, int, enum, long, float, double

por lo que la gramatica se puede definir de la siguiente manera
;
int
chart
short
enum
float
double
→id

o utilizando |
;
int|chart|short|enum|float|double
id
|n
id
n 0,1,2,3,4,5....9

El árbol de derivación para
chart a = 4 ;
sería el siguiente
                           

Nueva versión del arbol

El siguiente sería el atómata de pila para chart id = 44;





Fuente: http://blog.gsystem.org/gramatica-de-libre-contexto/



         

miércoles, 7 de agosto de 2013

Autómata Finito de Ascensor

Tabla de Estado

q
σ
δ(q, σ)
0
0
0
0
1
1
0
2
2
1
0
0
1
1
1
1
2
2
2
0
0
2
1
1
2
2
2

Otra versión del autómata sin incluir autoreferencias