readline can be desactivated
[calc.git] / parser.h
1 #ifndef __PARSER_H__
2 #define __PARSER_H__
3
4 /* function type */
5
6 typedef enum {
7 Val = 0, Sig,
8 Add, Sub,
9 Mul, Div, Mod,
10 Pow, Sqr,
11 Cos, Sin, Atn,
12 Log, Exp,
13 Qui, Hel
14 } func_t;
15
16 /* keyword type */
17
18 typedef struct _keyword_t {
19 char *keyword;
20 func_t func;
21 int nbops;
22 int offset;
23 int prio;
24 } keyword_t;
25
26 /* calculus element type */
27
28 #define MAX_OPERANDS 10
29 typedef struct _element_t {
30 func_t func;
31 int nbops;
32 struct _element_t *ops[MAX_OPERANDS];
33 double value;
34 int prio;
35 } element_t;
36
37 #define ERROR_OP ((element_t *)(-1))
38
39 /* parser function */
40
41 void delelement (element_t *root);
42
43 element_t *parser (char *str, char **next, int prio);
44
45 void print_element (element_t *root, int level);
46
47 double evaluate_element (element_t *root, char mask);
48
49 #endif /* __PARSER_H__ */
50
51 /* vim: set ts=4 sw=4 et: */