语法中§

有关方法 subparse 的主要文档,请参阅上下文

method subparse($target:$rule = 'TOP'Capture() :$args = \(),  Mu :$actions = Mu*%opt)

方法 parse 完全相同,只是光标不必到达字符串的末尾即可成功。也就是说,它不必匹配整个字符串。

请注意,与 方法 parse 不同,subparse 始终返回 Match,如果语法匹配失败,它将是一个失败的匹配(因此为假)。

grammar RepeatChar {
    token start($character) { $character+ }
}
 
say RepeatChar.subparse('bbbabb':rule('start'), :args(\('b')));
say RepeatChar.parse(   'bbbabb':rule('start'), :args(\('b')));
say RepeatChar.subparse('bbbabb':rule('start'), :args(\('a')));
say RepeatChar.subparse('bbbabb':rule('start'), :args(\('a')), :pos(3));
 
 
# OUTPUT: 
# 「bbb」 
# Nil 
# #<failed match> 
# 「a」