2017-08-17 5 views
0

ohm文法を書くのが難しいです。ここでOhm.js: '*'内にNullable式セクションは使用できません

それは次のとおりです。

MyGrammar { 
    Whole = section* 
    section = partA? partB? 
    partA = "foo" | "bar" 
    partB = "baz" 
} 

そして、何その私にエラーされ与える:理解しやすいですが、問題は何イムがやろうとすると言うのであるということである

Nullable expression section is not allowed inside '*' (possible infinite loop) 

が常にすることをセクション内のpartAまたはpartBまたはその両方です。

意味がありますか?

ご協力いただければ幸いです。ありがとう

答えて

0
MyGrammar { 
    Whole = something+ 
    something = partA | partB 
    partA = "foo" | "bar" 
    partB = "baz" 
} 

エラーメッセージに示されているように、ヌル可能な式を無効にすることはできません。 'nullable'は '空の文字列を受け入れます'を意味します。その理由はかなり直感的です。文法が空の文字列の無限の繰り返しを受け入れるならば、それを解析することは終わらないでしょう。私はうまくいくものの例を提供しましたが、あなたが望む文法に相当するかどうかはわかりません。質問の詳細を記入すると、より具体的に試してみます。

関連する問題