语法树的求解

bilsha 2006-11-24 09:10:38
1.根据输入的表达式建立语法树
2.对语法树求解,得出表达式的值
...全文
438 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2006-11-28
  • 打赏
  • 举报
回复
2叉树。不是3言2语能说清楚的,去找数据结构的书吧。
cfy_allan_zhang 2006-11-28
  • 打赏
  • 举报
回复
建议看一下便医院里的语法分析。
这里需要一个操作数栈,操作符栈,操作符优先顺序表,然后扫描表达式,将遇到的操作数和操作符分别压入各自的栈中,如果遇到一个操作符比当前栈中的操作符优先级要低,那么栈中的操作数就可以和栈中的操作符归约,这是可以产生一个子表达式的子树,并将其压入操作数栈,这个子表达式的值也随之算出。重复这个动作,到最后表达式语法树就建立起来了,值也算出来了。
可能表达不是很清楚,建议还是看一下编译的相关章节为妥,呵呵。
shunan 2006-11-28
  • 打赏
  • 举报
回复
按照表达式的计算步骤,一个一个的合并节点,比如以4*8+5^2-24/5为例:输入时,先算4*8,那先建立一个节点,保留指针,*为父节点,4,8为子节点,当他成为+号的子节点时,只需指针指向他就行了。5^2也形成一个节点,然后+号也形成一个节点,以此类推,应该不难实现,就是把我们人的计算过程转化为建树的过程而已
taodm 2006-11-27
  • 打赏
  • 举报
回复
哪种语法?
bilsha 2006-11-27
  • 打赏
  • 举报
回复
中序或后序,如输入4*8+5^2-24/5构造语法树,并计算其值

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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