编译原理总结
学了一学期的编译原理,一开始上课的时候,感觉老师嘴里的概念明明说的那么顺溜,可是到自己这就卡壳了,让我想起了一个梗:要考试了,在复习的时候,打开书,马冬梅,恩记住了,合上书,什么冬梅?打开书,马冬梅,合上书,马什么梅?归结起来就是书看的少。复习的时候课件认认真真的看了两遍,现在来梳理一下这门课。
上边这张图就是编译原理这门课所要学的内容。首先在学习语法分析之前,需要一些储备知识。比如字符、字符串及其运算,语言的概念。描述方法,文法及其有关概念,文法到语言及语言到文法之间的转换,句子句型的定义,文法的类型及区别,语法树的定义和构造,语法的二义性,如何根据判断二义性及消除二义性等。接下来讨论词法分析,词法分析,说白了就是识别并分类单词。所以涉及到如何识别单词和单词的分类和形式化描述,此时引入正规表达式和正规文法,通过正规式与正规文法的相互转化引入有限自动机(DFA和NFA)和状态图来识别单词。到这里就该进行语法分析了,而语法分析又分为自上而下分析的推导和自下而上的规约,自上而下分析需要从开始符起根据产生式一步步推导,此时会因为文法的左递归和回溯带来导致出现死循环。所以想办法消除左递归和回溯,从而引入了LL(1)文法,LL(1)文法又牵涉到first集和follow集,而针对LL(1)文法的分析程序的设计又分为两种方法,设计-递归下降分析程序实现语法分析和设计-预测分析程实现语法分析,所以LL(1)文法的判断很重要。而自下而上分析涉及到了短语、最左素短语、句柄、规范规约等一些重要概念,自下而上的分析有包括算符优先分析和LR分析法。到这里语法分析差不多就结束了。语义分析涉及到属性文法和语法制导翻译。而中间代码产生涉及到了中间代码的形式和翻译。后边的还没学到。
以上只是我自己对于这门课相关内容的理解,如有不合适的地方,希望大家指正。
还没有评论,来说两句吧...