解析嵌套表达式的java方法


问题内容

可以说我已经编写了一个函数来评估简单的数学运算,并且在字符串中有一些用户输入,例如:“ 1 + [2 + [3 +
4]]”如何解析这些方括号并首先提取最里面的文本(3 + 4),对其求值,然后解析外部花括号(2 +
7)?我对Regex搜索和替换有基本的了解,但是我知道他们不会像这样进行递归。我想要一些基本的Java代码来执行此操作,如果可以避免的话,还不需要另一个jar
/ API。


问题答案:

实现目标的最干净的方法是为此目的编写Lexer和Parser。对于算术表达式,从头开始编写递归下降解析器并不难。

网上有许多代码示例。这是一个可以激发灵感的示例

Lexer在那里可以规范化您的输入并将其抽象为令牌流。这样,您的解析器只需要处理令牌,而不必另外处理空白问题和其他令人讨厌的事情。


基于堆栈的高级算法的两个示例另一个示例显示递归下降方法。