实验专题1、词法分析程序设计
s
1. 实验目的
- 设计、编制并调试一个简单语言CP(Compiler Principle)的词法分析程序,加深对词法分析原理的理解。
- CP语言的词法
(1) 关键词: begin end if then else for while do and or not
注意:所有关键词都是小写的。
(2) 标识符ID,与标准C语言一致,即:以下划线或字母开头的字母数字下划线组成的符号串。
(3)无符号整数NUM:数字串
(4)运算符和分界符: +、-、*、/、>、<、=、:=、>=、<=、<>、++、–、(、)、; 、 #
注意::=表示赋值运算符、#表示注释开始的部分,;表示语句结束,<>表示不等关系
(5) 空白符包括空格、制表符和换行符,用于分割ID、NUM、运算符、分界符和关键词,词法分析阶段要忽略空白符。 - CP语言是大小写敏感语言;
字母为a-zA-Z,数字为0-9;
每行代码中从#开始的部分为注释部分(参考python语法)
**
2. 实验思路
预处理函数,对我们输入的程序进行去注释、多余空格等规范化操作。去掉注释部分通过正则表达式将#后字符替换成 ’ ’ 。
# 去掉注释,获取文件
def filterResource(new_file,file):
f2 = open(new_file,'w+')
txt = ''.join(open(file,'r').readlines())
data_txt = re.sub(r'\#.*', '', txt)
for line in data_txt.split('\n'):
line = line.strip()
line = line.replace('\\t','&#