2017-07-03 18 views
1

PEG.jsと一致する単語に問題があります。PEG.jsと一致する単語

それは次のようになります。 Words = "stack"/"overflow"/"stackoverflow"からoverflowが残っていた - 私はそれはそれはstackを発見し、それが最後だと思ったエラーExpected end of input but "o" found.を示し、「StackOverflowの」一致しようとします。 https://pegjs.org/online &ペースト:

Text = Word Word = "stack"/"overflow"/"stackoverflow"をし、単語「stackoverflowの」私は、配列内の単語を変更する習慣はありません

てみてください

あなたはここでそれを試すことができます。

よろしくお願いいたします。

答えて

3

PegJSは最初の値と一致しようとします。これが成功しない場合にのみ、それは第2のものを試みるなどとなります。 あなたのケースではstackと一致する可能性があるため、他のものとの一致を試み続けることはありません。

この問題は、1つの一致が別のものの接頭辞である場合によく発生します。このような場合、あなたは「長い」という用語のリストを開始しなければならないし、終わりに向かって接頭辞を置く:

Text = Word 
Word = "stackoverflow"/"stack"/"overflow" 

また、複数の単語を一致させることができます。この場合、stackoverflowの両方が一致しますが、stackoverflowでは一致しません。

Text = Word* 
Word = "stack"/"overflow"/"stackoverflow" 
+0

他の方法で再編成することはできません。 – Filemon279

+0

@ Filemon279私の編集を参照してください。達成したいのは何ですか? – Sirko

+0

編集ありがとうございますが、私にとってはうまくいかないでしょう。 "stackoverflow"私の配列では私は "オーバーフロー"がないので、それは配列の単語の残りの部分を見つけることはありませんので、悪い例だった。私はそれが別の方法で私の配列を並べ替えることだと思ったが、私はそれと一緒に行くだろう。ご協力ありがとうございました。 – Filemon279

関連する問題