/***** * * Michael Riff * RPN software version 1.0 Oktob 2013. * * Globale Definitionen fuer das Ausparsen von Berechnungen. * Definitionen von Variablen Typen fuer den Parser. * * Version 1.7: 06 June 2016 * Implemented handling of additional routines that can be called out of the text code. As example * we used the following: print() and print("constant string") that print out * the value of a variable or a string. * 13 June 2016 * Increased MAXGRAPHS constant to 30. *****/ #include "Calculs.h" /* Liste der vohandenen Zeichen ausser Operanden fuer Klassiche Saetze. */ typedef enum {klauf,klzu,chsg,_sin,_ln,mult,_div,plus,minus,expos,assign,anderes, _sqrt,_exp,_cos,_tan,_sinh,_cosh,_tanh,_asin,_acos,_atan,plusEq,minusEq,multEq,_divEq,exposEq} operation; /* Liste der Bool Operatoren fuer Boolean Saetze. */ typedef enum {and,or,xor,not,lth,gth,leth,geth,neq,eq,bassign,sonst} BoolOp; /* Zur Pufferung der Operatoren und Funktionnen waehrend der Umschreibung in Polnische Notation. */ typedef struct { int Typ; double Operand; int VarPos; operation Kommando; BoolOp Bool; } Pfr_Str; /* Liste der Zustaende Dieser Typ wird haupsächlich benutzt um beim auslesen eines minus (-) Zeichen zu bestimmen ob es ein Substrahierung handelt ( Operand gerade davor ausgelesen) oder einen minus Zeichen vor eines Operanden oder vor einer Variable ( anderes vorher ausgelesen wie ( { z. B.) */ typedef enum {klamauf,klamzu,operatr,opernd,funktion,variable,parameter ,ifelse,schleife,sonstiges} zustand; /* Initial groesse der Rechnungsformeln Tafel. Diese Tafel wird nicht mit realloc erweitert */ #define MAXGRAPHS 30 /* Typ Definition zur Speicherung aller Graphiken (Rechnungsformeln) */ typedef struct GRAPH { long GraphicID; char grphKey[20]; // Name der graphik (zur mnemotechnische ID) char lytFile[30]; // File fuer TCL das die Ansicht der Graphik angibt int parmAnzahl; // Anzahlt der Eingabeparameter von Rechnung float Resolution[4]; // Increment Schritt fuer jeder der max 4 Parameter // weil die Eingabe mit Tasten + - geht. /* Neue Felder fuer Auslesen der Graphiken aus einer Text Datei */ // double (**Rechnung)(void); /* Referenz Funktionsreferenzen Tabelle // deren Ausfuhrung in Execute die Berechnung durchfuehrt */ Commande *Rechnung; unsigned long execSize; // Groesse der Funktionseferenzen Liste Rechnung #ifdef MIT_VAR variables *Vars; /* Referenz auf der Tabelle der zu der Graphik gehoerenden Variablentabelle */ unsigned short numVar; #endif #ifdef ARG_DOUBLE double *Constants; /* Tabelle in der die als double definierte constanten gespeichert sind. */ int numConsts; #endif #ifdef ADD_FUNCT char **Msges; int numMsg; #endif } Grph_struct; #define BUFFER_SIZE 10 /* Definition der Funktionnen : =====================*/ int InitParse(void); void Quit(void); void CleanUp(void); int yybisparse(void);