我正在实现一个数学字符串表达式解析器,它能够对标量和分数执行基本计算(+、-、*、/)。例如:评估“1/3*(4/10-12/10)”返回“-4/15”
不依赖于现有的数学表达式或分数类,我相信一个有效的数学表达式可能是:
当传递一个字符串时,程序将决定它是否可以分解为更小的表达式(复合表达式),或者如果它是一个基本操作,则对其进行评估。
换句话说,给定一个表达式,程序需要在运行时决定应该使用什么类型的类。
理想的类/子类结构是什么,决定对象类型的代码应该在哪里?在父类的构造函数中?在静态方法中?在抽象类中?
我目前正在使用 Java,但问题可能与语言无关。
似乎这里有一个层次结构。Expression
似乎是您的基本参考,它可以由多个ExpressionComponent
s组成,分别是 a Scalar
、 a Fraction
、 anOperation
和 a CompoundedExpression
。
如何解析其中任何一个由您决定,但是您的工厂(是的,您将在这里使用工厂来生成任何东西的实例)将生成这些对象的具体实例以供使用。由于它们都是基本类型ExpressionComponent
,因此您需要确保的 APIExpression
允许您以ExpressionComponent
智能方式与多个s交互。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句