目录
3.1 基本概念
3.1.1 语法分析
①程序设计语言的语法通常是用上下文无关文法的文法规则进行描述的
②与正则表达式最大的区别:上下文无关文法能够表达递归
③语法分析的任务:根据扫描程序产生的记号来确定程序的语法结构
④语法分析阶段的输出:分析树或者语法树
3.1.2 文法
定义:文法是描述语言的语法结构的形式规则(G(S))
3.2 上下文无关文法
①终结符:产生式中没有出现在左侧的符号
②非终结符:通常出现在产生式左侧,在语法推导中总是被替换
③开始符号:一般是文法规则中第一条产生式左侧的非终结符
3.2.1 推导
句型:如果开始符号S可经过任意步推出α,则称α是一个句型。
句子:仅含终结符的句型
语言:文法G产生的句子的全体
补充:可以自己找文法例子练习写出终结符、非终结符、句子,加深理解
3.2.2 递归
3.3 分析树与推导
①一个串的推导过程可能并不是唯一的,有最左推导、最右推导和既非最左推导又非最右的推导
②最左推导:是指每一步中最左的那个非终结符都要被替换的推导
③最右推导:是指每一步中最右的那个非终结符都要被替换的推导
④用树形结构表示推导过程就可以得到串的分析树:
a.叶子节点:终结符
b.其他节点:非终结符
c.根:开始符号
3.4 语法树
语法树
a.叶子节点是:参与运算的数
b.其他节点:表示运算
!!!优先级仍然保留在树形结构中
3.5 二义性文法
定义:该文法允许一个串对应多个分析树,存在串对应着两个最左推导或两个最右推导
判断该文法是否是二义性文法:
找到一个串,可以写出两种分析树
3.6 乔姆斯基语言分类
·3型语言(正则文法)
·2型语言(上下文无关文法)
·1型语言(上下文有关文法)
·0型语言(短语文法,图灵机)
包含关系,比如1型文法不能表示的语言,2型文法也不能表示。