私信  •  关注

Eric Strom

Eric Strom 最近创建的主题
Eric Strom 最近回复了
13 年前
回复了 Eric Strom 创建的主题 » 为什么不可能创建一个实用的Perl-to-python源代码转换器?

只需在这里的其他一些列表上进行扩展,这些Perl构造在Python中可能非常笨拙(如果可能的话)。

  • 动态范围(通过 local 关键字)
  • typeglob操作(多个同名变量)
  • 格式(它们都有自己的语法)
  • 可变变量上的闭包
  • 语用
  • 左值子程序( mysub() = 5; 类型代码
  • 源滤波器
  • 上下文(list与scalar,以及调用代码的方式 wantarray )
  • 类型强制/动态类型
  • 任何使用字符串的程序 eval

这个列表一直持续下去,有人可以尝试在所有类似的构造之间创建一个映射,但最终它会因为一个简单的原因而失败。

无法静态分析Perl。Perl代码中的定义(尤其是begin块中的定义)改变了编译器解释剩余代码的方式。因此,对于非琐碎的程序,从perl=>python进行转换会遇到停止问题。

在程序完成运行之前,无法确切地知道如何编译所有程序,并且理论上可以创建一个Perl程序,该程序每次运行时都会进行不同的编译。这意味着一个Perl程序可以映射到无限多的python程序,正确的方法只有在Perl解释器中运行原始程序之后才能知道。