我有一个描述某种语言的 yacc 文件,我正在使用 IMP(eclipse 项目)为其开发一个编辑器。我使用 LPG 作为解析器生成器,所以我需要从我的 yacc 文件中提取 BNF 规则。我收到的 yacc 文件包含规则和操作。但是,我只想提取要在 LPG 中使用的语法描述规则。一种方法是手动提取规则并将其重新格式化为 BNF 语法(或者可能正在编写程序将其转换为我想要的方式)。我想知道是否有一种自动化的方法可以做到这一点。我在一些博客中读到野牛可以提供帮助,但我找不到合适的命令。有谁知道如何处理这个问题。
我不能真正发布我拥有的 yacc 文件,因为它是机密文件。但我可以举个例子如下
argExprList:
assignExp
{
// some rules here
}
| assignExpList ',' assignExp
{
//some other rules here
}
;
我希望它转换成的就像
argExpList ::= assignExp|assignExpList ',' assignExp