斯坦福 CS-143编译原理 First集 课堂笔记

这篇博客详细介绍了编译原理中的First集概念,包括First集的定义、计算方法以及其在构建LL(1)解析表中的作用。博主通过记录斯坦福大学CS-143课程的内容,解释了First集的两种情况,并提供了算法示意。文章还提到了First集在消除解析冲突中的应用,帮助读者深入理解编译器构造。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

First集

  • 由于最近在学习编译原理,对课堂所讲的first集相关部分不太理解,便在网上找资源进行学习,光看还是不够踏实,自己亲自打下来,真正理解,下面的内容大部分还是来课堂老师原话,但是老师讲得很好,确实很帮助理解学习,少部分是自己的理解。想借此上传帮助需要学习的同学,如有错误欢迎指出,一起交流学习呀!下面就是Typora笔记

  • 视频地址:b站 斯坦福 CS143 编译原理 中文字幕 点击这~

  • 在开始介绍First集之前先来讲说一点关于如何构建解析表的事情,或者说构建LL(1)解析表需要哪些条件

    • 所以在LL(1)构建解析表的时候我们需要知道什么呢,分为一下两种情况(见下图截图):
    • 在这里插入图片描述
    • 上面图片来源于课程视频截图,下面记录一些课程老师所描述的情况以及个人的理解
      • 在给定非终结符A,产生式 A → α A\rightarrow\alpha Aα,给定输入符号t;
      • 考虑我们什么时候使用产生式 A → α A\rightarrow\alpha Aα,即使用产生式右边的 α \alpha α进行对非终结符A的替换,这也就是说,在解析表上的 ( A , t ) (A,t) (A,t)这一单元格的内容是 α \alpha α,即 T [ A , t ] = α T[A,t]=\alpha T[A,t]=α;
        • case 1:
          • 如果 α \alpha α可以推导出t在第一个位置,也就是说, α \alpha α在t之前有0到n次的推导,最终会使得t出现在第一个位置,则我们可以称 t ∈ F i r s t ( α ) t\in First(\alpha) tFirst(α),即t是 α \alpha αFirst集中的元素。
          • 即如果存在 α ⟶ ∗ t β \alpha \stackrel{*}{\longrightarrow}t\beta αtβ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值