【问题标题】:How do I write micro-grammars in perl6?如何在 perl6 中编写微语法?
【发布时间】:2017-03-17 14:56:13
【问题描述】:

我对编写微语法很感兴趣。这就是解析器不理解语言的完整语法的地方,只理解它的一部分;一种“酸上的 m4”。

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

我在构建一个时遇到了问题,而且那里似乎没有任何示例。

【问题讨论】:

    标签: parsing grammar raku


    【解决方案1】:

    .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;
    

    如果您跟踪自己的位置,您可以切换语法,当缓冲区获得更多数据时重试,等等。

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

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 2013-07-27
      相关资源
      最近更新 更多