2016-06-24 5 views
1

私は通訳のためのパーサを書いています。ペグのルールを書いていたので、私はこの混乱したケースにぶつかりました。私はいくつかの理由でこの`/`で区切られた式の順序は意味がありますか?

blank ->() 
    = " "* 
    /"\n"* 

のようなルールを持って

、それは、\ nは私のために一致していませんが、私は逆

blank ->() 
    = "\n"* 
    /" "* 

を行うときには、改行を一致しますが、doesnのスペースバーにマッチしません。

この原因は何ですか?順序を変更するだけで何もしないでください。私が使用しているペグの実装ではこれがエラーですか?

答えて

1

クレーン星(*)は、とゼロ以上の一致を示します。繰り返し。したがって" "*は常に一致します。スペースがない場合、スペースはゼロになります。次の選択肢が試されるようにするために、あなたは一つ以上の繰り返しオペレータ、+を使用する必要があります。

関連する問題