-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.c
99 lines (83 loc) · 3.11 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include "ExpressionParser.h"
/*=======================================================
* TEST
*======================================================*/
double Multiply_Four(double value)
{
return value * 4;
}
#ifdef TERMINAL
#define COLOR_RED "\033[0;31m"
#define COLOR_LIGHT_YELLOW "\033[1;33m"
#define COLOR_NORMAL "\033[0m"
#define Print_Expr(expr) \
printf(" %sEXPR=[%s]%s\n", COLOR_RED, (expr), COLOR_NORMAL);
#define Print_Result(result) \
printf("%sresult=[%g]%s\n", COLOR_LIGHT_YELLOW, (result), COLOR_NORMAL);
#else
#define Print_Expr(expr) \
printf(" EXPR=[%s]\n", (expr));
#define Print_Result(result) \
printf("result=[%g]\n", (result));
#endif
int main(int argc, char *argv[])
{
double result;
/*
if (argc != 2)
{
printf("please input math expression\n");
return 0;
}
result = Exec(argv[1]);
*/
char *expr = "1+3-((2*10)-5)";
printf("/*=======================================================\n");
printf(" Normal expression\n");
Print_Expr(expr);
printf("=======================================================*/\n");
result = Exec(expr);
if (!HasError())
Print_Result(result);
AddUserConstant("five", 5);
AddUserVar("var", 10);
expr = "1+3-((2*10)-5) +(five*var)";
printf("\n/*=======================================================\n");
printf(" Add Constant: five = 5\n");
printf(" Add Varable: var = 10\n");
Print_Expr(expr);
printf("=======================================================*/\n");
result = Exec(expr);
if (!HasError())
Print_Result(result);
SetValue("var", 15);
expr = "1+3-((2*10)-5) +(five*var)";
printf("\n/*=======================================================\n");
printf(" Set var = 15\n");
Print_Expr(expr);
printf("=======================================================*/\n");
result = Exec(expr);
if (!HasError())
Print_Result(result);
expr = "+1+3-((2*10)-5) +(five*var)-sqr(((1+1)*sqr(2)))";
printf("\n/*===============================================================\n");
printf(" Using sysFuncs : sqr\n");
Print_Expr(expr);
printf("===============================================================*/\n");
result = Exec(expr);
if (!HasError())
Print_Result(result);
RegisterUserFunction("Multiply_Four", Multiply_Four);
expr = "+1+3-((2*10)-5) +(five*var)-sqr(((1+1)*sqr(2)))+Multiply_Four(3)+PI*2.34+abs(-10.2)+int(-20)";
printf("\n/*===============================================================================================================\n");
printf(" Using sysConsts PI\n");
printf(" Using sysFuncs abs, int\n");
printf(" Registing Custom Function : Multiply_Four(x) \n");
Print_Expr(expr);
printf("===============================================================================================================*/\n");
result = Exec(expr);
if (!HasError())
Print_Result(result);
return 0;
}