Jam*_*son 21 python perl parsing compilation
在我的新工作中,有更多的人使用Python而不是Perl,我有一个非常有用的API,我自己编写,我想让我的同事用Python.
我认为将Perl代码编译成Python代码的编译器对于这样的任务非常有用.在尝试编写解析Perl的东西之前(或者至少是我用于定义API的Perl子集)之前,我从咨询公司那里找到了一个桥梁管理员.
对于我来说,聘请一家咨询公司来翻译这个API几乎肯定不值得,但这是一个非常有趣的工具.
有没有人知道将解析(或尝试解析!)Perl5代码并将其编译为Python的编译器?如果没有这样的东西,我该如何开始编写一个简单的编译器来解析我的面向对象的Perl代码并将其转换为Python?是否有ANTLR或YACC语法可以作为起点?
编辑:我找到了perl.y,如果我要编写自己的编译器,这可能是一个起点.
Eli*_*sky 33
詹姆士,
我建议你只用Python重写模块,原因如下:
wei*_*mat 19
我想你应该重写你的代码.解析工作的结果质量取决于您的Perl编码风格.我认为下面的引文很好地总结了理论方面.来自维基百科:维基百科中的Perl
Perl有一个图灵完备语法,因为解析可能会受到编译阶段执行的运行时代码的影响.[25] 因此,Perl无法通过直接的Lex/Yacc词法分析器/解析器组合进行解析.相反,解释器实现了自己的词法分析器,它与修改后的GNU bison解析器协调以解决语言中的歧义.
人们常说"只有perl可以解析Perl",这意味着只有Perl解释器(perl)才能解析Perl语言(Perl),但即便如此,这一点也不正确.因为Perl解释器可以在编译阶段模拟图灵机,所以需要决定停止问题以便在每种情况下完成解析.这是一个长期存在的结果,Halting问题是不可判定的,因此即使Perl也不能解析Perl.Perl做出了不寻常的选择,让用户可以在自己的编译阶段获得完整的编程能力.理论纯度方面的成本很高,但实际上的不便似乎很少见.
承担解析Perl的其他程序,如源代码分析器和自动压缩器,不仅要与模糊的句法结构竞争,还要与一般情况下Perl解析的不可判断性相抗衡.Adam Kennedy的PPI项目专注于将Perl代码解析为文档(保留其作为文档的完整性),而不是将Perl解析为可执行代码(甚至Perl本身也无法做到).肯尼迪首先推测说,"解析Perl会遇到'停机问题'."[26],后来证明了这一点.[27]
从5.10开始,您可以在启用实验Misc属性装饰的情况下编译perl,并将PERL_XMLDUMP环境变量设置为文件名以获取解析树的XML转储(包括注释 - 对语言翻译非常有用).虽然正如医生所说,这是一项正在进行中的工作.
归档时间: |
|
查看次数: |
29667 次 |
最近记录: |