编译原理这门课程第二章词法分析的知识点有哪些?

发布网友 发布时间:2022-04-20 03:50

我来回答

1个回答

热心网友 时间:2023-07-08 15:12

词法分析的本质是让计算机程序理解词法规则。例如,在我们平时用的语言里,“你”是指一个人,当“你们”出现的时候就是一个词是指多个人,这就是一种规则,但是是人能理解的规则,词法分析要用数学的表达方式让计算机理解,计算机的做法是对每个遇到的字先判断是不是“你”,如果不是,那么不符合这条规则;如果是,就要记下现在这个状态---即已经看到一个“你”字,然后判断下一个字是不是“们”,是则这条规则成立,也就是让计算机理解了这一个词,而不是单个的两个字。词法分析不是编译原理才有的,在搜索、数据挖掘等领域都用到。编译原理中的词法分析就是把源程序中的字符按顺序一个一个输入给计算机,计算机对每个字符按照所有规则进行判断,例如输入了一个“a”,要判断它是不是“and“的开头,是不是一个变量名,函数名,还是字符串等等,每个可能性都是一条规则决定的。根据规则的复杂性,可以用多种数学方法描述,比如基本的方法是状态机、正则表达式。追问这样的话,词法分析器,就是在词法分析原理的基础上,用程序语言,如C,编写出来的词法分析程序,里面就包含了相应的规则,这样的规则是根据需要自己定义的,还是要遵循一定的准则、规定去编写?

追答这个问题其实很含糊。因为理论上如果我们给C写编译器,那就该遵循标准C的准则去写这些规则,但是真正实现的时候,不可能完全一摸一样,毕竟是不同的人在写程序,想法什么的各不相同。这就是为什么不同的C编译器在编译同一个源文件时,对一些不严格的写法,有的可能不报错,有的就会报错。而且C的标准也有,ANSI C,C99,等等什么的。说到C,我想到好像是因为最初写Unix操作系统的人决定开发一种C语言,所以C语言的规则其实也是编程序的人想出来的,只是这些人的规则更加合理,才让C如此好用

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top