如何在perl6中编写微语法?

bli*_*ppy 7 grammar parsing perl6

我有兴趣编写微语法.这是解析器不理解语言的完整语法的地方,只是语言的一部分; 有点"m4对酸".

这个想法是解析器读入字符并将它们写入输出,直到它在识别关键字时"唤醒",根据语法进行一些处理,然后再次入睡.

我在构建一个时遇到了麻烦,而且似乎没有任何例子.

bri*_*foy 7

.subparse方法可能正是您正在寻找的方法.它锚定在数据的开头并尽可能多地匹配.您可以使用:c副词告诉它从哪里开始,然后查看Match对象以查看它停止的位置

 my $position = 0;

 my $match = Some::Grammar.subparse( $data, :c($position) );

 # update the position to the last thing your grammar consumed
 $position = $match.end if $match.so;
Run Code Online (Sandbox Code Playgroud)

如果您跟踪自己的位置,可以切换语法,在缓冲区获取更多数据时再试一次,依此类推.

除此之外,您还没有提出您想要解决的具体问题.