词法分析器

基础介绍:

任务:从字符流到记号流
字符流:我们程序的源代码
记号流:把一些有意义的一段字符流识别为一些记号,比如if、括号、变量名字等等。

词法分析器_第1张图片

token中第一个是枚举变量,赋值为IF、ELSE等,但变量的名字是不同的,因此我们需要lexeme来进一步说明变量的字符内容。

手工编码实现:

词法分析器_第2张图片

比较的实现转移图:

词法分析器_第3张图片

伪代码实现:

词法分析器_第4张图片

标识符的转移图:

词法分析器_第5张图片

关键字是标识符的一部分,识别出关键字之后可以通过哈希算法来看看是否是关键字,哈希表不是关键, 表才是关键,哈希表只是为了加快查找速度。

词法分析器_第6张图片

词法分析器的生成器:

程序员写声明规范,然后用生成器生成。


词法分析器_第7张图片

有限状态自动机:

词法分析器_第8张图片
词法分析器_第9张图片

你可能感兴趣的:(词法分析器)