COCO R
Short Description
Download COCO R...
Description
Instituto Tecnológico de Tuxtla Gutiérrez
Ingeniería en Sistemas Computacionales Teoría De La Computación
Proyecto COCO-R Presenta López Maza Jessica Molina Velasco Jaime Guadalupe Morales Ocaña José Francisco Rodas Borges Mario Alberto
Tuxtla Gutiérrez, Chiapas a 23 de Mayo del 2011
INDICE Introducción
Descripción del Lenguaje Conjunto de Instrucciones Analizador léxico Introducción
Autómata Finito Determinista Tabla de AnálisisLéxico Programa Analizador Sintáctico Introducción
Gramática Libre De Contexto (Con Recursividad) Gramática Libre De Contexto (Sin Recursividad) Notación BNF Diagrama De Sintaxis Notación BNF / COCO ±R Programa Conclusión
INTRODUCCION El
presente proyecto se ha realizado en base a un analizador léxico y sintáctico
haciendo uso de COCO-R, que es un generador de compilador de lenguaje que proporciona un programa y un escáner para el lenguaje creado. Aplicando los conocimientos adquiridos previamente acerca de los autómatas y los lenguajes, hemos creado el lenguaje acerca de un control remoto de televisión indicando las seis principales funciones del antes mencionado.
DESCRIPCION DEL LENGUAJE El
lenguaje que manejamos en este proyecto es referente a las funciones básicas
de un control remoto de televisión, donde podemos mencionar que las indicaciones básicas que se necesitan son las necesarias como encender, subir y bajar volumen así mismo como el cambio de canales y la función de menú y la de enter para aceptar todos los cambios y modificaciones que se desee realizar en la configuración de una televisión.
CONJUNTO DE INSTRUCCIONES
A Power(cantidad)
B
C Aumentar Volumen (Cantidad)
D Bajar Volumen (Cantidad)
EMenú (Cantidad)
F
G Enter (Cantidad)
Chanel (Digito)
Direcciones (Arriba, Abajo, Derecha, Izquierda)
ANALIZADOR LEXICO INTRODUCCION Analizador léxico (scanner): lee la secuencia de caracteres delprograma fuente,
carácter a carácter, y los agrupa para formar unidades con significado propio, componentes léxicos (tokens).
Estos
Palabras reservadas
Identificadores
Operadores
Símbolos especiales
Constantes Numéricas
Constantes de Caracteres
componentes léxicos representan:
AFD
TABLA DE ANALISIS LEXICO
PROGRAMA #include #include #define ESTADOS
24 #define CODIGO 12 unsignedcharCaracter_Act; int Verifica(); intAnalizador_Lexico(); void main() { int Token; printf("Cadena: "); do { Caracter_Act=getchar(); ungetc(Caracter_Act,stdin); Token=Analizador_Lexico(); printf("%d\n"); ungetc(Caracter_Act,stdin); } while(Token != 511); } intAnalizador_Lexico() { unsignedintCodigo; unsignedint Estado=0; unsignedint Salida=0; /*******Tabla de Transicion*******/ staticunsignedintMatriz_de_Transicion[ ESTADOS][CODIGO]= { /* Caracter/ L ( ) ; D + - A Ab ->Ap (b); B|B
B -> BC (e); C|C
C -> Ca (e); D|D
D ->Db (e);
E
F ->Fd (a, ab, der, izq); G|G
G -> Ge (e); H|H
H ->
E|E
->Em (b); F|F
GRAMÁTICA LIBRE DE CONTEXTO (SIN RECURSIVIDAD) A -> A|
A ->Ap (b); B|B
B ->Bc (e); C|C
C -> Ca (e); D|D
D ->Db (e)
E
F ->Fd (a, ab, der, izq) G|G
E|E
->Em (b); F|F
A -> A¶
A -> BA¶
B -> CB¶
C ->DC¶
D -> ED¶
E
F -> GF¶
->FE¶
A¶ -> A¶ |
A¶ -> p(b); B A¶|
B¶ -> c(e);C B¶|
C¶ -> a (e);D C¶|
D¶ -> b(e); E D¶|
E¶
F¶ -> d (a, ab, der, iz); GF¶|
-> m(b);F
E¶|
NOTACION BNF ::= { [| | ] } ::= power(); ::=chanel ({ [] } ); ::=on|off ::=0,1,2,3,4,5,6,7,8,9 ::= volumen (); ::={+|-} ::=menu({ [< Enter>]}); ::= ( | | | ); ::={enter}
DIAGRAMA DE SINTAXIS
NOTACION BNF (COCO-R) CONTROL REMOTO=POWER {(³CHANEL´| ³VOLUMEN ´ | ³MENU´)POWER} POWER = power ³(³ opcion´)´ ³;´ CHANEL = chanel{ ³(´ digito³)´ | ³(´ digito ³)´ ³;´chanel } VOLUMEN =volumen { ³(´ accion ³)´ } MENU= MENU { ³(³ direcciones ³)´ | ³(´enter´)´ } ENTER = enter{ ³(´ enter ³)´ } opcion ={ (³ON´ | ³OFF´) } digito ={ ( ³0´ | ³1´ | ³2´ | ³3´ |³4´ | ³5´ | ³6´ |³7´ |³8´ | ³9´ ) } accion ={ (³+´ | ³-´) } direcciones ={ ( ³arriba´ | ³abajo´ | ³derecha´ | ³izquierda´ ) }
CONCLUSION A través de la realización de este proyecto mediante el uso de los autómatas finitos deterministas y de los lenguajes léxico y sintáctico, de acuerdo a lo anterior y a lo visto en clases hemos creado un lenguaje
de un control remoto de
televisión con seis instrucciones básicas las cuales se han presentado en el trabajo realizando su analizador léxico y sintáctico respectivamente. En
primera instancia hicimos la construcción del AFD, y la tabla del mismo
posteriormente, basándonos en esta información creamos el analizador léxico que es el que nos arroja los tokens que es el que indican en qué orden van y si está dentro de la cadena. Creamos así mismo la gramática libre de contexto y le quitamos la recursividad y la representamos mediante la notación BNF y lo representamos en diagrama de sintaxis. Posteriormente utilizamos el compilador COCO- R para que nos fuera más fácil obtener si nuestras instrucciones estaban correctas. De acuerdo a las acciones implementadas hemos logrado comprender la complejidad que trae consigo la realización de un compilador, y que se debe tomar en cuenta todas las opciones de vialidad posible, siempre y cuando se busque la eficiencia en los procesos.
View more...
Comments