Você está na página 1de 17

PONTIFICIA UNIVERSIDAD CATLICA DEL ECUADOR

SEDE SANTO DOMINGO

ESCUELA DE SISTEMAS

ASIGNATURA: Compiladores

TEMA: Programa relacionado con el compilador

AUTOR/ES:

Jos Chacan

DOCENTE: Mg. Diego Salazar

SANTO DOMINGO- ECUADOR

2017-01
Introduccin

En este informe de prctica se detalla todo lo aprendido en clases acerca de


programas relacionados con el compilador. Un compilador de lnea de rdenes que
compila y enlaza programas en C++, generando el correspondiente archivo ejecutable.
G++ est incorporado de forma estndar en los sistemas Linux, pero no para los
sistemas Windows. En estos sistemas necesitamos una aplicacin que incorpore el
compilador en Windows. Hay varias alternativas. Nosotros hemos elegido MinGW.
Objetivos
Determinar la relacin del compilador con otros programas.
Desarrollo
1. Archivo en c (cdigo fuente)
Como primer paso realizamos nuestro cdigo fuente ya sea en un bloc de notas o
lenguajes de programacin como DEV C++, JAVA entre otros.
Generalmente un compilador toma el programa fuente, lo interpreta y crea un programa
objeto (normalmente en lenguaje de maquina).
Cdigo fuente

Ejecutamos el cdigo fuente por consola CMD


2. Resultado del procesador de gcc E
Para este paso se requiere instalar MinGW.
Como se puede visualizar se ha instalado correctamente.

Luego buscamos en el disco local c donde est instalado MinGW


Dentro de esa carpeta buscamos la carpeta bin y dentro de esa carpeta copiamos el
cdigo fuente.
Mediante la consola buscamos la ruta C:\MinGW\bin para escribir los comandos gcc E
prueba.c>prueba.pp como se puede visualizar en la imagen.

Se tiene el resultado del procesador:

# 1 "prueba.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "prueba.c"

# 1 "c:\\mingw\\include\\conio.h" 1 3
# 16 "c:\\mingw\\include\\conio.h" 3
# 1 "c:\\mingw\\include\\_mingw.h" 1 3
# 55 "c:\\mingw\\include\\_mingw.h" 3

# 56 "c:\\mingw\\include\\_mingw.h" 3
# 66 "c:\\mingw\\include\\_mingw.h" 3
# 1 "c:\\mingw\\include\\msvcrtver.h" 1 3
# 35 "c:\\mingw\\include\\msvcrtver.h" 3

# 36 "c:\\mingw\\include\\msvcrtver.h" 3
# 67 "c:\\mingw\\include\\_mingw.h" 2 3

# 1 "c:\\mingw\\include\\w32api.h" 1 3
# 35 "c:\\mingw\\include\\w32api.h" 3

# 36 "c:\\mingw\\include\\w32api.h" 3
# 59 "c:\\mingw\\include\\w32api.h" 3
# 1 "c:\\mingw\\include\\sdkddkver.h" 1 3
# 35 "c:\\mingw\\include\\sdkddkver.h" 3

# 36 "c:\\mingw\\include\\sdkddkver.h" 3
# 60 "c:\\mingw\\include\\w32api.h" 2 3
# 74 "c:\\mingw\\include\\_mingw.h" 2 3
# 17 "c:\\mingw\\include\\conio.h" 2 3

# 24 "c:\\mingw\\include\\conio.h" 3
char* __attribute__((__cdecl__)) __attribute__((__nothrow__)) _cgets (char*);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _cprintf (const char*, ...);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _cputs (const char*);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _cscanf (char*, ...);

int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _getch (void);


int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _getche (void);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _kbhit (void);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _putch (int);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) _ungetch (int);

int __attribute__((__cdecl__)) __attribute__((__nothrow__)) getch (void);


int __attribute__((__cdecl__)) __attribute__((__nothrow__)) getche (void);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) kbhit (void);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) putch (int);
int __attribute__((__cdecl__)) __attribute__((__nothrow__)) ungetch (int);
# 3 "prueba.c" 2

# 4 "prueba.c"
int main ()
{
printf ("************************************************\n");
printf (" !!! HOlA PROGRAMA REALIZADO POR JOSE CHACAN !!!\n");
printf ("************************************************\n");
getch ();
return 0;
}

3. Resultado del cdigo Assembler gcc s prueba.c


4. Cdigo objeto del programa gcc o prueba.c

.file "prueba.c"
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
LC0:
.ascii "!!! HOLA PROGRAMA REALIZADO POR JOSE CHACAN!!!\0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
movl %eax, -4(%ebp)
movl -4(%ebp), %eax
call __alloca
call ___main
movl $LC0, (%esp)
call _printf
leave
ret
.def _printf; .scl 3; .type 32; .endef

5. Cdigo ejecutable

CONCLUSIN

Un compilador un es pequeo programa informtico, que se encarga de traducir el cdigo


fuente de cualquier aplicacin que se est desarrollando. En pocas palabras es un software
que se encarga de traducir el programa hecho en lenguaje de programacin a un lenguaje
de mquina que pueda ser comprendido por el equipo y pueda ser procesado o ejecutado
por este.
Recomendaciones
Antes de realizar cualquier comando en la consola debemos asegurarnos que hemos creado
un archivo.c para de esta manera obtener todos sus derivados mediante el compilador de
Windows.
PONTIFICIA UNIVERSIDAD CATLICA DEL ECUADOR

SEDE SANTO DOMINGO

ESCUELA DE SISTEMAS

ASIGNATURA: Compiladores

CONCEPTUALIZACIN

TEMA: Expresiones Regulares

AUTOR/ES:

Jos Chacan

DOCENTE: Mg. Diego Salazar

