Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Flex y bison
1. ESCUELA DE INGENIERÍA EN SISTEMAS
TALLER DE COMPILADORES
NOMBRE: FRANKLIN PAZMIÑO
FECHA: 20/06/2019
Utilizandola herramientade búsquedade la Web,Investigarlossiguientestemas:
Herramientas para la construcción de procesadoresde lenguaje.
Aplicaciónde loslenguajes:
lenguaje ensamblador,oassembler(eninglésassemblylanguage ylaabreviaciónasm),esun
lenguaje de programaciónde bajonivel.Consiste enunconjuntode mnemónicosque
representaninstruccionesbásicasparaloscomputadores,microprocesadores,
microcontroladoresyotroscircuitosintegradosprogramables.
Normalmente lacreaciónde unprogramaejecutable (untípicoarchivo.exe paraWindowso
DOS) conllevadospasos.El primerpasose llamacompilación(propiamentedicho) ytraduce el
códigofuente escritoenunlenguaje de programaciónalmacenadoenunarchivoacódigoen
bajonivel (normalmenteencódigoobjeto,nodirectamentealenguaje máquina).
y Bison.
Esta herramientase usaenconsonanciacon laherramientaflex ysirve paraespecificar
analizadoressintácticos.De lamismaformaque flex tiene comobase lasexpresiones
regulares,laherramientabison
Flex buscaconcordanciasenun ficherode entradayejecutaaccionesasociadasaestas
expresiones.
Para instalarflex vamosadar clic derechoenel archivoque descargamosanteriormente y
seleccionamos“ejecutarcomoadministrador”ynosaparecerála siguienteventana:
Damos clicennexty nosaparecerá losiguiente:Escogemoslaopción“Iacceptthe agreement”
y damosclic ennexty nosaparecerála ventana:
Aquí escogemoslarutaen laque vamos a instalar.Paranuestrocaso ponemosenlaruta “C:
GnuWin32” y damosclic ensiguiente.Aquísolamentedamosclicensiguiente ynosaparecerá
losiguiente:
Dejamostodopredeterminadoydamosclicensiguiente,nosaparecerálosiguiente:Damos
clicen siguienteyporúltimonosaparecerá:
Finalmentedamoscliceninstall ylistohemosteminadode instalarFLEXINSTALACIÓN DE
BISON
2. Cuandoel escánergeneradoestáfuncionando,este analizasuentradabuscandocadenasque
concuerdenconcualquierade suspatrones.Si encuentramásde un emparejamiento,tomael
que empareje mástexto(parareglasde contextoposterior,se incluyelalongitudde laparte
posterior,inclusosi se devuelve alaentrada).
flex disponede unmecanismoparaactivarreglascondicionalmente.Cualquierreglacuyo
patrón se prefije con"<sc>" únicamente estaráactivacuandoel analizadorse encuentreenla
condiciónde arranque llamada"sc".Porejemplo,
`char *yytext'apuntaal textodel tokenactual.Este puede modificarseperonoalargarse (no
puede añadircaracteresal final).Si aparece ladirectivaespecial `%array'enlaprimerasección
de la descripcióndel analizador,entoncesyytextse declaraensulugarcomo `char
yytext[YYLMAX]',donde YYLMAXesladefinicionde unamacro que puede redefinirenla
primerasecciónsi nole gusta el valorpor defecto(generalmente 8KB).El usode `%array'
Al ejecutarel comandoflex nombre_fichero_fuente se crearáunficheroenC llamado
“lex.yy.c”.Si se compilaeste ficheroconlainstrucción“gcc lex.yy.c –lfl –onombre_ejecutable”
(-lfl indicaenlazarconla bibliotecade flex) se obtendrácomoresultadounficheroejecutable
llamadonombre_ejecutable).Unavezse ha creadoel ficheroejecutable se puedeejecutar
directamente.Flex esperaráque se introduzcatextoporlaentradaestándar(teclado) ylo
analizarácada vezque se pulse el retornode carro.Para terminarcon el análisisnormalmente
hay que pulsar-D.
3. Uno de losusosprincipalesde Flexescomoacompañante del analizadorde gramáticasBison
(o de Yacc). Los analizadoresBisonnecesitanunafunciónllamda‘yylex()’paradevolverlesel
siguiente tokende laentrada.Esafuncióndevuelve el tipodel próximotokenyademáspuede
ponercualquiervalorasociadoenlavariable global yylval.
Los símbolosterminalesde lagramáticase denominanenBisontokensydebendeclararseen
la secciónde definiciones.Porconvenciónse suelenescribirlostokensenmayúsculasylos
símbolosnoterminalesenminúsculas. Losnombresde lossímbolospuedencontenerletras,
dígitos(noal principio),subrayadosypuntos.
Una regla gramatical de Bisontiene lasiguiente formageneral:resultado:componentes...;
donde resultadoesel símbolonoterminal que describe estareglaycomponentessonlos
diversossímbolosterminalesynoterminalesque estánreunidosporestaregla.
La secciónde declaracionesde Bisonde unagramáticade Bisondefine lossímbolosutilizados
enla formulaciónde lagramáticay lostiposde datos de losvaloressemánticos.Todoslos
nombresde tokens(peronolostokensde carácter literal simple tal como‘+’y ‘*’) se deben
declarar.Los símbolosnoterminalesdebenserdeclaradossi necesitaespecificarel tipode
dato a utilizarparalosvaloressemánticos.
iade operadores
4. El fuente de Bisonse convierte enunafunciónenCllamadayyparse.Aquídescribimoslas
convencionesde interfazde yyparse ylasotrasfuncionesque éste necesitausar.Tengaen
cuentaque el analizadorutilizamuchosidentificadoresenCcomenzandocon‘yy’e ‘YY’ para
propósitointerno.
2 Ejemplosde la creación de un compiladorutilizandoFlexy Bison.
EJECUCIÓN PROGRAMA BISON