Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

El generador de compilador Coco / R

No description
by

ivette bucxs

on 28 November 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of El generador de compilador Coco / R

Coco / R
COCO / R
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.

Fue desarrollado originalmente en la Universidad de Linz, y se distribuye bajo los términos de un poco relajado Licencia Pública General GNU .

El usuario debe suministrar una clase principal que llama el analizador, así como clases semánticas (por ejemplo, un controlador de tabla de símbolos o de un generador de código) que son utilizados por las acciones semánticas en el analizador
Hay versiones de Coco / R para la mayoría de las lenguas modernas ( Java , C # , C + + , Pascal, Delphi , VB.NET , Python , Rubí y otros.

Los proyectos que utilizan Coco / R
Muchos proyectos utilizan Coco / R para analizar por ejemplo, registros de datos.

EBNF
Todas las descripciones de sintaxis en Cocol / R están escritas en Extended Backus-Naur Form (EBNF) [Wirth77]. Por convención, los identificadores que comienzan con una letra minúscula denotan símbolos terminales, los identificadores que comienzan con una letra mayúscula denotan símbolos no terminales. Las siguientes meta-carácteres se utilizan:

http://www.ssw.uni-linz.ac.at/Coco/Doc/UserManual.pdf

http://www.uco.es/users/ma1fegan/2009-2010/pl/temas/Tema-3-Tipos-de-generadores.pdf
Bibliografía
Estructura general


La especificación del analizador debe contener una producción para este símbolo.

Importaciones. Frente a la palabra clave compilador se puede importar espacios de nombres (en C #) o paquetes (en Java) o incluir archivos de cabecera (en C + +), por ejemplo:
using System
using Sistem.Collections
Después de que el nombre de la gramática se puede declarar campos arbitrarias y los métodos del analizador generado, por ejemplo:
int sum;
void Add(int x) {
sum = sum + x;
}

Integrantes
Medina Bucio Karla Ivette
Miranda Najera Cecilia Miroslava
Zamorano Aparicio José Eduardo

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 cinco 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 la 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 classes
Literales: tienen una representación fija en el idioma de origen. En la gramática que se escriben como 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 espacios 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.

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 se ejecuta cada vez que se reconocen por el escáner
Comentarios
Los comentarios son difíciles de especificar con expresiones regulares; comentarios anidados son aún imposible especificar de esa manera. Esto hace que sea necesario contar con una construcción especial para definir su estructura.
Los comentarios son declarados por indicación de su apertura y de cierre de paréntesis. la palabra clave NESTED denota que se pueden anidar.
Full transcript