编译原理总结

1、字母表,\sum是一个有穷符号集合。符号:字母、数字、标点符号

字母表上的运算,字母表的乘积:\sum 1 \sum 2也是集合,即连接在一起。

字母表的n次幂:n次连接,0次幂:即只有一个空串的集合:{\varepsilon}

字母表的正闭包:长度为1的字符串集合 并上 长度为2的字符串集合 并上 长度为3的字符串集合....

字母表的克林闭包,在正闭包的基础上添加一个空串

闭包中的一个元素称为串,串s的长度,通常记作|s|,指s中的符号的个数,空串的长度为0

串上的运算:

连接:

x是串,y是串,xy就是把y加到x的后面,空串是连接运算的单位元

x=yz ,则y是前缀,z是后缀。

幂:

串s的n次幂,即将n个s进行连接,s的0次幂即将0个s连接,所以是空串。

2、文法形式化定义

G = (VT, VN, P, S)

VT终结符集合,终结符是文法所定义的语言的基本符号,有时候也叫token。

VN非终结符集合,非终结符,是用来表示语法成分的符号,也称为语法变量。

P产生式集合,描述了终结符和非终结符组合成串的方法。

\alpha -> \beta

\alpha \varepsilon (V_{T} \bigcup V_{N})^{+},a至少包含一个非终结符符号

\beta属于克林闭包,可以是空串

S属于非终结符,开始符号是该文法中最大的语法成分。

在不引起歧义的情况下,可以只写产生式

产生式的简写:

 如何判断一个符号串是否符合该文法?推导和规约

文法分类 

 正则文法生成的语言叫正则语言。

上下文无关文法(CFG)的分析树:

词法分析

 从正则表达式到有穷自动机,正则表达式采用的是一种符号序列的形式,可以很直观的看出单词的组成,但是构造词法分析器时构造的是DFA。有时候需要从正则表达式转化为有穷自动机,现将正则表达式转化为NFA,然后再转化为DFA。

 根据RE构造NFA

从NFA到DFA

 识别单词的DFA

 识别出标识符,要在关键字表中进行查询,如果存在,则为关键字,否则就是标识符。

语法分析

根据给定的文法,识别输入句子中的各类短语,并构造它的分析树。

顶部根节点--底部叶节点

 

 任意一个分析树对应的最左推导和最右推导是唯一的。

如果过一个产生式具有多个相同前缀的候选式则需要逐个尝试A->aB|aC|aD,如果尝试的过程出现错误,则需要回溯,所递归下降分析是不确定的自顶向下分析方法,

 

 LL(1)文法

 

 

 递归的预测分析法:

 

 

底部叶节点--顶部的根节点

 

 

LR(0)分析法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值