bri*_*foy 36
没有perl6,并且有许多Perl 6编译器.Perl 6有一个语法,虽然它是用Perl 6编写的,所以只要你能理解它,它就会告诉你需要知道的一切.
我刚问拉里这个问题,因为我在圣保罗佩尔工作室的午餐时坐在他对面.他说现在"只有Perl 6可以解析Perl 6",Perls上都有大写字母,这意味着与原始声明不同.
虽然Perl 6的目标是一个标准和许多实现,但您不需要特定的程序来执行此操作.没有"perl6",尽管Larry在今天的演讲中对他的Rakudo有别名,尽管他在这些例子中使用了一些不同的实现.
最后我看,Perl 6继承了Perl 5的/字符,这可能意味着在预期一个术语时"正则表达式的开始",或者在预期运算符时"分开".鉴于此,原型和Perl 6至少与Perl 5在同一阵营中用于静态标记化.标记化Perl 6程序的唯一方法是在Perl 6编译器中运行Perl 6解释器.海龟一路下来,一次又一次.
公理"只有perl可以解析Perl",其中"perl"是解释器二进制文件,"Perl"是语言主要源于解析规则在解析文件时可以更改的事实.在Perl 5中,它来自原型子例程声明,来自各种编译指示和源过滤器.
在我看来,这只会在Perl 6中成为一个问题.在Perl 5中,解析器规则可能改变的地方数量是有限的,而在Perl 6中,它们是多种多样的.除了Perl 5所具有的一切之外,Perl 6还允许您定义自己的运算符,并且由于此定义是在Perl代码中完成的,因此需要使用Perl解释器来理解它.
据我所知,还没有实现支持它,但Perl 6规范还包括真正的语言级宏,它可以通过文本或操纵AST重构Perl 6代码.这两者都需要Perl解释器来执行它们的魔法.
总而言之,我有一种感觉,即Perl 6将比Perl 5更强大的公理.(对于语法荧光笔的作者而言,这将更加噩梦:))当然这都是为了增加表现力语言的力量,所以我对这个让步很满意.
上面的推论是,与Perl 5不同,Perl 6有一个正式的规范,因此公理可能必须改为"只有实现Perl 6规范的解释器才能解析Perl 6",但这有点迂腐.
根据更新:
我不认为上面排除了Perl 6的JIT编译器的想法,因为根据定义,这样的编译器也必须包含Perl 6解释器.就静态编译而言,它可能是可能的,但它会严重限制语言的运行时功能,因为任何涉及eval的构造都不起作用.
PPI在Perl 5版本中非常有用,因为perl解释器不能为其AST提供许多丰富且易于使用的接口.在Perl 6中,内省的级别更高,因此解释器本身可以提供所有必要的工具.
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |