SlideShare una empresa de Scribd logo
1 de 17
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE
IBARRA
NOMBRE: MAURICIO PINTO
FECHA: 17/06/2020
 Herramientas para la construcción de procesadores de lenguaje
A continuación,se muestranalgunasde las herramientas disponibles que pueden utilizarse
para la realizaciónde laPrácticade Procesadoresde Lenguajes.Estasherramientasfuncionan
bajo Windows, aunque se puede utilizar, si se desea, cualquier otra herramienta.
 Aplicación de los lenguajes
Los lenguajesde programación hoy en día tienen una infinidad de aplicaciones, básicamente
cualquierobjetoelectrónicotieneciertogradode programación.Algunos de los más comunes
son C++ y JAVA, también existe HTML, HTTP, XML, XAML y C#, este último actualmente es el
más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 350, Windows
Mobile, Windows Phone, Windows Cloud, Zune, etc.).
Ya que loslenguajesde programaciónsoninformáticamente unpuente entre el Hardware y el
Software estos permiten que las computadoras puedan establecer conexión con un celular,
una cámara o una consola portátil de videojuego.
Otra de las aplicaciones de los lenguajes de programación son las matemáticas como las
calculadoras, cajas registradoras, cajeros automáticos, por solo mencionar algunos ejemplos
sencillos.
 Reseña Histórica
Los primeroslenguajesde programaciónsurgieronde la idea de Charles Babagge, la cual se le
ocurrióa este hombre amediadosdel sigloXIX.Era un profesor matemático de la universidad
de Cambridge e inventoringlés,que al principio del siglo XIX predijo muchas de las teorías en
que se basan losactualesordenadores.Consistíaen loque él denominabalamaquinaanalítica,
peroque por motivostécnicosnopudoconstruirse hasta mediados delsigloXX.Conélcolaboro
AdaLovedby, lacualesconsideradacomola primera programadora de la historia, pues realizo
programas para aquélla supuesta máquina de Babagge, en tarjetas perforadas. Como la
maquinanollegonuncaa construirse,losprogramasde Ada,lógicamente, tampoco llegaron a
ejecutarse,perosi suponenunpuntode partidade laprogramación,sobre todosi observamos
que encuantose empezóaprogramar, losprogramadores utilizaron lastécnicasdiseñadas por
Charles Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas
perforadas. A pesarde ello, Adahapermanecido comolaprimeraprogramadora de la historia.
Se dice por tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual
describe la inteligencia de la que se hallaban dotados.
En 1823 el gobierno británico lo apoyo para crear el proyecto de una máquina de diferencias,
un dispositivomecánicoparaefectuarsumasrepetidas.PeroBabagge se dedicó al proyectode
la máquina analítica, abandonando la máquina de diferencias, que se pudiera programar con
tarjetas perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un
fabricante de tejidosyhabíacreado un telar que podía reproducir automáticamente patrones
de tejidos,leyendo la información codificada en patrones de agujeros perforados en tarjetas
de papel rígido. Entonces Babagge intento crear la máquina que se pudiera programar con
tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la
tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge
no llegaron a materializarse de forma definitiva, su contribución es decisiva, ya que los
ordenadores actuales responden a un esquema análogo al de la máquina analítica. En su
diseño, la máquina constaba de cinco unidades básicas:
1. Unidad de entrada, para introducir datos e instrucciones;
2. Memoria, donde se almacenaban datosyresultados intermedios;
3. Unidadde control, pararegular lasecuenciade ejecución de lasoperaciones;
4. UnidadAritmético-Lógica, que efectúa las operaciones;
5. Unidadde salida,encargadade comunicaral exteriorlos resultados. Charles Babbage,
conocido como el "padre de la informática" no pudo completar en aquella época la
construccióndel computadorque habíasoñado,dado que faltabaalgofundamental:la
electrónica.El caminoseñaladode Babbage,no fue nunca abandonado y siguiéndolo,
se construyeron los primeros computadores.
Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And
Calculator), su programación se basaba en componentes físicos, o sea, que se programaba,
cambiandodirectamenteel Hardware de lamáquina,exactamente loque sé hacia era cambiar
cables de sitio para conseguir así la programación de lamáquina.
La entrada y salida de datos se realizaba mediante tarjetas perforadas.
 Diseño y construcción de un compilador
En el procesode construcciónde compiladoresse integranmuchosconceptosdiferentesde las
Ciencias de la Computación:
 Algoritmos de búsqueda.
 Árboles, Hashing.
 Programación modular.
 Lenguaje Assembly.
 Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las
fasescorrespondientesal Análisisléxico(queconsiste en la descomposición del programa
fuente en componentes léxicos), Análisis sintáctico (agrupación de los componentes
léxicos en frases gramaticales) y Análisis
 semántico(comprobaciónde lavalidezsemánticade lassentenciasaceptadasenlafase de
Análisis Sintáctico).
 Síntesis:Suobjetivoesla generación de la salida expresada en el lenguaje objeto y suele
estar formado por una o varias combinaciones de fases de Generación de Código
(normalmente se trata de código intermedio o de código objeto) y de Optimización de
Código (en las que se busca obtener un código lo más eficiente posible).
 Que es Flex y Bison
Son dosherramientasútiles para crear programas que reaccionen a una entrada de datos con
una estructura y un lenguaje predeterminado, como, por ejemplo, podemos crear
compiladores, intérpretes y analizadores de línea de comando.
Flex:El Flex definelas reglasde reconocimiento de símbolos (Tokens) a partir de expresiones
regulares. Cuando un Token es reconocido por uno de estos patrones de agrupamiento se le
define una acción, por lo general esta acción es devolver el Tipo y el valor (lexema).
El Flex cuando se utiliza combinado con el Bison, utiliza las definiciones de los Tokens
realizadas en el Bison para la comunicación entre ellos, Bison: GNU bison es un programa
generador de analizadores sintácticos de propósito general perteneciente al proyecto GNU
disponible para prácticamente todos los sistemas operativos, se usa normalmente
acompañado de flex aunque los analizadores léxicos se pueden también obtener de otras
formas.
Bison convierte la descripción formal de un lenguaje, escrita como una gramática libre de
contextoLALR, enunprogramaenC, C++, oJava que realizaanálisissintáctico. Esutilizado para
crear analizadores para muchos lenguajes, desde simples calculadoras hasta lenguajes
complejos. Para utilizar Bison, es necesaria experiencia con la sintaxis usada para describir
gramáticas.
 Como se instala Flex y Bison
1. Descarga el software disponible en el sitio de la cátedra.
2. Instalar el software en la unidad C: (para explicar a partir del punto 4 se tendrá como
hipótesis de que flex y bison han sido instalados en la ruta: C:GnuWin32 donde contiene
una subcarpeta llamada bin donde se encuentran los programas respectivos)
3. Flex ybisonsonaplicacionesde consola,porloque se deberáentrar al Símbolo del sistema
y tipearlíneasde comandopara ejecutarFlex.Unaalternativaescrearun archivode proceso
por lotes(*.bat) que contengalaslíneasde comandopara la ejecución de Flex y Bison y/o la
compilación del archivo generado.
4. Si deseas que flex y bison se integren al conjunto de variables del entorno (esto te va a
permitirllamaraflex/bisondesdecualquierubicación en la línea de comandos) debes hacer
lo siguiente:
 Clic derecho en “Mi PC”.
 Selecciona “Propiedades”
 Clic en la pestaña “Opciones Avanzadas”
 Presiona el botón “Variables de entorno”
 En la ventanade variablesde entorno,ubicarse enlasección“Variablesdel sistema”
