Compilador Tiny

Pasos para ejecutar el compilador tiny    1) Instalar el “Xcode Tools” para Mac, que viene en el DVD de instalación “Mac

Views 133 Downloads 3 File size 143KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Pasos para ejecutar el compilador tiny    1) Instalar el “Xcode Tools” para Mac, que viene en el DVD de instalación “Mac OS X”.    2) Descargar  de  la  página  web  http://www.cs.sjsu.edu/~louden/cmptext/  el  archivo  “loucomp.tar.z “.    3) Descomprimir  el  archivo  que  se  descargo,  el  cual  contiene  el  código  fuente  del  compilador.    4) Entrar al directorio “loucomp”.    5) Compilar los archivos fuente del compilador, a través del comando MAKE, el cual debe  teclearse en el promp dentro del directorio. El comando MAKE, ejecuta los comandos e  instrucciones  contenidas  en  el  archivo  makefile,  que  en  nuestro  caso  contiene  las  instrucciones para compilar con gcc cada uno de los archivos fuentes del programa.    6) El  comando  MAKE  genera  un  archivo  ejecutable  de  nombre  tiny.exe.  Este  archivo  permite  compilar  un  programa  (codigo  fuente)    con  el  nuevo  compilador  (tiny).  Por  lo  que en nuestro caso teclearemos en el promp:   ./tiny sample.tny.  7) El compilador tiny genera un archivo con extensión tm (sample.tm), el cual contiene las  instrucciones que el programa que compiló va a llevar a cabo. Cabe mencionar que estas  instrucciones están en lenguaje ensamblador.    8) Para poder ejecutar el programa que se compiló, es necesario contar con un programa  que traduzca las instrucciones del lenguaje ensamblador, para ello está el programa TM.  Es necesario compilarlo para ello introducimos la siguiente instrucción desde el promp:   gcc tm.c –o tm.    9) El  archivo  resultante  (tm)  nos  permitira  traducir  las  instrucciones  en  lenguaje  ensamblador, para ello se utiliza la siguiente instrucción:   ./tm sample.tm.    10) TM  ejecutará  las  instrucciones  del  programa  (sample.tny)  que  tiny  compilo.    Cabe  mencionar  que  es  necesario  seguir  las  instrucciones  que  tiene  el  programa  compilado,  para nuestro caso (en sample.tny) se tienen las instrucciones para calcular el factorial de  un  número.  Para  poder  introducir  el  número  a  calcular,  primero  debemos  presionar  enter, después introducir el comando “go + enter” y después el número (y enter) al que  deseamos  calcular  su factorial; posteriormente se desplegara el resultado.  Finalmente  es necesario teclear el comando “quit + enter” para poder salir del programa.           

C O M P I L A D O R  Documents nicandrocruzramirez$ cd loucomp  loucomp nicandrocruzramirez$ ls  Makefile  cgen.o   main.c   sample.tny  symtab.o  analyze.c  code.c   main.o   scan.c    tm.c  analyze.h  code.h   parse.c   scan.h    util.c  analyze.o  code.o   parse.h  scan.o    util.h  cgen.c    globals.h  parse.o  symtab.c  util.o  cgen.h   lex    readme.unx  symtab.h  yacc  l  oucomp nicandrocruzramirez$ MAKE  gcc  ‐c main.c  gcc  main.o util.o scan.o parse.o symtab.o analyze.o code.o cgen.o ‐o tiny  loucomp nicandrocruzramirez$ ls  Makefile  code.c   parse.c   scan.o    util.h  analyze.c  code.h   parse.h  symtab.c  util.o  analyze.h  code.o   parse.o  symtab.h  yacc  analyze.o  globals.h  readme.unx  symtab.o  cgen.c    lex    sample.tny  tiny  cgen.h   main.c   scan.c    tm.c  cgen.o   main.o   scan.h    util.c    loucomp nicandrocruzramirez$ ./tiny sample.tny  TINY COMPILATION: sample.tny    loucomp nicandrocruzramirez$ gcc tm.c ‐o tm  loucomp nicandrocruzramirez$ ls  Makefile  code.c   parse.c   scan.h    tm.c  analyze.c  code.h   parse.h  scan.o    util.c  analyze.h  code.o   parse.o  symtab.c  util.h  analyze.o  globals.h  readme.unx  symtab.h  util.o  cgen.c    lex    sample.tm  symtab.o  yacc  cgen.h   main.c   sample.tny  tiny  cgen.o   main.o   scan.c    tm    loucomp nicandrocruzramirez$ ./tm sample.tm  TM  simulation (enter h for help)...  Enter command: warning: this program uses gets(), which is unsafe.  Enter command: go  Enter value for IN instruction: 5  OUT instruction prints: 120  HALT: 0,0,0  Halted  Enter command: quit  Simulation done.  loucomp nicandrocruzramirez$     

      Para poder obtener el analizador léxico del compilador Tiny es necesario llevar a cabo las  siguientes instrucciones:  1) Cambiar el valor de las banderas (de FALSO a VERDADERO) que corresponden al  analizador léxico en el programa MAIN.C, las cuales son:  int EchoSource = TRUE; int TraceScan = TRUE;

2) Guardar los cambios efectuados al archivo MAIN.C.  3) Ejecutar nuevamente el comando MAKE  4) Correr con el compilador tiny el programa que deseado:   ./tiny sample.tny  5) En pantalla tiny desplegara el analizador léxico correspondiente.       Para poder obtener el analizador sintáctico del compilador Tiny es necesario llevar a cabo las  siguientes instrucciones:  1) Cambiar el valor de las banderas (de FALSO a VERDADERO) que corresponden al  analizador sintáctico en el programa MAIN.C, las cuales son:  int TraceParse = TRUE;

2) Guardar los cambios efectuados al archivo MAIN.C.  3) Ejecutar nuevamente el comando MAKE  4) Correr con el compilador tiny el programa que deseado:   ./tiny sample.tny  5) En pantalla tiny desplegara el analizador sintáctico correspondiente.      Para poder obtener el analizador semántico del compilador Tiny es necesario llevar a cabo las  siguientes instrucciones:  1) Cambiar el valor de las banderas (de FALSO a VERDADERO) que corresponden al  analizador semántico en el programa MAIN.C, las cuales son:  int TraceAnalyze = TRUE;

2) Guardar los cambios efectuados al archivo MAIN.C.  3) Ejecutar nuevamente el comando MAKE  4) Correr con el compilador tiny el programa que deseado:   ./tiny sample.tny  5) En pantalla tiny desplegara el analizador semántico correspondiente.   

 

ANALIZADOR LEXICO  loucomp nicandrocruzramirez$ ./tiny sample.tny  TINY COMPILATION: SAMPLE.TNY     1: { Sample program     2:   in TINY language ‐     3:   computes factorial     4: }     5: read x; { input an integer }    5: reserved word: read    5: ID, name= x    5: ;     6: if 0