1. 程式人生 > >Aviator 輕量級表示式引擎

Aviator 輕量級表示式引擎

Aviator的特性

  • 支援大部分運算操作符,包括算術操作符、關係運算符、邏輯操作符、位運算子、正則匹配操作符(=~)、三元表示式?: ,並且支援操作符的優先順序和括號強制優先順序,具體請看後面的操作符列表。

  • 支援大整數和精度運算(2.3.0版本引入)

  • 支援函式呼叫和自定義函式

  • 內建支援正則表示式匹配,類似Ruby、Perl的匹配語法,並且支援類Ruby的$digit指向匹配分組。

  • 自動型別轉換,當執行操作的時候,會自動判斷運算元型別並做相應轉換,無法轉換即拋異常。

  • 支援傳入變數,支援類似a.b.c的巢狀變數訪問。

  • 函式式風格的seq庫,操作集合和陣列

  • 效能優秀

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%