首页 > 其他分享 >编译原理:代替LR分析法的MP分析法

编译原理:代替LR分析法的MP分析法

时间:2024-06-03 18:29:13浏览次数:26  
标签:词法 文法 语法分析 分析法 LR MP

LR分析法由Knuth先生于1965年开发。LR分析法存在一个问题:当文法产生式变多,分析表变大之后,占用很多内存。为了接近自然语言编程,需要大量的文法产生式,有可能分析表过大,内存里放不下。

MP分析法,是multi-pass(多遍分析法)。

词法分析和语法分析仍然是分开的,语法分析按照“先乘除后加减”,分成多遍,即MP。

词法分析返回的不是经典《编译原理》中所说的符号串,而是简单的树。所以,词法分析也可以看作是一遍,和语法分析的“多遍”没有本质区别。
在这里插入图片描述
文法要怎么写?

level1:词法分析
level2:括号配对
level3:先乘除,E->E*E
level4:后加减,E->E+E

其中,括号配对用数数的方式完成,这需要编写专门的函数。而文法产生式,可以看作是格式化的函数。

编写函数操作树,完成分析。

标签:词法,文法,语法分析,分析法,LR,MP
From: https://blog.csdn.net/proorck2019/article/details/139421694

相关文章

  • LAMP目录介绍
    Apache2、MySQL8和PHP8的常见目录结构:一、Apache2:/etc/apache2/:主要配置文件目录apache2.conf:Apache主配置文件sites-available/:可用的虚拟主机配置文件目录sites-enabled/:已启用的虚拟主机配置文件目录mods-available/:可用的Apache模块目录mods-en......
  • 帮助理解 JdbcTemplate 的使用
    什么是 JdbcTemplate?JdbcTemplate 是Spring框架中的一个类,用于简化与数据库的交互。它帮助我们处理很多繁琐的任务,例如打开和关闭数据库连接、处理SQL语句、处理异常等。使用 JdbcTemplate,你可以更轻松地执行数据库操作,比如查询、插入、更新和删除数据。1.配置 JdbcTe......
  • Python数据分析【Numpy系列】np.linspace()用法详解
    np.linspace()是NumPy库中一个非常有用的函数,它用于在指定的区间内生成等间距的样本值。这个函数非常适合在数值分析、数据可视化和信号处理等领域生成数据点。函数语法numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)......
  • 利用python批量重命名(将「歌手名-歌名.mp3」更为「歌名-歌手名.mp3」)
    效果原始:修改后:python代码importosdefrename_files(directory):forfilenameinos.listdir(directory):if"-"infilenameandfilename.endswith(".mp3"):#分割文件名为歌手名和歌曲名parts=filename.rsplit("-......
  • 明明路径都对,为什么会出现[Error 2] No such file or directory: ‘XXXXX’ 获取当前
    明明路径都对,为什么会出现[Error2]Nosuchfileordirectory:‘XXXXX’?——解决清单明明路径都对,为什么会出现[Error2]Nosuchfileordirectory:‘XXXXX’?python工程加载一个文件时出现了错误。错误消息"Nosuchfileordirectory"通常表示文件或目录不存在。......
  • 使用Prompt,轻松实现你的第一个全栈项目
    前言还有程序员没有应用过大模型技术吗?是工具也可以!如果你还未使用过大模型技术,那么我劝你尽早行动,它会成为你开发的一大神器。如果你对大模型感兴趣,同时想使用大模型技术来开发产品,我接下来这个实战案例相信可以帮助到你。如今,大模型的崛起使得编程变得前所未有的容易,哪......
  • 政安晨【零基础玩转各类开源AI项目】:解析开源项目:Champ 利用三维参数指导制作可控且一
    目录论文题目Champ:利用三维参数指导制作可控且一致的人体图像动画安装创建conda环境:使用pip安装软件包推理1. 下载预训练模型2. 准备准备引导动作数据运行推理训练模型准备数据集运行训练脚本数据集政安晨的个人主页:政安晨欢迎 ......
  • 模式匹配---kmp算法
    模式匹配--Kmp算法暴力匹配暴力匹配,既普通模式匹配,主串一个一个地与子串进行比对,一旦匹配失败就跳回主串原指针的下一个重新回溯,子串跳回第一个,重新开始匹配。主串BABCBFDAB下标012345678子串BCB主串原指针指向下标为......
  • Unity ScrollRect中,拖拽移动Item的顺序
    *UnityScrollRect中,拖拽移动Item的顺序*目标需求制作方法完整代码最终效果备注unitypackage目标需求Unity在制作下拉菜单时,用户可通过拖拽Item,替换当前Item的位置。本教程使用UGUI制作方法创建脚本ScrollRectManager,用于管理整个ScrollRect,我是将脚本Scro......
  • Linux ffmpeg 离线安装
    linux版本下载地址:http://www.ffmpeg.org/releases/4.3.1 下载地址:http://ffmpeg.org/releases/ffmpeg-4.3.1.tar.gz 配套组件yasm下载http://www.tortall.net/projects/yasm/releases/http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz yasm安......