home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 20 / st_txl / itracer.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-07-18  |  2.8 KB  |  98 lines

  1. /**********************************************************/
  2. /*                       ITRACER.C                        */
  3. /*             Wenn der Programmierer lacht               */
  4. /*     der Tracer ihm die Fehlersuche einfach macht       */
  5. /*                                                        */
  6. /*          (c) 1990 Ralf Morgenstern & TOOLBOX           */
  7. /**********************************************************/
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <ctype.h>
  12. #include <ext.h>
  13. #include "interp.h"
  14.  
  15. /* lokale Prototypen */
  16. void  Trace (void);
  17. void  ShowVars (void);
  18. void  SetNewVal (void);
  19. void  HelpMe (void);
  20.  
  21.  
  22. /* Benoetigte Globalvariablen */
  23. extern  PRGZEILE  *ActLine;   /* aktuelle interp. Zeile   */
  24. extern  char      *LinePos;   /* Zeilenpos. der Akt. Zeile*/
  25. extern  VAR  *FirstVar;  /* Zeiger auf die erste Variable */
  26. extern int traceFlag;
  27. extern int IntError;
  28.  
  29. /* Trace : der Tracer
  30.    Funktionen siehe HelpMe  */
  31.    
  32. void Trace()
  33. {
  34. char   name[NAMLEN];
  35. char   ch;
  36.  
  37.  ShowLine ( ActLine );
  38.  do {
  39.    printf( "\nT:" ); /* Bereitschaft anzeigen */
  40.    ch = toupper(getch());  /* gro₧ und klein gleichberechtigt */
  41.    if ( ch == 'V' ) ShowVars();
  42.    else if ( ch == 'N' ) {
  43.      /* Name erfragen und entsprechende Variable anzeigen */
  44.      printf( "Name ? " ); scanf( "%s",name );
  45.      PrintVar ( name );
  46.    }
  47.    else if ( ch == 'A' ) {
  48.      printf( "Verfolgung abbrechen" ); traceFlag = FALSE; ch = CR;
  49.    }
  50.    else if ( ch == 'S' ) SetNewVal();
  51.    else if ( ch == 'L' ) ShowLine( ActLine );
  52.    else if ( ch == 'H' ) HelpMe();
  53.    else if ( ch == 'B' ){ IntError = TRUE; ch = CR; }
  54.  } while ( ch != CR );
  55.  printf( "\n" );
  56. }/* Trace */
  57.  
  58. /* ShowVars : zeigt alle derzeit definierten Variablen an */
  59.  
  60. void ShowVars()
  61. {
  62. VAR *Variable;
  63.  
  64.  printf( "zeige Variablen\n" );
  65.  for ( Variable=FirstVar;Variable;Variable=Variable->NextVar ){
  66.    printf( "%s = ",Variable->VarName );
  67.    PrintVar ( Variable->VarName ); printf( "\n" );
  68.  }
  69. }
  70.  
  71. /* SetNewVal : Setzt Variable auf neuen Wert */
  72.  
  73. void SetNewVal()
  74. {
  75. VAR  *Variable;
  76. char name[NAMLEN],wert[ZEILENLAENGE];
  77.  
  78.   printf( "setze Variable neu; Name ? " ); gets( name );
  79.   if (( Variable = IsVariable( name )) != NULL ) {
  80.     printf( "neuer Wert = " ); gets ( wert );
  81.     LinePos = wert; SkipChar();  ReadValue ( Variable );
  82.   }
  83.   else printf( "existiert nicht" );
  84. }
  85.  
  86. /* HelpMe : gibt kurze Hilfstexte zu den Tracer-Funktionen aus */
  87.  
  88. void HelpMe()
  89. {
  90.  printf( "\nA : Tracer verlassen, Verfolgung einstellen\n" );
  91.  printf( "B : Programm beenden\n" );
  92.  printf( "L : aktuelle Zeile zeigen\n" );
  93.  printf( "N : Name erfragen, variable anzeigen\n" );
  94.  printf( "S : Name und Wert erfragen, Variable auf Wert setzen\n" );
  95.  printf( "V : Alle variablen mit Name und Wert anzeigen\n" );
  96. }
  97.  
  98. /* Ende von ITRACER */