介绍
这篇文章主要介绍了如何使用python实现词法分析器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
具体内容如下
词法分析器状态转换图:
词法分析器总流程图:
预处理程序:
词法分析器:
词法分析器程序详细设计
详细代码实现:
# !/usr/bin/env python3.4 #=utf - 8编码 import 系统 import 字符串 keywards =, {} #,关键字部分 keywards[& # 39;假# 39;],=101 keywards[& # 39;类# 39;],=102 keywards[& # 39;最后# 39;],=103 keywards[& # 39;如果# 39;],=104 keywards[& # 39;返回# 39;],=105 keywards[& # 39;没有# 39;],=106 keywards[& # 39;继续# 39;],=107 keywards[& # 39;为# 39;],=108 keywards[& # 39;λ# 39;],=109 keywards[& # 39;尝试# 39;],=110 keywards[& # 39;真正的# 39;],=111 keywards [& # 39; def # 39;],=112 keywards[& # 39;从# 39;],=113 keywards[& # 39;外地# 39;],=114 keywards[& # 39;而# 39;],=115 keywards[& # 39;和# 39;],=116 keywards[& # 39;德尔# 39;],=117 keywards[& # 39;全球# 39;],=118 keywards[& # 39;不# 39;],=119 keywards[& # 39;与# 39;],=120 keywards[& # 39;作为# 39;],=121 keywards [& # 39; elif # 39;],=122 keywards[& # 39;如果# 39;],=123 keywards[& # 39;或# 39;],=124 keywards[& # 39;收益率# 39;],=125 keywards[& # 39;维护# 39;],=126 keywards[& # 39;其他# 39;],=127 keywards[& # 39;进口# 39;],=128 keywards[& # 39;通过# 39;],=129 keywards[& # 39;打破# 39;],=130 keywards[& # 39;除了# 39;],=131 上的keywards [& # 39; # 39;],=132 keywards[& # 39;提高# 39;],=133 #,符号 keywards [& # 39; + & # 39;],=201 keywards [& # 39; & # 39;],=202 keywards [& # 39; * & # 39;],=203 keywards [& # 39;/& # 39;],=204 keywards [& # 39;=& # 39;],=205 keywards [& # 39;: & # 39;],=206 keywards [& # 39; & lt; & # 39;],=207 keywards[& # 39;祝辞& # 39;],=208 keywards [& # 39; % & # 39;],=209 keywards [& # 39;, & # 39;],=210 keywards [& # 39; ! & # 39;],=211 keywards [& # 39; (& # 39;],=, 212 keywards [& # 39;) & # 39;],=213 keywards [& # 39; [& # 39;],=, 214 keywards [& # 39;] & # 39;]=, 215 keywards [& # 39; {& # 39;],=, 216 keywards [& # 39;} & # 39;],=217 keywards [& # 39; # & # 39;],=218 keywards [& # 39; | & # 39;],=219 keywards [& # 39; & # 39;],=220 #,变量 #,keywards [& # 39; var # 39;],=301 #,常量 #,keywards [& # 39; const # 39;],=401 #,错误 #,keywards [& # 39; const # 39;],=501 signlist =, {} #,预处理函数,将文件中的空格,换行等无关字符处理掉 def 预处理(file_name): ,试一试: fp_read =,开放才能(file_name, & # 39; " # 39;) fp_write =,开放才能(& # 39;file.tmp& # 39;,, & # 39; w # 39;) sign 才能=0 while 才能正确的: ,,read =, fp_read.readline () ,,if not 阅读: ,才能打破 ,,length =, len(阅读) ,,小姐:=1 ,,while 小姐:& lt;, length 作用;1: ,,,小姐:+=1 ,,,if sign ==, 0: ,,,,if 读[我],==,& # 39;,& # 39;: ,,,,,继续 ,,,if 读[我],==,& # 39;# & # 39;: ,,,,休息 ,,,elif 读[我],==,& # 39;,& # 39;: ,,,,if sign ==, 1: ,,,,,继续 ,,,,其他的: ,,,,,sign =1 ,,,,,fp_write.write (& # 39;, & # 39;) ,,,elif 读[我],==,& # 39;\ t # 39;: ,,,,if sign ==, 1: ,,,,,继续 ,,,,其他的: ,,,,,sign =1 ,,,,,fp_write.write (& # 39;, & # 39;) ,,,elif 读[我],==,& # 39;\ n # 39;: ,,,,if sign ==, 1: ,,,,,继续 ,,,,其他的: ,,,,,fp_write.write (& # 39;, & # 39;) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何使用python实现词法分析器