SANTO DOMINGO- ECUADOR

2017-01
Introduccin
Una expresin regular describe una o ms cadenas que deben coincidir al buscar en un
cuerpo de texto. La expresin acta como un modelo de caracteres que se compara con
el texto que se busca. Es posible usar expresiones regulares para buscar modelos en una
cadena, reemplazar texto y extraer subcadenas.
Objetivos
Determinar la relacin del compilador con otros programas.
Desarrollo
El analizador lxico debe analizar e identificar slo un conjunto finito de cadena
vlida/token/lexeme que pertenecen al lenguaje de la mano. Busca el modelo definido
por las normas del lenguaje.

Las expresiones regulares tienen la capacidad de expresar finito idiomas definiendo un


modelo finito de cadenas de smbolos. La gramtica definida por las expresiones
regulares es conocida como gramtica regular. El idioma definido por gramtica
regular se conoce como idioma habitual.

Expresin regular es una notacin para importante especificacin de patrones. Cada


patrn coincide con un conjunto de cadenas, de modo que las expresiones regulares
como nombres para un conjunto de cadenas. Fichas lenguaje de programacin puede
ser descrita por los idiomas. La especificacin de las expresiones regulares es un
ejemplo de una definicin recursiva. Lenguajes regulares son fciles de comprender y
tener eficacia en su aplicacin.

Hay una serie de leyes algebraicas que son obedecidas por las expresiones regulares,
que puede ser usado para manipular las expresiones regulares en formas equivalentes.

Operaciones
Las diferentes operaciones sobre los idiomas disponibles son:

Unin de dos idiomas L y M se escribe como

L U M = {s | s en L o s es en M}

La concatenacin de dos lenguajes L y M se escribe como

LM = {st | s es en L y t se encuentra en M}
La clausura de Kleene un lenguaje L es escrito como

L* = cero o ms apariciones del lenguaje L.

Anotaciones
Si r y s son expresiones regulares denotando las lenguas L(r) y L(s), a continuacin,

Unin: (r) | (s) es una expresin regular que denota L(r) U L(s)

Concatenacin: (r)(s) es una expresin regular que denota L(r)L(s)

Cierre Kleene : (R)* es una expresin regular que denota (L(r))*

(R) es una expresin regular que denota L(r)

Precedencia y asociatividad

*, La concatenacin (.), y | (pipe) son asociativo

* Tiene la mayor prioridad

La concatenacin (.) tiene la segunda mayor prioridad.

| (Pipe) tiene la menor prioridad de todos.


Tokens vlidos representan una lengua en expresiones regulares
Si x es una expresin regular, entonces:

X * significa cero o ms apariciones de x.

Es decir, puede generar { e, x, xx, xxx, xxxx, ... }

X+ significa una o ms apariciones de x.

Es decir, puede generar { x, xx, xxx, xxxx ... } o x.x*

X? Medios de una ocurrencia ms de x

Es decir, se puede generar un {x} o {e}.

[A-z] es todo en maysculas y minsculas del alfabeto ingls.

[A-Z] maysculas alfabetos de idioma ingls.

[ 0-9] es natural dgitos utilizados en matemticas.

De aparicin de smbolos mediante expresiones regulares


Letra = [a - z] o [A - Z]
Dgito = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 o [0-9]
Signo = [+ | -]

Fichas de idioma usando expresiones regulares


Decimal = (signo)?(dgito)+
Identificador = (carta) (letra | digit) *

El nico problema con el analizador lxico es la forma de verificar la validez de una


expresin regular que se utiliza para especificar los patrones de palabras clave de un
lenguaje. Una solucin es utilizar autmatas finitos para verificacin.

Practica laboratorio 2
Primeramente abrimos nuestra cuenta de correo drive para hacer nuestra expresin regular

Pulsamos Nuevo la opcin ms luego formulario de Google


Se visualiza la siguiente ventana y le damos nombre a nuestro formulario para proceder a realizar las
expresiones regulares.

Una vez creado el formulario procedemos a realizar la primera pregunta preguntas: Nombre
Le ponemos como descripcin que reciba mximo 2 palabras en maysculas.

Escogemos la opcion expresion regular y coincide con y el patron para hacer el ingreso de nombres en
mayuscula es [A-Z]+\s{0,1}[A-Z]*
De la misma forma hacemos para hacer el ingreso de los apellidos y el patrn para esta expresin regular
es la misma de los nombres con la diferencia de que el * la cambiamos por el sigo + : [A-Z]+\s{0,1}[A-
Z]+

Para el ingreso de la cedula ponemos el siguiente patrn: ([01][1-9]|2[0-4]|30)\d{7}-\d{1} cedula


La siguiente pregunta es el ingreso del correo electrnico y para ello utilizamos el siguiente patrn: [a-z]
+[0-9]*@pucesd.edu.ec

La siguiente pregunta dice reconocer nmeros enteros de 0 hasta 256 y la expresin a utilizar es: ([0-9]|
[1-9][0-9]|2[1-4][0-9]|25[0-6])
Para la siguiente expresin regular es similar al de la anterior para ello utilizamos el siguiente patrn ([0-
9]|-[1-9][0-9]|[1-9][0-9][0-9]|[1-4][0-9][0-9][0-9]|52[-9][0-9]|52[1-7][0-9]|528[0-4])

Conclusin
Expresin regular es una notacin para importante especificacin de patrones. Cada
patrn coincide con un conjunto de cadenas, de modo que las expresiones regulares
como nombres para un conjunto de cadenas. Fichas lenguaje de programacin puede
ser descrita por los idiomas. La especificacin de las expresiones regulares es un
ejemplo de una definicin recursiva. Lenguajes regulares son fciles de comprender y
tener eficacia en su aplicacin.

Você também pode gostar