撰寫一程式能由stdin讀入中置式數學運算式, 並計算其值, 如輸入:
1+2*log(3)
應印出答案 3.197225. 當輸入為EOF時才停止. 這個程式應能處理
  1. ( : 左括弧
  2. log, exp, sin, cos, tan, asin, acos, atan, sqrt, cbrt: 自然對數, 自然指數, 三角函數, 平方根, 立方根等函數
  3. +, - : 正負號右結合
  4. ^ : 次方右結合
  5. *, /, % : 乘,除,餘數左結合
  6. +, - : 加,減左結合
  7. ) : 右括弧
並能判斷該運算式是否合法, 且有無分母為0的情形, 如若合法則印出其值, 否則印出 "Illegal expression" 或 "divide by 0" 之訊息. 以下是一些範例運算式(含錯誤的), 請參考
1.2+2.3
1.2-2.3
1.2+2.3*3.1
1.2-2.3/3.1
1.2+2.3*3.1^2.1
cos(-1.2) + sin(-1.1) + tan(-0.8)
asin(1) + atan(0.8)+acos(0.7)
log( sqrt(1.43E12) + 1 )
cbrt(8)
2.2^3.3^4.4
-1+-2.e3
-1+-2*2
2.1 % -1.1
(3.141592654/2)
cbrt(8) ^ exp(5)
2*3++3
3/0
2+3*1)
(1.732%3
att(1)
2*3**3
2*3 3
exp 3
2 +
--2
以上各運算式之結果應為
3.500000
-1.100000
8.330000
0.458065
25.950695
-1.558488
3.040936
13.994349
2.000000
293233665151650828542698710110467239986847444869883448099648569344.000000
-2001.000000
-5.000000
1.000000
1.570796
475130205919086414079775381526444378706411520.000000
9.000000
divide by 0
Illegal expression
Illegal expression
Illegal expression
Illegal expression
Illegal expression
Illegal expression
Illegal expression
2.000000