有一个(相对)著名的Perl格言:“只有Perl可以解析Perl。” 我在想,对于Perl 6,这个说法是否仍然成立?
扩展讨论...我想到了这个问题,是考虑到PyPy最近的更新。 Perl独特的可解析性是否会妨碍类似的努力?在Perl代码的受限静态视图(如PPI)中有多少价值? Perl 6能否拥有JIT编译器?*
* 我不确定这些概念是否相关。它们相关吗?
有一个(相对)著名的Perl格言:“只有Perl可以解析Perl。” 我在想,对于Perl 6,这个说法是否仍然成立?
扩展讨论...我想到了这个问题,是考虑到PyPy最近的更新。 Perl独特的可解析性是否会妨碍类似的努力?在Perl代码的受限静态视图(如PPI)中有多少价值? Perl 6能否拥有JIT编译器?*
* 我不确定这些概念是否相关。它们相关吗?
在我上次查看时,Perl 6继承了Perl 5的/字符,当期望一个项时它可以表示“正则表达式的开头”,而当期望一个操作符时,则表示“除法”。由此可见,对于静态记号化,Perl 6至少与Perl 5位于同一阵营,并具有原型。仅有运行Perl 6解释器的Perl 6编译器才能对Perl 6程序进行标记化处理。再次深入探索,无止境。
/
字符用作注释、除法或正则表达式呢?不同之处在于 JavaScript 语法不会产生歧义。 - Konrad BorowskiBEGIN { if (rand()<.5) { *f = sub(){ 3 }; } else { *f = sub { 3 }; } } print f + 1
。运行任意Perl代码是必要的,以确定该产品是否等效于print(f()+1)
或print(f(+1))
。 - ikegamiif condition { eval "...define a new op or macro..." }
对解析没有影响。另外,在条件语句中定义新运算符也没有实际意义。if condition { multi sub postfix:... }
无法达到预期效果。 - SchwernPerl 6是一种规范,任何遵循该规范的程序都可以被称为Perl 6,就像大多数其他语言一样。目前有许多Perl 6实现正在进行中。
Perl6可以有JIT编译器吗?
您认为Perl5无法进行JIT编译是基于“只有perl
可以解析Perl5”,但这并不正确。尽管每次运行Perl5程序可能会有不同的编译方式,但这并不妨碍它进行JIT编译。
因此,如果Perl5 - 最松散定义的语言之一 - 可以进行JIT编译,为什么Perl6不能呢。