gpt4 book ai didi

raku - 裸词规则

转载 作者:行者123 更新时间:2023-12-04 17:14:43 24 4
gpt4 key购买 nike

Barewords 可以在 Pair 的左侧使用声明(这还没有记录在案,我正在处理 this issue right now ,但我想让一切都正确)。但是,我还没有发现什么是以及什么不会在任何地方被视为裸字键。

这似乎有效

say (foo'bar-baz => 3); # OUTPUT: «foo'bar-baz => 3␤»

这不

say (foo-3 => 3); # OUTPUT: «(exit code 1) ===SORRY!=== Error while compiling /tmp/jorTNuKH9V␤Undeclared routine:␤    foo used at line 1␤␤»

所以它显然遵循 the same syntax as the ordinary identifiers .那是对的吗?我在这里错过了什么吗?

最佳答案

Perl 6 中没有裸词,因为它们存在于 Perl 5 中,并且在 Perl 6 中根本不使用该术语。

有两种情况我们可以称之为“裸标识符”:

  • 紧跟零个或多个水平空白字符( \h* )的标识符,后跟字符 => .这将左侧的标识符作为对键,并在 => 之后解析术语。作为对值。这完全是一个语法决定;例如,具有该标识符的子或类型的存在不会产生任何影响。
  • 后跟空格(或其他语句分隔符或终止符)的标识符。如果已经存在该名称的类型,则将其编译为对该类型对象的引用。否则,它将始终被视为子调用。如果尚不存在该名称的 sub 声明,则它将被视为对后声明的 sub 的调用,并且如果稍后未声明具有该名称的 sub,则会在 CHECK 时产生错误。

  • 这两种情况仅在它们都是 term 的情况下才相关。 Perl 6 语法中的 s,并且它们都希望解析 identifier ,后面是 the standard rules linked in the question .哪个获胜取决于最长 token 匹配语义;标识符和 => 之间只能有水平空白的限制存在以确保标识符、空格和 =>将一起计为声明性前缀,因此案例 1 将始终胜过案例 2。

    关于raku - 裸词规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53977575/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com