7
私はマイクログラマーを書くことに興味があります。これはパーサが言語の完全な文法を理解していない部分です。酸のm4の一種。perl6にはどのようにマイクログラマーを書くのですか?
パーザは、キーワードを識別したり、文法にしたがって何らかの処理をしたり、再び眠ったりするまで、文字を読み込んで出力するようになっています。
私は問題を抱えていますが、実際にそこに例はありません。
私はマイクログラマーを書くことに興味があります。これはパーサが言語の完全な文法を理解していない部分です。酸のm4の一種。perl6にはどのようにマイクログラマーを書くのですか?
パーザは、キーワードを識別したり、文法にしたがって何らかの処理をしたり、再び眠ったりするまで、文字を読み込んで出力するようになっています。
私は問題を抱えていますが、実際にそこに例はありません。
.subparse
の方法がお探しのものである可能性があります。それは、データの始めにアンカーし、可能な限り一致させます。あなたは時にバッファもう一度試して、どこそれはあなたがどこにいるかを追跡する場合は、文法を切り替えることができます
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;
を中断したところから見ることMatch
オブジェクトを見て、次に起動するためにそれを伝えるために:c
副詞を使用することができますより多くのデータを得ることができます。
それを超えると、あなたは解決しようとしている特定の問題を提示していません。