home *** CD-ROM | disk | FTP | other *** search
- /**********************************************************/
- /* ITRACER.C */
- /* Wenn der Programmierer lacht */
- /* der Tracer ihm die Fehlersuche einfach macht */
- /* */
- /* (c) 1990 Ralf Morgenstern & TOOLBOX */
- /**********************************************************/
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <ext.h>
- #include "interp.h"
-
- /* lokale Prototypen */
- void Trace (void);
- void ShowVars (void);
- void SetNewVal (void);
- void HelpMe (void);
-
-
- /* Benoetigte Globalvariablen */
- extern PRGZEILE *ActLine; /* aktuelle interp. Zeile */
- extern char *LinePos; /* Zeilenpos. der Akt. Zeile*/
- extern VAR *FirstVar; /* Zeiger auf die erste Variable */
- extern int traceFlag;
- extern int IntError;
-
- /* Trace : der Tracer
- Funktionen siehe HelpMe */
-
- void Trace()
- {
- char name[NAMLEN];
- char ch;
-
- ShowLine ( ActLine );
- do {
- printf( "\nT:" ); /* Bereitschaft anzeigen */
- ch = toupper(getch()); /* gro₧ und klein gleichberechtigt */
- if ( ch == 'V' ) ShowVars();
- else if ( ch == 'N' ) {
- /* Name erfragen und entsprechende Variable anzeigen */
- printf( "Name ? " ); scanf( "%s",name );
- PrintVar ( name );
- }
- else if ( ch == 'A' ) {
- printf( "Verfolgung abbrechen" ); traceFlag = FALSE; ch = CR;
- }
- else if ( ch == 'S' ) SetNewVal();
- else if ( ch == 'L' ) ShowLine( ActLine );
- else if ( ch == 'H' ) HelpMe();
- else if ( ch == 'B' ){ IntError = TRUE; ch = CR; }
- } while ( ch != CR );
- printf( "\n" );
- }/* Trace */
-
- /* ShowVars : zeigt alle derzeit definierten Variablen an */
-
- void ShowVars()
- {
- VAR *Variable;
-
- printf( "zeige Variablen\n" );
- for ( Variable=FirstVar;Variable;Variable=Variable->NextVar ){
- printf( "%s = ",Variable->VarName );
- PrintVar ( Variable->VarName ); printf( "\n" );
- }
- }
-
- /* SetNewVal : Setzt Variable auf neuen Wert */
-
- void SetNewVal()
- {
- VAR *Variable;
- char name[NAMLEN],wert[ZEILENLAENGE];
-
- printf( "setze Variable neu; Name ? " ); gets( name );
- if (( Variable = IsVariable( name )) != NULL ) {
- printf( "neuer Wert = " ); gets ( wert );
- LinePos = wert; SkipChar(); ReadValue ( Variable );
- }
- else printf( "existiert nicht" );
- }
-
- /* HelpMe : gibt kurze Hilfstexte zu den Tracer-Funktionen aus */
-
- void HelpMe()
- {
- printf( "\nA : Tracer verlassen, Verfolgung einstellen\n" );
- printf( "B : Programm beenden\n" );
- printf( "L : aktuelle Zeile zeigen\n" );
- printf( "N : Name erfragen, variable anzeigen\n" );
- printf( "S : Name und Wert erfragen, Variable auf Wert setzen\n" );
- printf( "V : Alle variablen mit Name und Wert anzeigen\n" );
- }
-
- /* Ende von ITRACER */