0

PEG ルールを考えると、次のようになります。

rule = element1:'abc' element2:'def' element3:'ghi' ;

要素の少なくとも 1 つに一致するように、しかしおそらくすべての要素に一致するように、これを書き直すにはどうすればよいですか?

つまり、次のすべての行に一致させたいと思います。

abc def ghi
abc def
abc     ghi
    def ghi
abc
    def
        ghi

ただし、空の文字列や誤った順序の式ではありませんdef abc

もちろん、要素が 3 つの場合は、別のルールで組み合わせを詳しく説明できますが、要素の数が増えると、エラーが発生しやすくなります。

これを簡潔に指定する方法はありますか?

4

2 に答える 2

1

答えは: 選言の 1 つの前提条件と、一連のオプションです。

rule = &(e1 / e2 / e3) e1? e2? e3?

これは標準的な PEG で、& は「存在する必要がありますが、消費されない」という意味です。「オプション」の意味。ほとんどの PEG パーサーには、これらのシンボルがない場合でも、これらの機能があります。

于 2016-03-03T07:59:27.130 に答える