基础介绍:
任务:从字符流到记号流
字符流:我们程序的源代码
记号流:把一些有意义的一段字符流识别为一些记号,比如if、括号、变量名字等等。
token中第一个是枚举变量,赋值为IF、ELSE等,但变量的名字是不同的,因此我们需要lexeme来进一步说明变量的字符内容。
手工编码实现:
比较的实现转移图:
伪代码实现:
标识符的转移图:
关键字是标识符的一部分,识别出关键字之后可以通过哈希算法来看看是否是关键字,哈希表不是关键, 表才是关键,哈希表只是为了加快查找速度。
词法分析器的生成器:
程序员写声明规范,然后用生成器生成。
有限状态自动机: