Fel(Fast expression language)表達式引擎

greenpineyu 13年前發布 | 5K 次閱讀 開源項目提交群組

Fel是輕量級的高效的表達式計算工具。

Fel在源自于企業項目,設計目標是為了不斷變化的功能需求和性能需求。

Fel是開放的,引擎計算中的多個模塊都可以擴展或替換。Fel的執行主要是通過函數實現,運算符(+、-、*等都是Fel函數),所有這些函數都是可以替換的,擴展函數也非常簡單。

Fel有雙引擎,同時支持解釋執行和編譯執行。可以根據性能要求選擇執行方式。編譯執行就是將表達式編譯成字節碼(生成java代碼和編譯模塊都是可以擴展和替換的)

Fel基于Java1.5開發,適用于Java1.5及以上版本。

Fel使用例子:

執行四則表達式,代碼如下所示:

1:常量表達式:

FelEngine fel = new FelEngineImpl(); 
Object result = fel.eval("5000*12+7500"); 
System.out.println(result); 

輸出結果:67500


2:變量 
使用變量,其代碼如下所示:

FelContext ctx = fel.getContext(); 
ctx.set("單價", 5000); 
ctx.set("數量", 12); 
ctx.set("運費", 7500); 
Object result = fel.eval("單價*數量+運費"); 
System.out.println(result); 
輸出結果:67500

特點:

易用性:API使用簡單,語法簡潔,和java語法很相似。

輕量級:整個包只有300多KB。

高  效:目前沒有發現有開源的表達式引擎比Fel快。

擴展性:采用模塊化設計,可靈活控制表達式的執行過程。

根函數:Fel支持根函數,“count(1,2,3)”在Fel中是很覺的使用函數的方法。

不足:

支持腳本:否。

支持數組:否。Fel不支持類似于array[i]這樣的語法,可以通過其他方法獲取數據值。以后版本可以改進。

支持三元表達式:否。以后版本可以改進。

適應場景:

Fel適合處理海量數據,Fel良好的擴展性可以更好的幫助用戶處理數據。

Fel同樣適用于其他需要使用表達式引擎的地方(如果工作流、公式計算、數據有效性校驗等等)

項目地址:http://code.google.com/p/fast-el/

[本話題由 greenpineyu 于 2011-09-06 09:20:58 編輯]

 本文由用戶 greenpineyu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!