Aviator 輕量級表達式引擎

Aviator是一個高性能、輕量級的java語言實現的表達式求值引擎,主要用於各類表達式的動態求值。html

Aviator的特性java

  • 支持大部分運算操做符,包括算術操做符、關係運算符、邏輯操做符、位運算符、正則匹配操做符(=~)、三元表達式?: ,而且支持操做符的優先級和括號強制優先級,具體請看後面的操做符列表。git

  • 支持大整數和精度運算(2.3.0版本引入)正則表達式

  • 支持函數調用和自定義函數數組

  • 內置支持正則表達式匹配,相似Ruby、Perl的匹配語法,而且支持類Ruby的$digit指向匹配分組。ide

  • 自動類型轉換,當執行操做的時候,會自動判斷操做數類型並作相應轉換,沒法轉換即拋異常。函數

  • 支持傳入變量,支持相似a.b.c的嵌套變量訪問。性能

  • 函數式風格的seq庫,操做集合和數組優化

  • 性能優秀ui

Aviator的限制:

  • 沒有if else、do while等語句,沒有賦值語句,僅支持邏輯表達式、算術表達式、三元表達式和正則匹配。

  • 不支持八進制數字字面量,僅支持十進制和十六進制數字字面量。

這裏我使用最新的版本:

跟着demo,簡單使用下:

輸出:

兩種運行模式

默認 AviatorEvaluator 以執行速度優先: AviatorEvaluator.setOptimize(AviatorEvaluator.EVAL);

你能夠修改成編譯速度優先,這樣不會作編譯優化: AviatorEvaluator.setOptimize(AviatorEvaluator.COMPILE);

數據類型

  • String 類型: 字符串類型,單引號或者雙引號括起來的文本串,如'hello world',變量 若是傳入的是 String 或者 Character 也將轉爲 String 類型。
  • Bool 類型: 常量 true 和 false,表示真值和假值,與 java 的 Boolean.TRUE 和 Boolean.False 對應。
  • Pattern 類型: 相似 Ruby、perl 的正則表達式,以//括起來的字符串,如/\d+/,內部 實現爲 java.util.Pattern。

  • nil 類型: 常量 nil,相似 java 中的 null,可是 nil 比較特殊,nil 不只能夠參與==、!=的比 較,也能夠參與>、>=、<、<=的比較,Aviator 規定任何類型都 n 大於 nil 除了 nil 本 身,nil==nil 返回 true。

  • Number 類型:數字類型,支持四種類型,分別是 long,double,java.math.BigInteger(簡稱 big int)和 java.math.BigDecimal(簡

    稱 decimal)

 

這裏就簡單記錄一下,具體細節使用你們能夠看看文檔!

參考:

https://code.google.com/archive/p/aviator/wikis/User_Guide_zh.wiki?spm=a2c4e.10696291.0.0.7d6919a4sGEHEz&file=User_Guide_zh.wiki

http://loveshisong.cn/%E7%BC%96%E7%A8%8B%E6%8A%80%E6%9C%AF/2016-02-24-%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%95%E6%93%8Eaviator.html

相關文章
相關標籤/搜索