我想在我的映射應用程序的配置文件中啓用動態字段,但我無法弄清楚如何解析用戶傳入的「等式」至少不是從頭開始編寫整個解析器!我相信有一些更簡單的方法可以做到這一點,所以我要求提供創意!計算表達式分析器與嵌套和變量在ActionScript中
基本思想:
public var testString:String = "(#TOTPOP_CY#-#HISPOP_CY#)/#TOTPOP_CY#";
public var valueObject:Object = {TOTPOP_CY:1000, HISPOP_CY:100};
public function calcParse(eq:String):String {
// do calculations
return calculatedValue
}
到目前爲止,我想通過任一運營商,或者也許是可變的令牌分裂表達的,但擺脫了括號嵌套。或者,使用一系列正則表達式來搜索和替換每個表達式的值,遞歸運行直到剩下一個數字。但我不認爲正則表達式是數學運算(即用兩個數字的總和代替「\ d + \ d」) 理想情況下,我只需要用它們的值查找/替換所有變量名稱,然後運行eval (),但有一個在AS沒有EVAL ...
eesh
我下載了一些教材對編譯器設計課程,所以也許我會只寫一個完整的計算機語言和語法分析器和港口它從OTHER flex(解析器生成器):-D
是的,我認爲分流碼可能是解決方案... ANTLR看起來有點矯枉過正我的需要 – yuletide 2010-03-12 22:09:43
建成它,它像夢一樣工作,謝謝! – yuletide 2010-08-19 02:26:22