首页 > 解决方案 > 使用 PLY 读取 YACC 文件 (file.y)

问题描述

PLY 有一个定义标记、词法、语法等的复杂系统,但我想使用已经存在的 Ruby文件创建一个解析树- parse.y.

有没有办法parse.y在 PLY 中读取文件并为 Ruby 程序创建解析树?

标签: pythoncompilationyaccply

解决方案


简短的回答:没有。

该文件包含 13,479 行;实际语法 769 行,包括 46 个中间规则操作 (MRA),因此有近 13000 行 C 代码必须用 Python 重写才能重现该功能。该功能包括词法分析器,它是大约一千行 C 代码加上支持功能。(如果您认为 Ply 定义词法分析的方法很复杂,请等到您尝试重现用 C 编写的手写分析器。:-))

我使用野牛从该文件中提取了语法(尽管我必须稍微编辑文件以使野牛不会窒息它;我不知道 Makefile 在该源存储库中的位置,但我认为它包含预处理从 )中制作有效的野牛语法文件的步骤parse.y。所以你也可以这样做,并将结果用作 Ply 语法的基础。您可能能够自动构建语法,但我的猜测是您仍然需要手动完成大量工作,并且如果您至少没有编写解析器的经验,那么工作就不会进行简单。(不过,它可能具有教育意义。)

祝你的项目好运。


推荐阅读