luego haz clic en PATH y luego en el botón “Modificar” (si no está hacer clic en
“Nueva”yagregarPATH) • En lanuevaventana, escribirlarutacompletaal directorio
“bin” de la aplicación flex/bison. Si existe otro valor, separarlos con comas.
 Aceptar los cambios y luego reiniciar el sistema operativo.
5. Si deseasinstalar un compilador de C como MinGwin, deberás integrar la ruta de acceso al
compiladoralas variablesde entornoparafacilitarlallamadaal programa. Por ejemplo si se
instalóMingWinen“C:Mingw”ydentrode lacarpeta “bin”se encuentra“gcc.exe”que esel
ejecutable, entonces de deberá agregar (análogo a los pasos anteriores) lo siguiente:
6. Cuandotengaslistopodrásllamar a flex/bison desde el símbolo del sistema sin necesidad
de ubicarte en la carpeta donde ha sido instalado flex/bison.
 Patrones enflex
Los patrones en la entrada se escriben utilizando un conjunto extendido de expresiones
regulares y usando como alfabeto cualquier carácter ASCII. Cualquier símbolo excepto el
espacioenblanco, tabulador,cambiode líneayloscaracteres especialesse escriben tal cual en
las expresiones regulares (patrones) de Flex. Los caracteres especiales son:
“  [ ^ - ? . * + | ( ) $ / { } % < >
Algunosde lospatronesde Flex son:
x
emparejael carácter‘x’
.
cualquiercarácterexceptounalíneanueva
[xyz]
un conjuntode caracteres;eneste caso,el patrón empareja una‘x’,una‘y’,o una ‘z’
[abj-oZ]
un conjuntode caracterescon un rango;emparejauna‘a’,una ‘b’,cualquierletradesde la
‘j’hasta la ‘o’,o una‘Z’
[^A-Z]
4
IntroducciónaFlex y Bison
cualquiercaráctermenoslosque aparecenenel conjunto.En este caso, cualquiercarácter
EXCEPTO unaletramayúscula.
[^A-Zn]
cualquiercarácterEXCEPTO unaletramayúsculao una líneanueva
r*
cero o más r’s,donde r escualquierexpresiónregular
r+
una o más r’s
r?
cero o unar (esdecir,"unar opcional")
r{2,5}
entre dosy cinco concatenacionesde r
r{4}
exactamente 4r’s
{nombre}
la expansiónde ladefiniciónde "nombre"(vermásabajo)
"[xyz]"foo"
la cadenaliteral:[xyz]"foo
x
si x esuna ‘a’, ‘b’,‘f’,‘n’,‘r’,‘t’,o ‘v’,entonceslainterpretaciónANSI-Cde x
(porejemplo tseríaun tabulador).Enotro caso,un literal ‘x’(usadoparalaconcordancia
exactade caracteres especiales(.?)
(r)
emparejaunaR; losparéntesisse utilizanparaanularla precedencia(vermásabajo)
rs
la expresión regularrseguidaporlaexpresiónregulars;se denomina"concatenación"
r|s
bienunar o unas
r/s
una r perosólosi va seguidaporunas.
^r
una r, perosóloal comienzode unalínea
r$
una r, perosóloal final de unalínea(esdecir,justoantesde una líneanueva).Equivalente a
"r/n".
<s>r
una r, perosóloenla condiciónde arranque s(vermás adelante).
<s1,s2,s3>r
lomismo,peroencualquierade lascondicionesde arranque s1,s2, o s3
 Emparejamientode entrada
Cuandoel escánergeneradoestá funcionando,este analiza su entrada buscando cadenas que
concuerdenconcualquierade suspatrones.Si encuentramásde un emparejamiento, toma el
que empareje el texto más largo. Si encuentra dos o más emparejamientos de la misma
longitud, se escoge la regla listada en primer lugar en el fichero de entrada de Flex.
Una vez que se determina el emparejamiento, el texto correspondiente al emparejamiento
(denominadoel token) estádisponible enel punterode carácterglobal yytext,ysu longituden
la variable global entera yyleng. Entonces la acción correspondiente al patrón emparejado se
ejecuta y luego la entrada restante se analiza para otro emparejamiento.
Si no se encuentraunemparejamiento, entonces se ejecuta la regla por defecto: el siguiente
carácter en la entrada se considera reconocido y se copia a la salida estándar.
 Condiciones de arranque
Flex dispone de un mecanismo para activar reglas condicionalmente. Cualquier regla cuyo
patrón se prefije con"<sc>" únicamente estaráactiva cuando el analizador se encuentre en la
condición de arranque llamada "sc". Por ejemplo,
<STRING> [^"]* {/* se come el cuerpo de la cadena ... */
...
}
estará activa solamente cuando el analizador esté en la condición de arranque "STRING", y
<INITIAL, STRING, QUOTE>. {/* trata una secuencia de escape ... */
...
}
estaráactiva solamente cuandolacondiciónde arranque actual seao bien"INITIAL", "STRING",
o "QUOTE". Las condicionesde arranque se declaranenla(primera) secciónde definicionesde
la entrada usando líneas sin sangrar comenzando con %s seguida por una lista de nombres.
Una condición de arranque se activa utilizando la acción BEGIN. Hasta que se ejecute la
próximaacción BEGIN,las reglasconla condiciónde arranque dada estarán activas y las reglas
con otras condiciones de arranque estarán inactivas. Las reglas sin condiciones de arranque
también estarán activas.
BEGIN (0) retorna al estado original donde solo las reglas sin condiciones de arranque están
activas. Este estado también puede referirse a la condición de arranque INITIAL, así que
BEGIN(INITIAL) es equivalente a BEGIN (0). (No se requieren los paréntesis alrededor del
nombre de la condición de arranque, pero se considera de buen estilo.)
 Como se compila con Flex y Bison
Luegode escribirlasespecificacionesde flexybisonrealizarlo siguiente. Si se desea invocar a
flex:
Si se desea invocar a bison (recordar que bison trabaja en conjunto con flex):
Para invocar a Bison en conjunción con flex realizar lo siguiente:
Para compilar los archivos generados. Flex: MinGW
Una alternativa es utilizar un compilador para windows como DevC++ o Borland C++ 4.5
Abriendoel archivolex.yy.cyluegocompilándolose generaráel ejecutable “lex.yy.exe” BISON
y FLEX en conjunción:
 Ejemplo de la creación de un compilador utilizando Flex y Bison
Archivo para FLEX
?
1 %{
2 #include<stdio.h>
3 #include<conio.h>4 #include "parser.h"
%}
5 %option noyywrap
6 %option yylineno
7 letra [a-zA-Z]
8 digito [0binario [0-9]-1]
9 ignora " "|t|n 10operarit *|+|-|/ 11operlog &|$
12 comparador <|>|<=|>=|==|!=
13%%{ignora}+ {;}
14"Entero" {printf("Palabra reservadapara tipo de dato
15enteron");return PRENTERO;}
16"Real" {printf("Palabra reservadapara tipo dedato 17
realn");returnPRREAL;}
18"Booleano" {printf("Palabra reservadapara tipo de dato
19booleanon");returnPRBOOLEANO;}
20"Caracter" {printf("Palabra reservadapara tipo de dato
21caractern");returnPRCARACTER;}
22"Si" {printf("Palabra reservadapara 23condicional
n");return PRSI;}
24"Sino"condicional n");return {printf("Palabrareservada para otro PRSINO;}
25"SinoSi" {printf("Palabra reservadapara definir
26condicionales secundariasn");returnPRSINOSI;}
27"Entonces" {printf("Palabra reservadapara definiraccion a
28realizarn");returnPRENTONCES;}
29"FinSi" {printf("Palabra reservada finalizar
30condicionaln");returnPRFINSI;}
31"Para" {printf("Palabra reservadapara buclede tipo
32Paran");returnPRPARA;}
33"FinPara" {printf("Palabra reservadapara fin debucle de
34tipo Paran");returnPRFINPARA;}
35"Mientras" {printf("Palabra reservadapara buclede tipo
36Mientrasn");returnPRMIENTRAS;}
37"Hacer"empieza algo n");return {printf("Palabrareservada paraindicar quese
PRHACER;}
38"FinMientras" {printf("Palabra reservadafin debuclede tipo
39Mientrasn");returnPRFINMIENTRAS;}
40"FinHacerMientras" {printf("Palabra reservadapara indicar fin 41debucleHacer-
Mientrasn");return PRFINHACERMIENTRAS;} 42"Funcion" {printf("Palabra reservadapara declaracion de
43funcionesn");returnPRFUNCION;}
44"Estructura" {printf("Palabra reservadapara declaracion de
45estructurasn");returnPRESTRUCTURA;}
46"FinFuncion" {printf("Palabra reservadapara finalizar
47funcionn");returnPRFINFUNCION;}
48"Retorna" {printf("Palabra reservadapara retorno de
49funcionn");returnPRRETORNA;}
50"SinValor" {printf("Palabra reservadapara funcion sin valor
51de retornon");return PRSINVALOR;}
52"Definir"funciones n");return {printf("Palabrareservada paradefinir
PRDEFINIR;}
53"Constante" {printf("Palabra reservadapara definir
54constantesn");returnPRCONSTANTE;}
55"Entrada" {printf("Palabra reservadapara definir
56entradasn");returnPRENTRADA;}
57"Salida" {printf("Palabra reservadapara definir
58salidasn");returnPRSALIDA;}
59{letra}({letra}|{digito})* {printf("Identificadorn");return
60IDENT;} {letra}+ {printf("Caractern");return CARACTER;}
61{binario}+ {printf("Binarion");returnBOOLEANO;}
62{digito}+ {printf("Enteron");return ENTERO;} 63{digito}+"."{digito}+
{printf("Realn");return REAL;} 64{comparador}
{printf("Comparadorn");return
65COMPARADOR;}
66":=" {printf("Asignadorn");returnASIG;}
67";" {printf("Fin sentencian");returnPCOMA;}
68"!=" {printf("Diferenten");return DIF;}
69"," {printf("Coman");return COMA;}
70"==" {printf("Igualn");returnIGUAL;}
71"." {printf("Punton");return PTO;}
72">=" {printf("Signo mayor-igualn");returnMAIGU;} 73"<="
{printf("Signo menor-igualn");returnMEIGU;} 74"(" {printf("(n");return
PARIZ;}
75")" {printf(")n");returnPARDE;}
76">" {printf(">n");return MAYOR;}
77"<" {printf("<n");return MENOR;}
78"{" {printf("{n");return LLIZ;}
79"}" {printf("}n");return LLDE;}
80"+" {printf("+n");return MAS;} 81 "-"
{printf("-n");returnMENOS;}
82 "*" {printf("*n");return POR;}
"/" {printf("/n");return ENTRE;}
"&" {printf("&n");return YLOG;}
"$" {printf("Operador Logicon");returnOLOG;}
. {printf("ERROR LEXICO EN LINEA %d
n",yylineno);}
%%
intmain(intargc,char*argv[])
{
if ((yyin = fopen(argv[1], "rt")) == NULL)
{ printf("nNo se puede abrir el archivo:%sn",argv[1]);
}
el se
{
//yylex();
yyparse()
; }
fclose(yy in);return0;
}
Arhcivo parser.h ?
1 #ifndef YYSTYPE
2 #define YYSTYPE int
3 #endif#define PRENTERO 257
4 #definePRREAL 258 5
#define PRBOOLEANO 259
6 #define PRCARACTER 260
7 #define PRSI 261
8 #define PRSINO#define PRSINOSI 263 262
9 #define PRENTONCES 264
10#define PRFINSI 265
11#define PRPARA 266
12#define PRFINPARA 267
13#define PRMIENTRAS 268#define PRHACER 269
14#define PRFINMIENTRAS 270
15#define PRFINHACERMIENTRAS 27116 #define
PRFUNCION 272
17#define PRFINFUNCION#define PRRETORNA 274 273
18#define PRSINVALOR 275
19#define PRESTRUCTURA 276
20#define MAS 277
21 #define MENOS 278
22#define POR 279 #define ENTRE280
23#define OLOG 281
24#define YLOG 282
25#define PRDEFINIR 283
26#define PRCONSTANTE 284 #define IDENT285
27 #define ENTERO 286
28 #define REAL287
29#define BOOLEANO 288
30#define CARACTER 289
31#define COMPARADOR 290 #define ASIG291
32#define PCOMA 292
33#define DIF 293
34#define COMA 294
efine PTO 296
40#define MAYOR 301 #define MENOR 302
41 #define LLIZ 303
42 #define LLDE304
43 #define PRSALIDA 305
44#define PRENTRADA 306
45
46extern YYSTYPE yylval;
Archivo para Bison:
1 %{
2 intyystopparser=0;
3 %}
4
5
6 %token PRENTERO PRREAL PRBOOLEANO PRCARACTER PRSI PRSINO PRSINOSI
35#define IGUAL 295 #d
36#define MAIGU 297
37#define MEIGU 298
38#define PARIZ 299
39 #define PARDE 300
7 PRENTONCES PRFINSI PRPARAPRFINPARA PRMIENTRAS PRHACER PRFINMIENTRAS
PRFINHACERMIENTRAS
8 PRFUNCION PRFINFUNCION PRRETORNA PRSINVALOR PRESTRUCTURA MAS MENOS
9 POR ENTRE OLOG YLOG
10 PRDEFINIR PRCONSTANTE IDENT ENTERO REAL BOOLEANO CARACTER
11 COMPARADOR ASIG PCOMA DIF COMA IGUAL PTOMAIGU MEIGU PARIZ PARDE MAYOR MENOR LLIZ
LLDE PRSALIDA PRENTRADA
12 %start inicio
13 14 %%
15 inicio :
funcion16 |constante
17 | estructura;
18
19 estructura : PRESTRUCTURA IDENT LLIZ n
20 n : declaracion n21 | declaracion nn
22 nno :: estructura LLDE IDENT PCOMA o
23 | constante
24 | funcion
25 ;
26
27 constante : PRDEFINIR PRCONSTANTE e
28 e | PRREAL IDENT f: PRENTERO IDENT f
29 | PRBOOLEANO IDENT f
30 f : ASIG g31 g : ENTERO PCOMA y32 | REAL PCOMA y
| BOOLEANO PCOMA y
33 y :
constante34 |estructura
35 | funcion
36 ;
37
38 funcionj : PRENTERO k : PRFUNCION j
39 | PRREAL k
40 | PRBOOLEANO k
41 | PRCARACTER k
42 | PRSINVALOR k
43 kl :: IDENT PARIZ l kl
44 kl : declaracion l
45 | ll
46 ll : PARDE sentencia m47 m : PRRETORNA IDENT p
48 p | p : PRFINFUNCION funcion
49 | PRFINFUNCION
50 ;
51
52 comparacion :IDENT COMPARADOR b
53 b | REAL: IDENT
54 | ENTERO
55 | BOOLEANO
56 ;
57
58 declaracion :PRENTERO c
59 | PRREAL c| PRBOOLEANO c
60 | PRCARACTER c
61 c : IDENT PCOMA
62 ;
63
64 asignaciona : IDENT PCOMA : IDENT ASIG a
65 | ENTERO PCOMA
66 | REAL PCOMA
67 | BOOLEANO PCOMA
68 | oparitmetica PCOMA
69 ;
70 mientras : PRMIENTRAS PARIZ x
71 x : comparacion y
72 | oplogica y
73 y : PARDE sentencia PRFINMIENTRAS
74 ;
75
76 hacermientras : PRHACER sentencia PRFINHACERMIENTRAS PRMIENTRAS PARIZ cc
77 cc : comparacion PARDE
78 | oplogica PARDE
79 ;
80
81 parasentencia PRFINPARA : PRPARA PARIZ asignacion comparacion PCOMAasignacion
PARIZ
82 ;
83
84 si : PRSI PARIZ sh
85 sh : comparacion shh
| oplogica shh
86 shh : PARDE PRENTONCES sentencia h
87 h | PRSINOSI PARIZ comparacion PARDE PRENTONCES sentencia i: PRFINSI 88 i : h
89 | z90 z : PRSINO PRENTONCES sentencia PRFINSI
91 ;
92
93 sentencia : declaracion sentencia | declaracion
94 | asignacion sentencia
95 | asignacion96 | mientras sentencia 97
| mientras
98 | hacermientras sentencia | hacermientras
99 | para sentencia100 | para
101 | si sentencia
102 | si| entrada sentencia
103 | entrada
104 | salidasentencia
105 | salida
106 ;
107
108salida ; : PRSALIDA ASIG LLIZ LLDE PCOMA
109
110
entrada : PRENTRADA IDENT PCOMA
111
;
112
113 oparitmetica : MAS PARIZ q
114 | POR PARIZ q| suma
115 | producto
116 q : oparitmetica PARDE r
117 suma : MAS rt 118 producto:
POR r t
119tu :: r u t
120 |
121 r : IDENT
122 | REAL
123 | ENTERO
124 ;
125
126 oplogica :OLOG PARIZ qq
127 | YLOG PARIZ qq
128 | yy
129 | oo
130qqoo :: oplogica PARDE rr OLOG rr tt
131
yy : YLOG rr tt
132
tt : rr uu
133
uu : tt
134
|
135rr ; :comparación
 Realice un collage con las palabras mas importantes sobre el tema Flexy Bison.
 Comentario
Para la compilaciónunode losmejoresejemplos por su facilidad de uso para los estudiantes
es Flex y Bison ya que permite generar analizadores léxicos, teniendo en cuenta las
expresionesregularesque existanenel código.También es importante ya que es compatible
con casi el 100% de las herramientas UNIX.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Lenguaje C y los Sistemas Operativos Actuales
Lenguaje C y los Sistemas Operativos ActualesLenguaje C y los Sistemas Operativos Actuales
Lenguaje C y los Sistemas Operativos Actuales
 
Arquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosArquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzados
 
C++
C++ C++
C++
 
Lenguajes de programación saia
Lenguajes de programación saiaLenguajes de programación saia
Lenguajes de programación saia
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Tutorial perl en linux
Tutorial perl en linuxTutorial perl en linux
Tutorial perl en linux
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Trabajo flex byson
Trabajo flex bysonTrabajo flex byson
Trabajo flex byson
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++
 
Flexybison
FlexybisonFlexybison
Flexybison
 
Presentacion de c++
Presentacion de c++Presentacion de c++
Presentacion de c++
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Angel contreras
Angel contrerasAngel contreras
Angel contreras
 
lenguaje c++
lenguaje c++lenguaje c++
lenguaje c++
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Programación en c y c++ prev
Programación en c y c++ prevProgramación en c y c++ prev
Programación en c y c++ prev
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_
 

Similar a FLEX Y BISON (20)

Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
Flex y-bison
Flex y-bisonFlex y-bison
Flex y-bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Edison caicedo
Edison caicedoEdison caicedo
Edison caicedo
 
Flex y Bison
Flex y Bison Flex y Bison
Flex y Bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Fyb
FybFyb
Fyb
 
Flex y bison héctor espinosa
Flex y bison   héctor espinosaFlex y bison   héctor espinosa
Flex y bison héctor espinosa
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
Herramientas flex y bison
Herramientas flex y bisonHerramientas flex y bison
Herramientas flex y bison
 
Taller
TallerTaller
Taller
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
INFORMATICA TRABAJO.docx
INFORMATICA TRABAJO.docxINFORMATICA TRABAJO.docx
INFORMATICA TRABAJO.docx
 
Flex ybison
Flex ybisonFlex ybison
Flex ybison
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Flex y brison
Flex y brisonFlex y brison
Flex y brison
 
Conceptos Básicos acerca de Procesadores de Lenguajes
Conceptos Básicos acerca de Procesadores de LenguajesConceptos Básicos acerca de Procesadores de Lenguajes
Conceptos Básicos acerca de Procesadores de Lenguajes
 

Más de MAURICIOANDRES39

Procesamiento de imagenes 2
Procesamiento de imagenes 2Procesamiento de imagenes 2
Procesamiento de imagenes 2MAURICIOANDRES39
 
Graficas sencillas con matlab
Graficas sencillas con matlabGraficas sencillas con matlab
Graficas sencillas con matlabMAURICIOANDRES39
 
Clase 4 El espectro electromagnetico 05/10/2020
Clase 4 El espectro electromagnetico 05/10/2020Clase 4 El espectro electromagnetico 05/10/2020
Clase 4 El espectro electromagnetico 05/10/2020MAURICIOANDRES39
 
Clase 2 Fundamentos de Teoría del Color 01/10/2020
Clase 2 Fundamentos de Teoría del Color 01/10/2020Clase 2 Fundamentos de Teoría del Color 01/10/2020
Clase 2 Fundamentos de Teoría del Color 01/10/2020MAURICIOANDRES39
 
Clase 1 Fundamentos de Teoría del Color 24/09/2020
Clase 1 Fundamentos de Teoría del Color 24/09/2020Clase 1 Fundamentos de Teoría del Color 24/09/2020
Clase 1 Fundamentos de Teoría del Color 24/09/2020MAURICIOANDRES39
 
Gramaticas independientes de contexto ejecrcicios 2
Gramaticas independientes de contexto ejecrcicios 2Gramaticas independientes de contexto ejecrcicios 2
Gramaticas independientes de contexto ejecrcicios 2MAURICIOANDRES39
 
Gramatica independiente de contexto
Gramatica independiente de contextoGramatica independiente de contexto
Gramatica independiente de contextoMAURICIOANDRES39
 
Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3MAURICIOANDRES39
 
Compilador con Gold Parser
Compilador con Gold ParserCompilador con Gold Parser
Compilador con Gold ParserMAURICIOANDRES39
 

Más de MAURICIOANDRES39 (20)

Manual instalacion
Manual instalacionManual instalacion
Manual instalacion
 
Segmentacion
SegmentacionSegmentacion
Segmentacion
 
Transformadas en matlab
Transformadas en matlabTransformadas en matlab
Transformadas en matlab
 
Procesamiento de imagenes 2
Procesamiento de imagenes 2Procesamiento de imagenes 2
Procesamiento de imagenes 2
 
Procesamiento de imagenes
Procesamiento de imagenesProcesamiento de imagenes
Procesamiento de imagenes
 
Ciclos repetitivos matlab
Ciclos repetitivos matlabCiclos repetitivos matlab
Ciclos repetitivos matlab
 
Funciones
FuncionesFunciones
Funciones
 
Graficas sencillas con matlab
Graficas sencillas con matlabGraficas sencillas con matlab
Graficas sencillas con matlab
 
EJERCICIOS CON MATLAB
EJERCICIOS CON MATLABEJERCICIOS CON MATLAB
EJERCICIOS CON MATLAB
 
Operaciones con matrices
Operaciones con matricesOperaciones con matrices
Operaciones con matrices
 
Instalacion matlab
Instalacion matlabInstalacion matlab
Instalacion matlab
 
Clase 4 El espectro electromagnetico 05/10/2020
Clase 4 El espectro electromagnetico 05/10/2020Clase 4 El espectro electromagnetico 05/10/2020
Clase 4 El espectro electromagnetico 05/10/2020
 
Clase 2 Fundamentos de Teoría del Color 01/10/2020
Clase 2 Fundamentos de Teoría del Color 01/10/2020Clase 2 Fundamentos de Teoría del Color 01/10/2020
Clase 2 Fundamentos de Teoría del Color 01/10/2020
 
Clase 1 Fundamentos de Teoría del Color 24/09/2020
Clase 1 Fundamentos de Teoría del Color 24/09/2020Clase 1 Fundamentos de Teoría del Color 24/09/2020
Clase 1 Fundamentos de Teoría del Color 24/09/2020
 
Preguntas automatas
Preguntas automatasPreguntas automatas
Preguntas automatas
 
AUTOMATAS
AUTOMATASAUTOMATAS
AUTOMATAS
 
Gramaticas independientes de contexto ejecrcicios 2
Gramaticas independientes de contexto ejecrcicios 2Gramaticas independientes de contexto ejecrcicios 2
Gramaticas independientes de contexto ejecrcicios 2
 
Gramatica independiente de contexto
Gramatica independiente de contextoGramatica independiente de contexto
Gramatica independiente de contexto
 
Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3
 
Compilador con Gold Parser
Compilador con Gold ParserCompilador con Gold Parser
Compilador con Gold Parser
 

Último

Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENSLuisLobatoingaruca
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaSantiagoSanchez353883
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTGestorManpower
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 

Último (20)

Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación pública
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SST
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 

FLEX Y BISON

  • 1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA NOMBRE: MAURICIO PINTO FECHA: 17/06/2020  Herramientas para la construcción de procesadores de lenguaje A continuación,se muestranalgunasde las herramientas disponibles que pueden utilizarse para la realizaciónde laPrácticade Procesadoresde Lenguajes.Estasherramientasfuncionan bajo Windows, aunque se puede utilizar, si se desea, cualquier otra herramienta.  Aplicación de los lenguajes Los lenguajesde programación hoy en día tienen una infinidad de aplicaciones, básicamente cualquierobjetoelectrónicotieneciertogradode programación.Algunos de los más comunes son C++ y JAVA, también existe HTML, HTTP, XML, XAML y C#, este último actualmente es el más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 350, Windows Mobile, Windows Phone, Windows Cloud, Zune, etc.). Ya que loslenguajesde programaciónsoninformáticamente unpuente entre el Hardware y el Software estos permiten que las computadoras puedan establecer conexión con un celular, una cámara o una consola portátil de videojuego. Otra de las aplicaciones de los lenguajes de programación son las matemáticas como las calculadoras, cajas registradoras, cajeros automáticos, por solo mencionar algunos ejemplos sencillos.  Reseña Histórica Los primeroslenguajesde programaciónsurgieronde la idea de Charles Babagge, la cual se le ocurrióa este hombre amediadosdel sigloXIX.Era un profesor matemático de la universidad de Cambridge e inventoringlés,que al principio del siglo XIX predijo muchas de las teorías en que se basan losactualesordenadores.Consistíaen loque él denominabalamaquinaanalítica,
  • 2. peroque por motivostécnicosnopudoconstruirse hasta mediados delsigloXX.Conélcolaboro AdaLovedby, lacualesconsideradacomola primera programadora de la historia, pues realizo programas para aquélla supuesta máquina de Babagge, en tarjetas perforadas. Como la maquinanollegonuncaa construirse,losprogramasde Ada,lógicamente, tampoco llegaron a ejecutarse,perosi suponenunpuntode partidade laprogramación,sobre todosi observamos que encuantose empezóaprogramar, losprogramadores utilizaron lastécnicasdiseñadas por Charles Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas perforadas. A pesarde ello, Adahapermanecido comolaprimeraprogramadora de la historia. Se dice por tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual describe la inteligencia de la que se hallaban dotados. En 1823 el gobierno británico lo apoyo para crear el proyecto de una máquina de diferencias, un dispositivomecánicoparaefectuarsumasrepetidas.PeroBabagge se dedicó al proyectode la máquina analítica, abandonando la máquina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un fabricante de tejidosyhabíacreado un telar que podía reproducir automáticamente patrones de tejidos,leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribución es decisiva, ya que los ordenadores actuales responden a un esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas: 1. Unidad de entrada, para introducir datos e instrucciones; 2. Memoria, donde se almacenaban datosyresultados intermedios; 3. Unidadde control, pararegular lasecuenciade ejecución de lasoperaciones; 4. UnidadAritmético-Lógica, que efectúa las operaciones; 5. Unidadde salida,encargadade comunicaral exteriorlos resultados. Charles Babbage, conocido como el "padre de la informática" no pudo completar en aquella época la construccióndel computadorque habíasoñado,dado que faltabaalgofundamental:la electrónica.El caminoseñaladode Babbage,no fue nunca abandonado y siguiéndolo, se construyeron los primeros computadores. Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And Calculator), su programación se basaba en componentes físicos, o sea, que se programaba, cambiandodirectamenteel Hardware de lamáquina,exactamente loque sé hacia era cambiar cables de sitio para conseguir así la programación de lamáquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas.  Diseño y construcción de un compilador En el procesode construcciónde compiladoresse integranmuchosconceptosdiferentesde las Ciencias de la Computación:  Algoritmos de búsqueda.  Árboles, Hashing.  Programación modular.
  • 3.  Lenguaje Assembly.  Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fasescorrespondientesal Análisisléxico(queconsiste en la descomposición del programa fuente en componentes léxicos), Análisis sintáctico (agrupación de los componentes léxicos en frases gramaticales) y Análisis  semántico(comprobaciónde lavalidezsemánticade lassentenciasaceptadasenlafase de Análisis Sintáctico).  Síntesis:Suobjetivoesla generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata de código intermedio o de código objeto) y de Optimización de Código (en las que se busca obtener un código lo más eficiente posible).  Que es Flex y Bison Son dosherramientasútiles para crear programas que reaccionen a una entrada de datos con una estructura y un lenguaje predeterminado, como, por ejemplo, podemos crear compiladores, intérpretes y analizadores de línea de comando. Flex:El Flex definelas reglasde reconocimiento de símbolos (Tokens) a partir de expresiones regulares. Cuando un Token es reconocido por uno de estos patrones de agrupamiento se le define una acción, por lo general esta acción es devolver el Tipo y el valor (lexema). El Flex cuando se utiliza combinado con el Bison, utiliza las definiciones de los Tokens realizadas en el Bison para la comunicación entre ellos, Bison: GNU bison es un programa generador de analizadores sintácticos de propósito general perteneciente al proyecto GNU disponible para prácticamente todos los sistemas operativos, se usa normalmente acompañado de flex aunque los analizadores léxicos se pueden también obtener de otras formas. Bison convierte la descripción formal de un lenguaje, escrita como una gramática libre de contextoLALR, enunprogramaenC, C++, oJava que realizaanálisissintáctico. Esutilizado para crear analizadores para muchos lenguajes, desde simples calculadoras hasta lenguajes complejos. Para utilizar Bison, es necesaria experiencia con la sintaxis usada para describir gramáticas.  Como se instala Flex y Bison 1. Descarga el software disponible en el sitio de la cátedra. 2. Instalar el software en la unidad C: (para explicar a partir del punto 4 se tendrá como hipótesis de que flex y bison han sido instalados en la ruta: C:GnuWin32 donde contiene una subcarpeta llamada bin donde se encuentran los programas respectivos) 3. Flex ybisonsonaplicacionesde consola,porloque se deberáentrar al Símbolo del sistema y tipearlíneasde comandopara ejecutarFlex.Unaalternativaescrearun archivode proceso por lotes(*.bat) que contengalaslíneasde comandopara la ejecución de Flex y Bison y/o la compilación del archivo generado. 4. Si deseas que flex y bison se integren al conjunto de variables del entorno (esto te va a permitirllamaraflex/bisondesdecualquierubicación en la línea de comandos) debes hacer
  • 4. lo siguiente:  Clic derecho en “Mi PC”.  Selecciona “Propiedades”  Clic en la pestaña “Opciones Avanzadas”  Presiona el botón “Variables de entorno”  En la ventanade variablesde entorno,ubicarse enlasección“Variablesdel sistema” luego haz clic en PATH y luego en el botón “Modificar” (si no está hacer clic en “Nueva”yagregarPATH) • En lanuevaventana, escribirlarutacompletaal directorio “bin” de la aplicación flex/bison. Si existe otro valor, separarlos con comas.  Aceptar los cambios y luego reiniciar el sistema operativo. 5. Si deseasinstalar un compilador de C como MinGwin, deberás integrar la ruta de acceso al compiladoralas variablesde entornoparafacilitarlallamadaal programa. Por ejemplo si se instalóMingWinen“C:Mingw”ydentrode lacarpeta “bin”se encuentra“gcc.exe”que esel ejecutable, entonces de deberá agregar (análogo a los pasos anteriores) lo siguiente: 6. Cuandotengaslistopodrásllamar a flex/bison desde el símbolo del sistema sin necesidad de ubicarte en la carpeta donde ha sido instalado flex/bison.  Patrones enflex Los patrones en la entrada se escriben utilizando un conjunto extendido de expresiones regulares y usando como alfabeto cualquier carácter ASCII. Cualquier símbolo excepto el espacioenblanco, tabulador,cambiode líneayloscaracteres especialesse escriben tal cual en las expresiones regulares (patrones) de Flex. Los caracteres especiales son: “ [ ^ - ? . * + | ( ) $ / { } % < > Algunosde lospatronesde Flex son: x emparejael carácter‘x’ . cualquiercarácterexceptounalíneanueva [xyz] un conjuntode caracteres;eneste caso,el patrón empareja una‘x’,una‘y’,o una ‘z’ [abj-oZ] un conjuntode caracterescon un rango;emparejauna‘a’,una ‘b’,cualquierletradesde la ‘j’hasta la ‘o’,o una‘Z’ [^A-Z] 4 IntroducciónaFlex y Bison cualquiercaráctermenoslosque aparecenenel conjunto.En este caso, cualquiercarácter EXCEPTO unaletramayúscula. [^A-Zn] cualquiercarácterEXCEPTO unaletramayúsculao una líneanueva r* cero o más r’s,donde r escualquierexpresiónregular r+ una o más r’s
  • 5. r? cero o unar (esdecir,"unar opcional") r{2,5} entre dosy cinco concatenacionesde r r{4} exactamente 4r’s {nombre} la expansiónde ladefiniciónde "nombre"(vermásabajo) "[xyz]"foo" la cadenaliteral:[xyz]"foo x si x esuna ‘a’, ‘b’,‘f’,‘n’,‘r’,‘t’,o ‘v’,entonceslainterpretaciónANSI-Cde x (porejemplo tseríaun tabulador).Enotro caso,un literal ‘x’(usadoparalaconcordancia exactade caracteres especiales(.?) (r) emparejaunaR; losparéntesisse utilizanparaanularla precedencia(vermásabajo) rs la expresión regularrseguidaporlaexpresiónregulars;se denomina"concatenación" r|s bienunar o unas r/s una r perosólosi va seguidaporunas. ^r una r, perosóloal comienzode unalínea r$ una r, perosóloal final de unalínea(esdecir,justoantesde una líneanueva).Equivalente a "r/n". <s>r una r, perosóloenla condiciónde arranque s(vermás adelante). <s1,s2,s3>r lomismo,peroencualquierade lascondicionesde arranque s1,s2, o s3  Emparejamientode entrada Cuandoel escánergeneradoestá funcionando,este analiza su entrada buscando cadenas que concuerdenconcualquierade suspatrones.Si encuentramásde un emparejamiento, toma el que empareje el texto más largo. Si encuentra dos o más emparejamientos de la misma longitud, se escoge la regla listada en primer lugar en el fichero de entrada de Flex. Una vez que se determina el emparejamiento, el texto correspondiente al emparejamiento (denominadoel token) estádisponible enel punterode carácterglobal yytext,ysu longituden la variable global entera yyleng. Entonces la acción correspondiente al patrón emparejado se ejecuta y luego la entrada restante se analiza para otro emparejamiento. Si no se encuentraunemparejamiento, entonces se ejecuta la regla por defecto: el siguiente carácter en la entrada se considera reconocido y se copia a la salida estándar.  Condiciones de arranque Flex dispone de un mecanismo para activar reglas condicionalmente. Cualquier regla cuyo
  • 6. patrón se prefije con"<sc>" únicamente estaráactiva cuando el analizador se encuentre en la condición de arranque llamada "sc". Por ejemplo, <STRING> [^"]* {/* se come el cuerpo de la cadena ... */ ... } estará activa solamente cuando el analizador esté en la condición de arranque "STRING", y <INITIAL, STRING, QUOTE>. {/* trata una secuencia de escape ... */ ... } estaráactiva solamente cuandolacondiciónde arranque actual seao bien"INITIAL", "STRING", o "QUOTE". Las condicionesde arranque se declaranenla(primera) secciónde definicionesde la entrada usando líneas sin sangrar comenzando con %s seguida por una lista de nombres. Una condición de arranque se activa utilizando la acción BEGIN. Hasta que se ejecute la próximaacción BEGIN,las reglasconla condiciónde arranque dada estarán activas y las reglas con otras condiciones de arranque estarán inactivas. Las reglas sin condiciones de arranque también estarán activas. BEGIN (0) retorna al estado original donde solo las reglas sin condiciones de arranque están activas. Este estado también puede referirse a la condición de arranque INITIAL, así que BEGIN(INITIAL) es equivalente a BEGIN (0). (No se requieren los paréntesis alrededor del nombre de la condición de arranque, pero se considera de buen estilo.)  Como se compila con Flex y Bison Luegode escribirlasespecificacionesde flexybisonrealizarlo siguiente. Si se desea invocar a flex: Si se desea invocar a bison (recordar que bison trabaja en conjunto con flex):
  • 7. Para invocar a Bison en conjunción con flex realizar lo siguiente: Para compilar los archivos generados. Flex: MinGW Una alternativa es utilizar un compilador para windows como DevC++ o Borland C++ 4.5 Abriendoel archivolex.yy.cyluegocompilándolose generaráel ejecutable “lex.yy.exe” BISON y FLEX en conjunción:  Ejemplo de la creación de un compilador utilizando Flex y Bison Archivo para FLEX ? 1 %{ 2 #include<stdio.h> 3 #include<conio.h>4 #include "parser.h" %} 5 %option noyywrap 6 %option yylineno 7 letra [a-zA-Z] 8 digito [0binario [0-9]-1] 9 ignora " "|t|n 10operarit *|+|-|/ 11operlog &|$
  • 8. 12 comparador <|>|<=|>=|==|!= 13%%{ignora}+ {;} 14"Entero" {printf("Palabra reservadapara tipo de dato 15enteron");return PRENTERO;} 16"Real" {printf("Palabra reservadapara tipo dedato 17 realn");returnPRREAL;} 18"Booleano" {printf("Palabra reservadapara tipo de dato 19booleanon");returnPRBOOLEANO;} 20"Caracter" {printf("Palabra reservadapara tipo de dato 21caractern");returnPRCARACTER;} 22"Si" {printf("Palabra reservadapara 23condicional n");return PRSI;} 24"Sino"condicional n");return {printf("Palabrareservada para otro PRSINO;} 25"SinoSi" {printf("Palabra reservadapara definir 26condicionales secundariasn");returnPRSINOSI;}
  • 9. 27"Entonces" {printf("Palabra reservadapara definiraccion a 28realizarn");returnPRENTONCES;} 29"FinSi" {printf("Palabra reservada finalizar 30condicionaln");returnPRFINSI;} 31"Para" {printf("Palabra reservadapara buclede tipo 32Paran");returnPRPARA;} 33"FinPara" {printf("Palabra reservadapara fin debucle de 34tipo Paran");returnPRFINPARA;} 35"Mientras" {printf("Palabra reservadapara buclede tipo 36Mientrasn");returnPRMIENTRAS;} 37"Hacer"empieza algo n");return {printf("Palabrareservada paraindicar quese PRHACER;} 38"FinMientras" {printf("Palabra reservadafin debuclede tipo 39Mientrasn");returnPRFINMIENTRAS;} 40"FinHacerMientras" {printf("Palabra reservadapara indicar fin 41debucleHacer- Mientrasn");return PRFINHACERMIENTRAS;} 42"Funcion" {printf("Palabra reservadapara declaracion de 43funcionesn");returnPRFUNCION;} 44"Estructura" {printf("Palabra reservadapara declaracion de 45estructurasn");returnPRESTRUCTURA;} 46"FinFuncion" {printf("Palabra reservadapara finalizar 47funcionn");returnPRFINFUNCION;} 48"Retorna" {printf("Palabra reservadapara retorno de 49funcionn");returnPRRETORNA;} 50"SinValor" {printf("Palabra reservadapara funcion sin valor 51de retornon");return PRSINVALOR;} 52"Definir"funciones n");return {printf("Palabrareservada paradefinir PRDEFINIR;} 53"Constante" {printf("Palabra reservadapara definir 54constantesn");returnPRCONSTANTE;} 55"Entrada" {printf("Palabra reservadapara definir 56entradasn");returnPRENTRADA;} 57"Salida" {printf("Palabra reservadapara definir 58salidasn");returnPRSALIDA;} 59{letra}({letra}|{digito})* {printf("Identificadorn");return
  • 10. 60IDENT;} {letra}+ {printf("Caractern");return CARACTER;} 61{binario}+ {printf("Binarion");returnBOOLEANO;} 62{digito}+ {printf("Enteron");return ENTERO;} 63{digito}+"."{digito}+ {printf("Realn");return REAL;} 64{comparador} {printf("Comparadorn");return 65COMPARADOR;} 66":=" {printf("Asignadorn");returnASIG;} 67";" {printf("Fin sentencian");returnPCOMA;} 68"!=" {printf("Diferenten");return DIF;} 69"," {printf("Coman");return COMA;} 70"==" {printf("Igualn");returnIGUAL;} 71"." {printf("Punton");return PTO;} 72">=" {printf("Signo mayor-igualn");returnMAIGU;} 73"<=" {printf("Signo menor-igualn");returnMEIGU;} 74"(" {printf("(n");return PARIZ;} 75")" {printf(")n");returnPARDE;} 76">" {printf(">n");return MAYOR;} 77"<" {printf("<n");return MENOR;} 78"{" {printf("{n");return LLIZ;} 79"}" {printf("}n");return LLDE;} 80"+" {printf("+n");return MAS;} 81 "-" {printf("-n");returnMENOS;} 82 "*" {printf("*n");return POR;} "/" {printf("/n");return ENTRE;} "&" {printf("&n");return YLOG;} "$" {printf("Operador Logicon");returnOLOG;} . {printf("ERROR LEXICO EN LINEA %d n",yylineno);} %% intmain(intargc,char*argv[]) { if ((yyin = fopen(argv[1], "rt")) == NULL) { printf("nNo se puede abrir el archivo:%sn",argv[1]); } el se { //yylex();
  • 11. yyparse() ; } fclose(yy in);return0; } Arhcivo parser.h ? 1 #ifndef YYSTYPE 2 #define YYSTYPE int 3 #endif#define PRENTERO 257 4 #definePRREAL 258 5 #define PRBOOLEANO 259 6 #define PRCARACTER 260 7 #define PRSI 261 8 #define PRSINO#define PRSINOSI 263 262 9 #define PRENTONCES 264 10#define PRFINSI 265 11#define PRPARA 266 12#define PRFINPARA 267 13#define PRMIENTRAS 268#define PRHACER 269 14#define PRFINMIENTRAS 270 15#define PRFINHACERMIENTRAS 27116 #define PRFUNCION 272 17#define PRFINFUNCION#define PRRETORNA 274 273 18#define PRSINVALOR 275 19#define PRESTRUCTURA 276 20#define MAS 277 21 #define MENOS 278 22#define POR 279 #define ENTRE280 23#define OLOG 281 24#define YLOG 282 25#define PRDEFINIR 283
  • 12. 26#define PRCONSTANTE 284 #define IDENT285 27 #define ENTERO 286 28 #define REAL287 29#define BOOLEANO 288 30#define CARACTER 289 31#define COMPARADOR 290 #define ASIG291 32#define PCOMA 292 33#define DIF 293 34#define COMA 294 efine PTO 296 40#define MAYOR 301 #define MENOR 302 41 #define LLIZ 303 42 #define LLDE304 43 #define PRSALIDA 305 44#define PRENTRADA 306 45 46extern YYSTYPE yylval; Archivo para Bison: 1 %{ 2 intyystopparser=0; 3 %} 4 5 6 %token PRENTERO PRREAL PRBOOLEANO PRCARACTER PRSI PRSINO PRSINOSI 35#define IGUAL 295 #d 36#define MAIGU 297 37#define MEIGU 298 38#define PARIZ 299 39 #define PARDE 300
  • 13. 7 PRENTONCES PRFINSI PRPARAPRFINPARA PRMIENTRAS PRHACER PRFINMIENTRAS PRFINHACERMIENTRAS 8 PRFUNCION PRFINFUNCION PRRETORNA PRSINVALOR PRESTRUCTURA MAS MENOS 9 POR ENTRE OLOG YLOG 10 PRDEFINIR PRCONSTANTE IDENT ENTERO REAL BOOLEANO CARACTER 11 COMPARADOR ASIG PCOMA DIF COMA IGUAL PTOMAIGU MEIGU PARIZ PARDE MAYOR MENOR LLIZ LLDE PRSALIDA PRENTRADA 12 %start inicio 13 14 %% 15 inicio : funcion16 |constante 17 | estructura; 18 19 estructura : PRESTRUCTURA IDENT LLIZ n 20 n : declaracion n21 | declaracion nn 22 nno :: estructura LLDE IDENT PCOMA o 23 | constante 24 | funcion 25 ; 26 27 constante : PRDEFINIR PRCONSTANTE e 28 e | PRREAL IDENT f: PRENTERO IDENT f 29 | PRBOOLEANO IDENT f 30 f : ASIG g31 g : ENTERO PCOMA y32 | REAL PCOMA y | BOOLEANO PCOMA y 33 y : constante34 |estructura 35 | funcion 36 ; 37 38 funcionj : PRENTERO k : PRFUNCION j
  • 14. 39 | PRREAL k 40 | PRBOOLEANO k 41 | PRCARACTER k 42 | PRSINVALOR k 43 kl :: IDENT PARIZ l kl 44 kl : declaracion l 45 | ll 46 ll : PARDE sentencia m47 m : PRRETORNA IDENT p 48 p | p : PRFINFUNCION funcion 49 | PRFINFUNCION 50 ; 51 52 comparacion :IDENT COMPARADOR b 53 b | REAL: IDENT 54 | ENTERO 55 | BOOLEANO 56 ; 57 58 declaracion :PRENTERO c 59 | PRREAL c| PRBOOLEANO c 60 | PRCARACTER c 61 c : IDENT PCOMA 62 ; 63 64 asignaciona : IDENT PCOMA : IDENT ASIG a 65 | ENTERO PCOMA 66 | REAL PCOMA 67 | BOOLEANO PCOMA 68 | oparitmetica PCOMA 69 ; 70 mientras : PRMIENTRAS PARIZ x 71 x : comparacion y 72 | oplogica y 73 y : PARDE sentencia PRFINMIENTRAS
  • 15. 74 ; 75 76 hacermientras : PRHACER sentencia PRFINHACERMIENTRAS PRMIENTRAS PARIZ cc 77 cc : comparacion PARDE 78 | oplogica PARDE 79 ; 80 81 parasentencia PRFINPARA : PRPARA PARIZ asignacion comparacion PCOMAasignacion PARIZ 82 ; 83 84 si : PRSI PARIZ sh 85 sh : comparacion shh | oplogica shh 86 shh : PARDE PRENTONCES sentencia h 87 h | PRSINOSI PARIZ comparacion PARDE PRENTONCES sentencia i: PRFINSI 88 i : h 89 | z90 z : PRSINO PRENTONCES sentencia PRFINSI 91 ; 92 93 sentencia : declaracion sentencia | declaracion 94 | asignacion sentencia 95 | asignacion96 | mientras sentencia 97 | mientras 98 | hacermientras sentencia | hacermientras 99 | para sentencia100 | para 101 | si sentencia 102 | si| entrada sentencia 103 | entrada 104 | salidasentencia 105 | salida
  • 16. 106 ; 107 108salida ; : PRSALIDA ASIG LLIZ LLDE PCOMA 109 110 entrada : PRENTRADA IDENT PCOMA 111 ; 112 113 oparitmetica : MAS PARIZ q 114 | POR PARIZ q| suma 115 | producto 116 q : oparitmetica PARDE r 117 suma : MAS rt 118 producto: POR r t 119tu :: r u t 120 | 121 r : IDENT 122 | REAL 123 | ENTERO 124 ; 125 126 oplogica :OLOG PARIZ qq 127 | YLOG PARIZ qq 128 | yy 129 | oo 130qqoo :: oplogica PARDE rr OLOG rr tt 131 yy : YLOG rr tt 132 tt : rr uu 133 uu : tt 134 | 135rr ; :comparación  Realice un collage con las palabras mas importantes sobre el tema Flexy Bison.
  • 17.  Comentario Para la compilaciónunode losmejoresejemplos por su facilidad de uso para los estudiantes es Flex y Bison ya que permite generar analizadores léxicos, teniendo en cuenta las expresionesregularesque existanenel código.También es importante ya que es compatible con casi el 100% de las herramientas UNIX.