编译原理的指导性思想
编译原理
编译这门课给我们思想上的指导是非常的值得借鉴的:
相关内容已经上传邮箱
1、编译实际上就是一种对模式的识别,利用编译的原理我们能够解决任何的关于识别的问题。任何一种模式都肯定由一种明确的文法进行规定,那么我们就能够根据这种文法进行模式的识别,这种识别就是一种基于语法驱动的识别,值得注意的是:如果我们找到一种用于定义某种模式的好的文法,就能够在语法驱动下,一边进行模式识别,一边对这种模式进行“某种语义”上的翻译,如:有这样的一个串:
(a ,(b+c), d,f,(s ,(c*d))) , 求该串的括号的深度
如果我们能够找到一种描述这样的串的一种通用的文法的话,我们就能够进行语法分析,从而能够判定这个串是否符合指定的文法,又由于文法中中的每行语句都是一个完整的语义单元,那么就能够在语法分析进行到“一个语义单元内部或者一个语义单元分析完毕”的时候执行一种语义动作,这样的话,就能够完成括号深度的识别了
2、 显然,如果每个文法语句都能够成为一个完整的语义单元,这样的文法显然更加有利于帮助我们进行语法驱动下的语义分析
3、从编译的本质上看:实际上它涉及到了两大块内容那就是——模式匹配和格式转换
所以说,利用编译的思想来解决模式匹配和格式转换的问题是非常的适合;但是在实际中有非常多的模式匹配和格式转换的问题,我们并不用编译的方法解决,因为这些问题足够简单,利用一些简单的算法就能够顺利解决,用编译无异于小题大做;但是如果模式匹配和格式转换的问题的逻辑复杂达到一定的程度,那么你就难以控制了,这时候利用编译的方法就会非常的清晰
4、最后要强调的是,我们如何才能回答下面这个问题
实际中,我们如何才能够断定一个问题是否适合利用编译的方法来解决呢?
张莉老师说过一句话:
“只要是那种有明显的规则的问题,不论它表面上是否是模式识别或者格式转换问题,它本质上都是可以用编译的思想来解决的”,
我想张老师的深刻的见解是非常有指导性意见的
5、实际上,词法分析也是一种编译过程,因为也是一种模式识别过程;
一个正确的单词,必然有它所遵循的语法,也应该有它的语义(比如一个数值单词的识别,只是这种语义比较弱)
6、上下文无关文法与下推自动机具有等价性;
正规文法与有限自动机具有等价性
7、所以,词法分析我们就以有限自动机作为识别的主要驱动,语法分析我们就用下推自动机作为主要驱动
8、不论是以何种自动机作为驱动,我们都能够在合适的地方按照我们想要达到的目的加入语义操作动作
9、这样的话,当给定我们任何一个模式识别问题,我们首先找到描述它的文法,判定这个文法的类型,进行适当的转化之后,就能够进行识别工作了

浙公网安备 33010602011771号