编译原理词法分析——python
1.词法分析
词法分析是计算机科学中将字符序列转换为单词序列的过程,进行词法分析的程序或者函数叫作词法分析器,也叫扫描器。在本程序中,我通过python实现了一个简单的词法分析器,该程序并不包含完整的词法分析,因为给的例子并不是很难,所以就没有添加很多,但是道理就是这样的道理。
2.需要分析的代码段
/*example*/
b=1\
00
101:a=2*(1+3)
IF(b>10) THEN
a=1
ELSE IF(b>=5) THEN
a=2
ELSE
GOTO 101
3.函数
#coding=utf-8
import sys
import string
key_word = ['IF','THEN','ELSE','GOTO'] #定义关键词
operator = ['=','+','>=','*','>'] #定义运算符
delimiters = [':','(',')'] #定义界符
#预处理函数,对例程进行预处理,去掉多余的空格、注释
def preprocess(file_name):
try: #try except 使程序不会因为异常而中断
fp_read = open(file_name,'r') #打开需要分析的文件
fp_write = open('preprocess.txt','w')
sign = 0 #每当上一个字符为空格时,将sign变为1,通过这样来保证每个需要空格的地方不会有多余的空格
while True:
read = fp_read.readline() #循环读取每一行字符
if not read:
break #如果没有读取到任何东西直接结束循环
length = len(read) #获得当前字符串的长度
i = -1
while i < length - 1: #循环读取每个字符
i+=1
if read[i] == ' ':
if sign == 1: #读取到空格ÿ