我想制作一个简单的概念验证应用程序(REPL),该应用程序需要一个数字,然后处理该数字上的命令。
示例:我从1开始。然后我写“ add 2
”,它给我3。然后我写“ multiply 7
”,它给我21。然后我想知道它是否是素数,所以我is prime
在当前数字上写“ ”( 21),这给了我错误。” is odd
将使我成真。等等。
现在,对于具有很少命令的简单应用程序,即使是简单的应用程序switch
也可以处理命令。但是,如果我想要扩展性,我将如何实现功能?我是否使用命令模式?我是否为该语言构建简单的解析器/解释器?如果我需要更复杂的命令(例如“ multiply 5 until >200
”)怎么办?没有重新编译就可以扩展它(添加新命令)的简单方法是什么?
编辑:为了澄清一些事情,我的最终目标不是制作类似于WolframAlpha的东西,而是制作一个(数字列表)处理器。但是,我想一开始慢慢开始(以单个数字开始)。
我想到的是与使用Haskell处理列表的方式类似的方法,但它是一个非常简单的版本。我想知道像命令模式(或等效命令)之类的内容是否足够,还是我必须制作一个新的迷你语言和一个解析器来实现我的目标?
Edit2:感谢所有答复,所有这些对我都非常有帮助,但是Emmad Kareem对我的帮助最大,所以我选择它作为答案。再次感谢!