编译原理实践:中缀到后缀表达式与正则表达式应用
需积分: 0 188 浏览量
更新于2024-08-04
收藏 202KB DOCX 举报
"编译原理实践第1次课1"
本次课程主要围绕编译原理的实践应用展开,重点涉及中缀表达式转化为后缀表达式、正则表达式的使用以及简单的文本提取任务。以下是对这些知识点的详细说明:
1. **中缀表达式转后缀表达式**:
中缀表达式是我们常见的数学表达式形式,例如9-5+2。后缀表达式也称为逆波兰表示法,其中运算符位于操作数之后,如95-2+。转换过程通常包括以下步骤:
- (1) 创建一个运算符栈。
- (2.1) 从左到右扫描中缀表达式,遇到数字时直接输出。
- (2.2) 遇到运算符时,如果当前运算符优先级高于栈顶运算符,将当前运算符压入栈;否则,将栈顶运算符弹出并输出,直到栈顶运算符优先级低于当前运算符,然后将当前运算符压入栈。
- (2.3) 遇到括号时,根据括号规则处理,即遇到左括号压入栈,遇到右括号时依次弹出栈顶运算符直到遇到左括号,然后将该左括号丢弃。
2. **正则表达式**:
正则表达式是用于匹配字符串的强大工具,本课程中涉及到以下几个应用场景:
- (1) 验证图像文件名:编写正则表达式以匹配jpg, jpeg, gif, bmp格式的文件名,支持大小写。
- (2) 匹配日期格式:如2/31/2006,可能需要考虑月份的合法性,即1-12。
- (3) 区号提取:从电话号码(如(0512)68078800-6852)中提取区号0512。
3. **文本提取**:
- (1) 提取HTML中的超链接:通过解析HTML文档,利用正则表达式匹配<a>标签来获取所有超链接。
- (2) 提取content中的标题与正文:这可能涉及到对HTML或者Markdown格式文本的解析,识别<h1>至<h6>标签为标题,而其他非标题段落则视为正文。
在正则表达式中,以下是一些常用的元字符和量词:
- \w:匹配字母、数字、下划线或汉字。
- \s:匹配任何空白字符,包括空格、制表符、换页符等。
- \d:匹配数字。
- \b:匹配单词的边界。
- ^:匹配字符串的开始。
- $:匹配字符串的结束。
此外,量词用来控制匹配次数:
- *:重复零次或更多次。
- +:重复一次或更多次。
- ?:重复零次或一次。
- {n}:重复n次。
- {n,}:重复n次或更多次。
- {n,m}:重复n到m次。
完成这些实验后,需要撰写实验报告并提交,以展示理解和应用这些概念的能力。
2022-08-08 上传
2018-02-07 上传
2015-11-25 上传
2008-09-04 上传
2009-06-22 上传
2009-04-28 上传
2012-11-08 上传
2012-12-09 上传
2012-04-03 上传
代码深渊漫步者
- 粉丝: 21
- 资源: 320
最新资源
- C++ Qt影院票务系统源码发布,代码稳定,高分毕业设计首选
- 纯CSS3实现逼真火焰手提灯动画效果
- Java编程基础课后练习答案解析
- typescript-atomizer: Atom 插件实现 TypeScript 语言与工具支持
- 51单片机项目源码分享:课程设计与毕设实践
- Qt画图程序实战:多文档与单文档示例解析
- 全屏H5圆圈缩放矩阵动画背景特效实现
- C#实现的手机触摸板服务端应用
- 数据结构与算法学习资源压缩包介绍
- stream-notifier: 简化Node.js流错误与成功通知方案
- 网页表格选择导出Excel的jQuery实例教程
- Prj19购物车系统项目压缩包解析
- 数据结构与算法学习实践指南
- Qt5实现A*寻路算法:结合C++和GUI
- terser-brunch:现代JavaScript文件压缩工具
- 掌握Power BI导出明细数据的操作指南