マッピングアプリの構成ファイルで動的フィールドを有効にしようとしていますが、少なくともパーサー全体を最初から作成しない限り、ユーザーから渡された「方程式」を解析する方法がわかりません。これを行うためのもっと簡単な方法があると確信しているので、私はアイデアを求めています!
基本的な考え方:
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」を2つの数値の合計に置き換えます)理想的には、すべての変数名を検索/置換してから、eval( )、しかしASには評価がありません...
eesh
コンパイラー設計のコース用にいくつかのコース資料をダウンロードしたので、本格的な電卓言語とパーサーを作成して、他のフレックス(パーサージェネレーター)から移植するだけかもしれません:-D