编译原理-专题1 词法分析程序设计

本文档介绍了编译原理实验专题1——词法分析程序设计,目标是理解和实现CP语言的词法分析。内容包括实验目的、实验思路和运行结果。CP语言的关键字、标识符、整数、运算符和分界符等要素被详细阐述,并指出词法分析阶段应忽略空白符。实验思路中提到了预处理和词法分析函数的实现方法。
摘要由CSDN通过智能技术生成

实验专题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','&#
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值