输入一个加减乘数包括括号小数点的表达式的,如何判断其合法性。

b985117013 2013-09-14 04:33:40
RT。。本人正在做一计算器,但对其合法性判断一直没思路,求指点。
...全文
149 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuchuan53 2013-09-15
  • 打赏
  • 举报
回复
按楼主所述,输入的是一个表达式(字符串); 个人思路: 第一步就是做合法性的检查,先看加减乘除以及括号、小数点是否正确匹配。(+-*/不能相邻且不能出现在表达式最前或最后;不能出现除了数字、加减乘除、小数点、括号以外的其他字符;括号必须成对出现(这个估计是最难检查的,不能单纯的看左右半括号的个数);小数点前后都必须是数字;等等) 第二步就是解析表达式,提取出整数、浮点数,并且解析运算的先后顺序(这个也很难)。 第三步就是运算并判断数据是否超出。(类型转换、数据越界)。 //说了好多废话,楼主关注的是第一步。
u011730237 2013-09-14
  • 打赏
  • 举报
回复
简易的计算器就对数字进行判断了可以了。
mLee79 2013-09-14
  • 打赏
  • 举报
回复
有限状态机不能识别表达式, 下推自动机才可以 ..
max_min_ 2013-09-14
  • 打赏
  • 举报
回复
符号 匹配 栈
taodm 2013-09-14
  • 打赏
  • 举报
回复
你能算出结果的表达式就是正确的表达式啊 这么简单的问题啊。
一根烂笔头 2013-09-14
  • 打赏
  • 举报
回复
编译原理和有限自动机相关知识
WingForce 2013-09-14
  • 打赏
  • 举报
回复
有限状态机或它的衍生物
  • 打赏
  • 举报
回复
1.词法检查:判断一下有没有输错关键字 2.语法检查:括号有没有配对等 3.语意检查:整形数与浮点数运算,是不是先要类型转换

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