00001 #ifndef HPPARSER_H
00002 #define HPPARSER_H
00003
00004 #include <util.h>
00005
00038
00039
00044 #define PRS_OK 0
00045
00049 #define PRS_ERROR_PAR 1
00050
00054 #define PRS_ERROR_MEMORY 2
00055
00059 #define PRS_ERROR_VARIABLE 3
00060
00064 #define PRS_ERROR_ARG 4
00065
00069 #define PRS_ERROR_STACK 5
00070
00074 #define PRS_ERROR_SLOT_VAR 6
00075
00079 #define PRS_ERROR_SLOT_FUNC 7
00080
00084 #define PRS_ERROR_NOT_IMPLEMENTED 99
00085
00086
00091
00092
00097 #define xNEG 0x39976
00098
00103 #define xABS 0x39a07
00104
00109 #define xPLUS 0x39b58
00110
00115 #define xMINUS 0x39cfc
00116
00121 #define xMULTIPLY 0x39de8
00122
00127 #define xDIVIDE 0x39f49
00128
00133 #define xPOW 0x3a097
00134
00139 #define xROOT 0x3a200
00140
00145 #define xSIGN 0x3a3ee
00146
00151 #define xSQRT 0x3a442
00152
00157 #define xSQ 0x3a4ef
00158
00163 #define xSIN 0x3a57c
00164
00169 #define xCOS 0x3a5d0
00170
00175 #define xTAN 0x3a624
00176
00181 #define xSINH 0x3a678 // Not yet implemented
00182
00187 #define xCOSH 0x3a6c2 // Not yet implemented
00188
00193 #define xTANH 0x3a70c // Not yet implemented
00194
00199 #define xASIN 0x3a756
00200
00205 #define xACOS 0x3a7dc
00206
00211 #define xATAN 0x3a844
00212
00217 #define xASINH 0x3a88e // Not yet implemented
00218
00223 #define xACOSH 0x3a8d8 // Not yet implemented
00224
00229 #define xATANH 0x3a94f // Not yet implemented
00230
00235 #define xEXP 0x3a9b7
00236
00241 #define xLN 0x3aa01
00242
00247 #define xLOG 0x3aa73
00248
00253 #define xALOG 0x3aae5
00254
00259 #define xFACT 0x3abaf // Not yet implemented
00260
00265 #define xIP 0x3ac3d
00266
00271 #define xFP 0x3ac87
00272
00277 #define xFLOOR 0x3acd1 // Not yet implemented
00278
00283 #define xCEIL 0x3ad1b // Not yet implemented
00284
00289 #define xMOD 0x3afcb // Not yet implemented
00290
00295 #define xRAND 0x3b3e6 // Not yet implemented
00296
00301 #define xAND 0x3ca07 // Not yet implemented
00302
00307 #define xOR 0x3ca8d // Not yet implemented
00308
00313 #define xNOT 0x3cb13 // Not yet implemented
00314
00319 define xXOR 0x3cb7a
00320
00325 #define xEQ 0x3cbf6
00326
00331 #define xDIFF 0x3cd21
00332
00337 #define xLT 0x3ce42
00338
00343 #define xGT 0x3cee1
00344
00349 #define xLE 0x3cf80
00350
00355 #define xGE 0x3d01f
00356
00361 #define xDER 0x3d258 // Not yet implemented
00362
00367 #define xINTEGRAL 0x3d47e // Not yet implemented
00368
00373 #define xSUM 0x3d503
00374
00375
00380
00381
00382 #define C_TypeVal 1
00383 #define C_TypeFunc 2
00384 #define C_TypeIdent 3
00385 #define C_TypeSymb 4
00386
00387
00388
00393 typedef struct entry entry_t;
00394 typedef struct function function_t;
00395 typedef struct stackeval stackeval_t;
00396
00401 typedef struct
00402 {
00403 int Type;
00404 union
00405 {
00406 double Val;
00407 char *Ident;
00408 int Func;
00409 entry_t *Symb;
00410 } data;
00411 } element_t;
00412
00420 extern char *prs_error (int error);
00421
00430 void prs_alg_set_angle (int angmode);
00431
00441 extern int prs_alg_create (entry_t **stack, int size);
00442
00452 extern int prs_alg_add_val (entry_t *stack, int level, double value);
00453
00463 extern int prs_alg_add_ident (entry_t *stack, int level, char *ident);
00464
00474 extern int prs_alg_add_func (entry_t *stack, int level, int code);
00475
00485 extern int prs_alg_add_symb (entry_t *stack, int level, entry_t *expr);
00486
00496 extern int prs_alg_eval (entry_t *stack, double *value);
00497
00506 extern int prs_alg_set_var (char *var, double value);
00507
00516 extern int prs_alg_get_size (entry_t *stack, int *size);
00517
00526 extern int prs_alg_set_size (entry_t *stack, int size);
00527
00537 extern int prs_alg_first_var (entry_t *stack, char **name);
00538
00548 extern int prs_alg_next_var (entry_t *stack, char **name);
00549
00559 extern int prs_alg_get_element (entry_t *stack, int level, element_t *element);
00560
00572 extern function_t *prs_alg_func_create (int code, int nbarg, void *newfunc);
00573
00585 extern int prs_alg_func_reg (function_t *newfunc, function_t **oldfunc);
00586
00587 extern double prs_val (stackeval_t *x);
00588 #endif