2017-08-17 62 views
0

我在編寫ohm語法時遇到困難。Ohm.js:'*'內部不允許有空值表達式部分

這就是:

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" 
} 

所以作爲錯誤消息建議,你不能kleene星星可以爲空的表達式。 '可空'表示'將接受空字符串';原因相當直觀 - 如果你的語法接受空字符串的無限重複,那麼解析它就不會終止。我提供了一些可行的例子,但我不確定它是否與您想要的語法相同 - 如果您在問題中提供了更多詳細信息,那麼我會嘗試更具體一些。