2011-03-07 99 views
0

我想使用beanshell(bsh)來評估用戶定義的表達式。我希望讓那些表情有例如一種宏替換:在Beanshell中解析令牌

boolean isTrue = i.eval("@something == 5");

有沒有辦法有BSH回撥到我的Java進行的變量替換,當它評估前解析上面的例子?

EDIT 我的意圖是,以允許用戶指定的表達(例如@something == 5)其中@something是一個關鍵的,並且需要置換爲實際值。我希望能夠按照用戶的說明傳遞整個評估字符串,並希望beanshell在解析過程中回調「解析器」類型處理程序。

預先感謝 - 弗蘭克

+0

或任何(犀牛等),將支持這 –

回答

0

沒有,有沒有辦法在BeanShell中來實現這一目標。 你可以在這裏發佈一個功能請求http://code.google.com/p/beanshell2

但是也許你會在你試圖達到的目標中給出一些更多的見解..?

+0

增加編輯,以進一步澄清...希望這可以幫助 –

+0

不是真的。你爲什麼不現有的可能性?即'Interpreter i = new Interpreter(); i.set(東西,5); actsval(「something == 5」);' – Peter

0

一個非常古老的問題,但這裏是我的答案:

  1. 設爲您的解析器爲varible的解釋

Interpreter i = new Interpreter(); i.set("resolver", myResolver);

  • 過程令牌
  • 模板的預處理用戶輸入RN @something成一個正則表達式,或什麼,爲了使腳本令牌作爲:

    resolver.resolve("@something") == 5 
    
  • 執行腳本(I遺漏\」,爲了清楚,因爲這將是一個可變)
  • i.eval("resolver.resolve("@something") == 5")

    Resolve方法可以返回的對象; Beanshell寬鬆打字和自動裝箱應該照顧的東西。我看到的問題是像String.equals()這樣的事情,例如,因爲這不僅僅需要令牌替換。