Engineering a Compiler读书笔记(3)

本文是《Engineering a Compiler》读书笔记的第三部分,主要讲解了语法分析器的工作原理,包括自顶向下和自底向上的语法分析算法。文章介绍了上下文无关语法(CFG)作为描述程序设计语言语法的常用工具,详细阐述了产生式、非终结符、终结符、推导过程以及最右推导和最左推导的概念。同时,提到了语法分析树作为CFG推导过程的表示,以及二义性在语法解析中的问题。
摘要由CSDN通过智能技术生成

语法分析器


语法分析

语法分析器处理来自词法分析器的单词流,其职责是识别语法,确定被编译的程序是不是程序设计语言的语法模型中的一个有效语句。语法模型又一个形式语法G来表示,若单词串s属于G中定义的语言,则说G可以推导出s。
而语法分析器中:找到G中生成s的一个推导 的过程称为语法分析

|| 语法分析算法的两种通用类型
自顶向上的语法分析器试图通过(在各个单词上)预测下一个单词,依照语法的产生式来匹配输入流。这种算法,对于有限的语法而言高效精确
自底向上的语法分析器从底层(实际的单词序列)开始,不断积累上下文信息,直至出现显然的推导为止。

|| 语法的表示:
正则表达式往往不具有完整描述语法的能力(描述较短的词使用),我们通常用上下文无关语法(CFG)的形式来表示程序设计语言的语法

上下文无关语法

|| CFG中的概念:

  • G是一组规则,描述了语句是如何形成的。可以从G导出的语句集成为G定义的语言,记作L(G)
  • CFG定义的所有语言的集合,叫做上下文无关语言的集合
  • 非终结符和终结符:CFG中语法变量称为非终结符(用于向语言添加结构和抽象)每一个单词都是一个终结符
    在这里插入图片描述这里的SheepNoise为语法变量
  • 产生式:CFG中的每个规则都都称为一个产生式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值