编译原理实践:中缀到后缀表达式与正则表达式应用

需积分: 0 3 下载量 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次。 完成这些实验后,需要撰写实验报告并提交,以展示理解和应用这些概念的能力。