本文以课堂笔记为主,可能略有删减、补充。
理念:
- 自上而下,逐步求精——文法
- 有限状态自动机(描述状态的模型)——由图灵机发展而来
计算机之父
- 理论:图灵
- 实际:冯诺依曼
编译做的事情有两件:
- 分析——判断程序是否正确,具体做法是将程序化为字符流
字符流
- 词法:字符–>单词 判断单词是否合法
- 句法:单词–>句子 判断句子是否合法
程序正确
- 合法——符合语法规则
- 语义正确性判断(做该做的事情,并且不做不该做的事情)——做正确的事情
- 综合部分——把正确的源程序化为优化的目标代码程序
连接1、2的桥梁是语法树与分析树(parse tree)
parse tree = syntax tree + syntax construction rule(语法构造规则)
语言组成的最小成分是字符,字符可以组成字符表
字符–>字符串(单词) 字符串是字符序列,不是字符集合,是有序序列
空串表示为ε
Σ是字符全集
Σ∗=Σ0∪Σ1∪……∪Σn∪……
Σ+=Σ∗−Σ0 (所有有意义的单词)
所有的句子: (Σ∗)∗
推导、规约是逆过程
对于计算机来说,推导有最左推导、最右推导,而人的话随便怎么推导都无所谓,因此计算机的推导也称为惰性推导
同样,规约也是有最左规约、最右规约
最左规约、最右推导是逆过程
文法
当时没有怎么听得懂,所以没有记全,因此在百度上搜了两篇文章
如有侵犯,立马删除
补充
嵌入式文法
A->aBc,A是非终结符,a是终结符序列,B是非终结符,c也是终结符序列
本节课一个很重要的内容是由语言构造文法,由于一次没有讲完所有方法,因此另开一文