用來將字串轉為可執行文字並執行

2022-02-21 06:15:55 字數 3933 閱讀 3682

1

///2

///本類用來將字串轉為可執行文字並執行

3///

做了一部分修改,修改原來的錯誤,修改,增加了部分邏輯。測試通過,請勿隨意修改 zhangqc

4///

5public

class

evaluator618

///19

///可執行串的建構函式

20///

21///

返回值型別

22///

執行表示式

23///

執行字串名稱

24public evaluator(type returntype, string expression, string

name)25;

28 constructevaluator(items); //

呼叫解析字串建構函式進行解析29}

30///

31///

可執行串的建構函式

32///

33///

可執行字串項

34public

evaluator(evaluatoritem item)

35;//

將可執行字串項轉為可執行字串項陣列

37 constructevaluator(items); //

呼叫解析字串建構函式進行解析38}

3940

///41

///解析字串建構函式

42///

43///

待解析字串陣列

44///

這個表示,你的字串中是否需要在上return,false表示你不需要加,true代表你需要加上return

45private

void constructevaluator(evaluatoritem items,bool isreturn=false)46

() ", //

新增定義公共函式**

72 item.returntype.name, //

函式返回值為可執行字串項中定義的返回值型別

73 item.name); //

函式名稱為可執行字串項中定義的執行字串名稱

" : "

return ();

", item.expression);

}\n"); //

新增函式結束括號77}

} }"); //

新增類結束和命名空間結束括號

79//

得到編譯器例項的返回結果

80 compilerresults cr =comp.compileassemblyfromsource(cp, code.tostring());

81if (cr.errors.haserrors) //

如果有錯誤

82/n

", err.errortext); //

新增進錯誤文字,每個錯誤後換行88}

89throw

new exception("

編譯錯誤:

" + error);//

丟擲異常90}

91 assembly a = cr.compiledassembly; //

獲取編譯器例項的程式集

92 _compiled = a.createinstance("

esic.rfq.common.evaluatorextend._evaluator

"); //

通過程式集查詢並宣告 esic.rfq.common.evaluatorextend._evaluator 的例項93}

94#endregion

95#region 公有成員

96///

97///

執行字串並返回整型值

98///

99///

執行字串名稱

100///

執行結果

101public

int evaluateint(string

name)

102105

///106

///執行字串並返回字串型值

107///

108///

執行字串名稱

109///

執行結果

110public

string evaluatestring(string

name)

111114

///115

///執行字串並返回布林型值

116///

117///

執行字串名稱

118///

執行結果

119public

bool evaluatebool(string

name)

120123

///124

///執行字串並返 object 型值

125///

126///

執行字串名稱

127///

執行結果

128public

object evaluate(string

name)

129133

#endregion

134#region 靜態成員

135///

136///

執行表示式並返回整型值

137///

138///

要執行的表示式

139///

運算結果

140public

static

int evaluatetointeger(string

code)

141145

///146

///執行表示式並返回字串型值

147///

148///

要執行的表示式

149///

運算結果

150public

static

string evaluatetostring(string

code)

151155

///156

///執行表示式並返回布林型值

157///

158///

要執行的表示式

159///

運算結果

160public

static

bool evaluatetobool(string

code)

161165

///166

///執行表示式並返回 object 型值

167///

168///

要執行的表示式

169///

運算結果

170public

static

object evaluatetoobject(string

code)

171175

#endregion

176#region 私有成員

177///

178///

靜態方法的執行字串名稱

179///

180private

const

string staticmethodname = "

__foo";

181///

182///

用於動態引用生成的類,執行其內部包含的可執行字串

183///

184object _compiled = null

;185

#endregion

186}

187188

189///

190///

可執行字串項(即一條可執行字串)

191///

192public

class

evaluatoritem

193218 }

python將字串轉為矩陣

將字串轉換為矩陣,分為四步 將字串切分為乙個list d 2 3 4 5 6 8 1 2 dlist d.strip split 將list中的 轉換為 dint map int,dlist 將list轉換為array darr np.array dint 將array陣列轉換為矩陣,這裡轉為乙個三...

Python 將字串轉為字典

在工作中遇到乙個小問題,需要將乙個python的字串轉為字典,比如字串 user info 我們想把它轉為下面的字典 user dict 有以下幾種方法 import json user info user dict json.loads user info user dict 但是使用json進行...

react將字串轉為標籤

react不支援直接將字串放到render返回值中,這樣放入的字串會被當做一般字串處理。123 4567 8const str test return 該元件中的str會被當做字串處理,直接在頁面中顯示出來。react有乙個專門的屬性叫dangerouslysetinnerhtml是用於處理這種情況...