1
我怎麼能最佳評估用戶指定的布爾表達式的字符串,如:如何將布爾表達式字符串轉換爲對象?
A & B | (C & !D)
我需要做什麼用的?例如: 假設我們有一組人,並且用戶有一個輸入框,在那裏他可以寫爲:String
像布爾表達式連接這些人兩個(及以上):
Peter & Klaus | (Peter & Clair | !Klaus)
(我知道這表情沒有任何意義,只是作爲一個例子)。
然後我想用布爾語法來分割這個布爾字符串。 後來,如果一個人被重命名(例如彼得 - >約翰),我希望用戶賦予的表達式也用新名稱自動重命名。這樣用戶就可以用新名稱查看他保存的表達式的更新。
因此,我可能必須使用代表名稱後面的對象的ID來存儲布爾表達式。因此必須從db中的表達式中查找每個名字,因此必須用布爾語法分割字符串。
問題:
我怎麼能最好的拆分此字符串?
如何使用對象值存儲此表達式,以便在名稱更改時可以重新評估此字符串?
也許我的問題題目不對:我不是真的想將表達式評估爲true或false,而是想根據這個布爾expr來解析/分割/製作引用。 – membersound 2013-03-18 10:52:51
您是否正在尋找一種方法來「表示」這樣的表達式,並且最終並且只是可選地評估它的布爾值? 從概念上講,像這樣的東西? http://en.wikipedia.org/wiki/Binary_expression_tree 如果是這樣,你可能想看看ANTLR和類似的東西......這幾乎是他們存在的原因:詞法和句法解析... – mdm 2013-03-18 11:00:43
I 「代表」或「存儲」是正確的詞。我想保存這個表達式,並用放置在數據庫中的對象(人物對象)來表示它。然後,如果有人被重命名,表達式應該被自動更新。或者,一旦保存的表達式應該使用保存的對象引用來顯示,並且執行像object.getName()這樣的操作來構建表達式的可視表示。 – membersound 2013-03-18 11:03:15