c语言 计算器 思路,可以实现这样的编写计算器的思路吗。新手谢过。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#define Reduce 0

#define Shift 1

#define Error 2

#define Accept 3

/* {"$eof","$start","expr","+","-","*","/","(",")"} */

typedef struct tr_s{int action,n;}tr_t;

typedef struct rule_s{int head,len;double(*callback)(double*);}rule_t;

typedef struct lex_s{int k;double v;}lex_t;

static tr_t CalcStates[32][9]={

{ {2,0}, {2,0}, {1,1}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {3,0}, {2,0}, {2,0}, {1,5}, {1,6}, {1,7}, {1,8}, {2,0}, {2,0} },

{ {2,0}, {2,0}, {1,9}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {2,0}, {2,0}, {1,10}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {2,0}, {2,0}, {1,11}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {2,0}, {2,0}, {1,15}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {2,0}, {2,0}, {1,16}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {2,0}, {2,0}, {1,17}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {2,0}, {2,0}, {1,18}, {1,2}, {1,3}, {2,0}, {2,0}, {1,4}, {2,0} },

{ {0,6}, {2,0}, {2,0}, {0,6}, {0,6}, {0,6}, {0,6}, {2,0}, {2,0} },

{ {0,7}, {2,0}, {2,0}, {0,7}, {0,7}, {0,7}, {0,7}, {2,0}, {2,0} },

{ {2,0}, {2,0}, {2,0}, {1,19}, {1,20}, {1,21}, {1,22}, {2,0}, {1,23} },

{ {2,0}, {2,0}, {1,24}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {2,0}, {2,0}, {1,25}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {2,0}, {2,0}, {1,26}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {0,2}, {2,0}, {2,0}, {0,2}, {0,2}, {1,7}, {1,8}, {2,0}, {2,0} },

{ {0,3}, {2,0}, {2,0}, {0,3}, {0,3}, {1,7}, {1,8}, {2,0}, {2,0} },

{ {0,4}, {2,0}, {2,0}, {0,4}, {0,4}, {0,4}, {0,4}, {2,0}, {2,0} },

{ {0,5}, {2,0}, {2,0}, {0,5}, {0,5}, {0,5}, {0,5}, {2,0}, {2,0} },

{ {2,0}, {2,0}, {1,27}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {2,0}, {2,0}, {1,28}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {2,0}, {2,0}, {1,29}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {2,0}, {2,0}, {1,30}, {1,12}, {1,13}, {2,0}, {2,0}, {1,14}, {2,0} },

{ {0,1}, {2,0}, {2,0}, {0,1}, {0,1}, {0,1}, {0,1}, {2,0}, {2,0} },

{ {2,0}, {2,0}, {2,0}, {0,6}, {0,6}, {0,6}, {0,6}, {2,0}, {0,6} },

{ {2,0}, {2,0}, {2,0}, {0,7}, {0,7}, {0,7}, {0,7}, {2,0}, {0,7} },

{ {2,0}, {2,0}, {2,0}, {1,19}, {1,20}, {1,21}, {1,22}, {2,0}, {1,31} },

{ {2,0}, {2,0}, {2,0}, {0,2}, {0,2}, {1,21}, {1,22}, {2,0}, {0,2} },

{ {2,0}, {2,0}, {2,0}, {0,3}, {0,3}, {1,21}, {1,22}, {2,0}, {0,3} },

{ {2,0}, {2,0}, {2,0}, {0,4}, {0,4}, {0,4}, {0,4}, {2,0}, {0,4} },

{ {2,0}, {2,0}, {2,0}, {0,5}, {0,5}, {0,5}, {0,5}, {2,0}, {0,5} },

{ {2,0}, {2,0}, {2,0}, {0,1}, {0,1}, {0,1}, {0,1}, {2,0}, {0,1} },

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值