[英]Evaluating List<String> as a mathematical expression
我有一個充滿值和運算符的List<String>
。
["123", "+", "(", "890", "-", "15.00", ")"]
我知道我可以制作一個算法,將這些數字和運算符推入堆棧並將它們彈出並評估為 go。 但是,不使用外部庫有沒有更好的方法呢?
將數字和運算符壓入堆棧將是一個解釋器。
顯然更好的方法(對於“更好”的一些定義)是編寫一個編譯器!
您已經將輸入拆分為詞法標記,因此您可以跳過實現詞法分析器並直接開始構建 AST。 您可以在System.Linq.Expressions 命名空間中找到合適的類來轉換您的輸入; 看看表達式 Class 。 您可以將結果包裝在 lambda 表達式中,將其編譯為 IL 並在 CLR 上執行!
您始終可以使用 .NET 框架中的 C# 編譯器類將其評估為 C# 表達式...
我有一個完整的 class 可以計算任何表達式。
首先,您需要將列表中的所有字符串提取為單個字符串,例如:
string sExpression = "123+(890-15.00)";
其次,您需要在解析器中評估此表達式,我有一個完整的 class 可以為您制作,但我無法在此處附加文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.