预习第一章讲义中遇到的问题

bobzhang1988 讲师 2022-10-14 07:50:20
加精

大家可以在这个帖子下描述自己预习第一章讲义中遇到的问题

...全文
1269 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
编译器助手 2022-10-17
精选
  • 打赏
  • 举报
回复

[小助手提醒] 作业提交请到这个帖:https://bbs.csdn.net/topics/608641945

dapang16888 2022-10-15
  • 打赏
  • 举报
回复
请教一个问题:讲义第22页第二行 code: c ::= ε Ⅰ i ; c 这里的;是什么意思?
编译器助手 2022-10-15
  • 举报
回复 1
@dapang16888 ;表示拼接,ε 是零元,那么 ε;c 说明 ε 是可以被消除的零元,i;c 则表示 value i 拼接上另一个 term c
编译器助手 2022-10-15
  • 打赏
  • 举报
回复

第16页开始,这种分子/分母的数学推导表达式,一直认为是阻碍编译原理传播的符号。甚至用普通的函数都能比较好读:

  • E-const: eval(Cst(i)) = i
  • E-Add: eval(Add(e1,e2)) = eval(e1)+eval(e2)
  • E-Mul: eval(Mul(e1,e2)) = eval(e1)*eval(e2)

那么,如果 eval(e1) = v1, eval(e2) = v2, 则

  • E-Add: eval(Add(e1,e2)) = eval(e1)+eval(e2) = v1+v2
  • E-Mul: eval(Mul(e1,e2)) = eval(e1)eval(e2) = v1v2

看上去并没有更简单,符号多了还不如分子分母,简化失败。

编译器助手 2022-10-18
  • 举报
回复 1
@编译器助手 张老师回复:“ 关于形式化呢 这门课不是鼓励大家沉迷于其中 而是帮助大家提高它的阅读理解能力 因为所有关于pl 专业点的书籍都是有形式化的 我们要能读懂它 才能和人交流。所以我们先给出非形式化的语意 帮助大家培养一些直觉 然后再给出形式化的定义”
weixin_40854575 2022-10-15
  • 打赏
  • 举报
回复 1

想问下, slides1第20页 "Lowering to a stack machine and interpret"的部分是想说把递归用list来循环展开了吗? 里面用了两个栈来描述? 一个存放操作符, 另外的存放操作数?

bobzhang1988 讲师 2022-10-15
  • 举报
回复 1
@weixin_40854575 - 去掉递归 后面的一个递归是尾递归,是一个循环,前面的一个递归会隐式的使用宿主语言的栈 - 操作数栈,另外一个应该叫指令序列(代码),不可变的
lxr2010 2022-10-14
  • 打赏
  • 举报
回复 3
1.stack machine只能使用一个栈吗?后面在实现支持name的stack machine的时候,可以为它单独维护一张表来存储Environment吗? 2. 把expr编译到stack machine,除了能提高程序性能外,还有没有其他的原因? 3. 作业里的解释器和编译器对性能有要求吗?如果没有要求的话,就可以用一些低效的操作了。
bobzhang1988 讲师 2022-10-15
  • 举报
回复 1
@lxr2010 1. 可以使用多个栈,可以,效率会有差别 2. 方便低级语言解释执行 3. 对编译的性能没有要求,但是对生成的代码的执行性能有一定的要求
lxr2010 2022-10-17
  • 举报
回复
@bobzhang1988 谢谢。另外请问完成作业后需要发到哪呢?
编译器助手 2022-10-17
  • 举报
回复
@lxr2010 到这里提交:https://bbs.csdn.net/topics/608641945

230

社区成员

发帖
与我相关
我的任务
社区描述
日程:https://bbs.csdn.net/topics/608593392 主页:https://bobzhang.github.io/courses/ B站: “张宏波的基础软件课程”
rescript开发语言 个人社区 广东省·深圳市
社区管理员
  • raelidea
  • MoonBit月兔
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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