【发布时间】:2017-12-09 19:15:43
【问题描述】:
Perl 6 Regex 是 Method 的一种更具体的类型,所以我想到也许我可以用常规方法做一些黑魔法来产生同样的东西。我特别好奇在不改变任何语法的情况下这样做。
然而,看着Perl6/Grammar.nqp(我几乎不明白),这真的不是继承的事情。我认为,根据我的阅读,Perl 6 语法在看到其中一个正则表达式声明符时会切换俚语(子语言)。也就是说,不同的语法会解析regex { ... } 和method {...} 的内容。
那么,首先,是这样吗?
然后,只是为了傻笑,我想也许我可以在一个方法块中,但告诉它使用不同的俚语(例如,参见 "Slangs" from the 2013 Perl 6 Advent Calendar 或 "Slangs Today")。
但是,我发现的所有内容看起来都想改变语法。有没有办法做到这一点并返回一个被视为来自regex { ... }的字符串?
method actually-returns-a-regex {
...
}
我对此没有任何实际用途。我只是一直在想。
【问题讨论】:
-
“所以,首先,不同的语法解析正则表达式 { ... } 和方法 {...} (?) 的内容是对的吗?”是的,
MAINP6 slang/grammar 解析method声明的主体,但使用Regexslang/grammar 解析regex声明的主体。 -
"也许我可以在一个方法块中,但告诉它使用不同的俚语" 你可以,但是使用俚语意味着改变编译器正在使用的语法,你写道你不'不想改变语法。
-
但是,我可以告诉它使用已经满足我要求的现有语法吗?
-
我对你想要什么感到困惑。 (这就是我没有尝试回答的原因。你对莫里茨的回答让我更加困惑。)一些猜测试图确定你的意思:1)“我可以”暗示理智; 2)“它”是编译器; 3)“现有语法”是旨在扩展/弯曲 P6 的语法/动作对的一部分; 4)你想要的就是那个俚语的作用; 5)您愿意在编译进入正则表达式正文之前切换俚语或在之后修复 ast。如果您对这五个猜测中的每一个都说是/否,这可能会有所帮助。
-
@raiph 我也对自己想要的东西感到有些困惑,但似乎适当的术语已经超载,以至于我现在无法很好地表达它。