上编译原理课时,老师说可以用同学们可以使用不同的语言写一个词法分析器,于是首先我想到的是python。本来的思路是写一个自动机,用一个指针来表示当前读取的字符,另一个指针往后读,通过不同读取字符的状态用自动机来确定是哪种类别。后面由于python指针好像只要那个seek(),tell()函数好像不是很好操作,于是就想到另一种方法就是使用正则来匹配我们的文件内容,找出我们需要识别的词,同时输出单词的类别!(仅仅提供参考,个人也是个菜鸡!)
题目就是如下:
需要识别的词
- 关键字:if、int、for、while、do、return、break、continue;单词种别码为1。
- 标识符;单词种别码为2。
- 常数为无符号整形数;单词种别码为3。
- 运算符包括:+、-、*、/、**、=、:=、<=、<>、<、>=、>单词种别码为4。
- 分隔符包括:,、; 单词种别码为5
代码如下:
import re def cal_character(longtext): string_list=re.findall(r'[_a-zA-Z][_