用于解析嵌套表达式的java方法

Bla*_*ack 7 java parsing

假设我已经编写了一个函数来评估一个简单的数学运算,并且我在字符串中有一些用户输入,例如:"1 + [2 + [3 + 4]]"如何解析这些方括号并首先提取最里面的文本(3 + 4),评估它,然后解析外括号(2 + 7)?我对正则表达式搜索和替换有基本的了解,但我知道他们不会像这样做递归.我想要一些基本的java代码来做到这一点,如果我可以避免它,还不是另一个jar/API.

emb*_*oss 10

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

网上有很多代码示例.这是一个可以用于灵感的例子.

Lexer可以将您的输入规范化并将其抽象为令牌流.这样,您的Parser只需要处理令牌,而不必另外处理空白问题和其他恼人的事情.

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