Professional Documents
Culture Documents
FACULTAD DE INGENIERIA
ESCUELA DE SISTEMAS
Nombre: Mariano Navarrete.
Fecha: 12-10-2018
Curso: Quinto Nivel.
COCO/R
RESUMEN:
Es un generador de compilador, que tiene una gramática atribuido de una lengua fuente y
genera un escáner y un analizador sintáctico descendente recursivo para este idioma.
INTRODUCCION:
DESARROLLO:
COCO/R
Estructura General
Después del nombre de la gramática se puede declarar campos arbitrarios y los métodos
del analizador generado, ejemplo:
int sum;
coid Add(int x){
sum = sum + x;
}
El scanner funciona como un autómata finito determinista
Un escáner tiene que leer el texto fuente, omitir caracteres sin sentido, reconocer tokens
y pasarlos al analizador. Esto se describe en una especificación de escáner, que consta de
5 partes opcionales:
ScannerSpecification =
[“IGNORECASE”]
[“CHARACTERS” {SetDecl}]
[“TOKENS” {TokenDecl}]
[“PRAGMAS” {PragmaDecl}]
{CommentDecl}
{WhiteSpaceDecl}
Conjunto de Caracteres
Esta sección permite al usuario declarar conjuntos de caracteres tales como letras o
números. Sus nombres se pueden utilizar en las otras secciones de especificación del
escáner. COCO/R soporta el juego de caracteres Unicode [UTF – 8 codificado]
Los conjuntos de caracteres se pueden formar a partir de conjuntos básicos con los
operadores
digit = “0123456789”
hexDigit = digit + “ABCDEF”
Tokens
Sección principal de la especificación del escáner, donde los tokens del lenguaje se
declaran.
Se dividen en dos: Literales y Token clases
- Literales: tienen una representación fija en el idioma de origen. En la gramática que se
escriben cadenas {por ejemplo, “while” o “> =”}
- Token Classes: tienen una cierta estructura que debe estar declarado explícitamente por
una expresión regular en EBNF
Espacio en blanco
Caracteres tales como espacio en blanco, tabuladores o símbolos de final de línea son
generalmente considerados como espacio en blanco que debe ser ignorado por el escáner.
Los espacios en blanco son ignorados por defecto.
Scanner
El scanner trabaja como un autómata finito determinístico. Soporta caracteres Unicode
UTF-8.
Reconoce tokens basados en el contexto de la mano derecha. También reconoce pagmas,
que son tokens que no son parte de la sintaxis pero pueden ocurrir en cualquier lugar del
stream del input.
Pragmas
Son tokens que pueden ocurrir en cualquier parte de la corriente de entrada. Sería
demasiado tedioso manejar todas sus posibles incidencias en la gramática. Por lo tanto,
quedan excluidos de la salida de señal que se pasa al analizador. Pragma se declaran como
testigos, pero pueden tener una acción semántica asociada a ellos que ejecuta cada vez
que se reconocen por el escáner.
Parser
Es un lenguaje recursivo descendente, los conflictos de LL pueden ser resuetos por
símbolos múltiples siguientes o por revisiones de semántica. EL manejo de error en el
parses puede ser encendido especificado puntos sincronizados y símbolos débiles en la
gramática.
Importaciones
Frente a la palabra clave COMPILER se pude importar los espacios de nombre en C# o
paquetes en JAVA o incluir archivos de cabecera.
Comentarios
CONCLUSIONES:
RECOMENDACIONES:
BIBLIOGRAFÍA:
Diaz, Emiliano Llano. Análisis y Diseño de Compiladores. Mexico : Exa
ingeniería SA, 2002.
Ullman, Alfred V. Aho y Jeffrey D. Compiladores Principios,Técnicas y
Herramientas. Estados Unidos : s.n., 2005.
www.ssw.uni-linz.ac.at/Coco/Doc/UserManual.pdf