如何使用python实现词法分析器

  介绍

这篇文章主要介绍了如何使用python实现词法分析器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

具体内容如下

词法分析器状态转换图:

如何使用python实现词法分析器

词法分析器总流程图:

如何使用python实现词法分析器

预处理程序:

如何使用python实现词法分析器

词法分析器:

如何使用python实现词法分析器

词法分析器程序详细设计

如何使用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实现词法分析器