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