7
我有興趣編寫微語法。這是解析器不理解語言的完整語法的地方,只是其中的一部分;種酸「m4」。如何在perl6中編寫微語法?
這個想法是,解析器讀取字符並將它們寫入輸出,直到它在識別關鍵字時「醒來」,根據語法做一些處理,然後再次入睡。
我在構建一個時遇到了困難,而且在那裏似乎沒有任何實例。
我有興趣編寫微語法。這是解析器不理解語言的完整語法的地方,只是其中的一部分;種酸「m4」。如何在perl6中編寫微語法?
這個想法是,解析器讀取字符並將它們寫入輸出,直到它在識別關鍵字時「醒來」,根據語法做一些處理,然後再次入睡。
我在構建一個時遇到了困難,而且在那裏似乎沒有任何實例。
.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;
如果你跟蹤你在哪裏,你可以切換語法,再試一次當緩衝區獲取更多數據,等等。
除此之外,你還沒有提出你想要解決的具體問題。