[英]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.