是否有Perl6规范形式?

时间:2017-05-27 16:31:50

标签: grammar perl6 canonicalization

Perl6标准语法相对较大。虽然这有助于一旦掌握了表达,但它创造了掌握的障碍。例如,核心构造通常具有支持不同编程范例的多种形式。一个基本示例是用于创建Pairs的各种语法:

Pair.new('key', 'value'); # The canonical way 
'key' => 'value';         # this... 
:key<value>;              # ...means the same as this 
:key<value1 value2>;      # But this is  key => <value1 value2> 
:foo(127);                # short for  foo => 127 
:127foo;                  # the same   foo => 127

特别注意第一种形式的评论:“规范方式”。

另一个例子是the documentation for method make

This is just a little sugar for $/.made = $ast which is a very common operation in actions.

是否存在可以为Perl6程序输出的规范形式,以便在掌握了规范子语法后,可以检查该形式的任何Perl6程序以理解它?

1 个答案:

答案 0 :(得分:8)

我说Perl6语法(特别是roast 是正典,所以所有这些形式都是&# 39;典型&#39 ;.该注释指的是在编译/执行任何其他表单时实际发生的情况。调用.new()类的Pair方法来创建新的Pair对象。无论您使用哪种选项,都可以在幕后发生这种情况。其他语法只是表达相同内容的更简单方法。

您可能会发现.perl()方法很有帮助。它将描述在Perl中表达任何变量的方式:

> Pair.new('key', 'value').perl
:key("value")
> ('key' => 'value').perl
:key("value")
> (:key<value>).perl
:key("value")