python - 使用 PLY 读取 YACC 文件 (file.y)
问题描述
PLY 有一个定义标记、词法、语法等的复杂系统,但我想使用已经存在的 Ruby文件创建一个解析树- parse.y
.
有没有办法parse.y
在 PLY 中读取文件并为 Ruby 程序创建解析树?
解决方案
简短的回答:没有。
该文件包含 13,479 行;实际语法 769 行,包括 46 个中间规则操作 (MRA),因此有近 13000 行 C 代码必须用 Python 重写才能重现该功能。该功能包括词法分析器,它是大约一千行 C 代码加上支持功能。(如果您认为 Ply 定义词法分析的方法很复杂,请等到您尝试重现用 C 编写的手写分析器。:-))
我使用野牛从该文件中提取了语法(尽管我必须稍微编辑文件以使野牛不会窒息它;我不知道 Makefile 在该源存储库中的位置,但我认为它包含预处理从 )中制作有效的野牛语法文件的步骤parse.y
。所以你也可以这样做,并将结果用作 Ply 语法的基础。您可能能够自动构建语法,但我的猜测是您仍然需要手动完成大量工作,并且如果您至少没有编写解析器的经验,那么工作就不会进行简单。(不过,它可能具有教育意义。)
祝你的项目好运。
推荐阅读
- oauth-2.0 - Azure AD 访问令牌中的 scp 声明
- image - ImageCropper.forms 出现错误
- css - 如何从网页复制 CSS 内容?
- java - 我的 libgdx 游戏的某些音频无法在 android 中加载,但可以在桌面上加载
- z-index - 获取 Sybase 中表的索引列表
- python - Python - 搜索中不包含第一个单词
- python-3.x - Python烧瓶蓝图ImportError:无法导入名称'bp'
- apt - MobaXterm apt-get 永久安装包
- express - 将 Express 路由器与 Next.js 一起使用
- kubernetes - 如何从 gitlab-runner 执行滚动更新