COCO R

December 18, 2018 | Author: Jaime Molina Velasco | Category: Parsing, Style (Fiction), Computer Programming, Areas Of Computer Science, Formalism (Deductive)
Share Embed Donate


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¶| 







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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF