2017-03-17 9 views
7

私はマイクログラマーを書くことに興味があります。これはパーサが言語の完全な文法を理解していない部分です。酸のm4の一種。perl6にはどのようにマイクログラマーを書くのですか?

パーザは、キーワードを識別したり、文法にしたがって何らかの処理をしたり、再び眠ったりするまで、文字を読み込んで出力するようになっています。

私は問題を抱えていますが、実際にそこに例はありません。

答えて

7

.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副詞を使用することができますより多くのデータを得ることができます。

それを超えると、あなたは解決しようとしている特定の問題を提示していません。

関連する問題