解析嵌套表达式的java方法

标签 java parsing

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

最佳答案

实现您的目标的最简洁的方法是为此目的编写一个 Lexer 和一个 Parser。写一个 recursive descent parser对于算术表达式,从头开始并不难。

网络上有很多代码示例。 This is an example可以用来激发灵感。

Lexer 用于规范化您的输入并将其抽象为标记流。这样,您的解析器只需要处理标记,而不必额外处理空白问题和其他烦人的事情。

Two examples对于基于堆栈的高级算法,another example这显示了递归下降方法。

关于解析嵌套表达式的java方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251781/

相关文章:

c++ - 非常基础的英语语法解析器

java - 如何通过 Soap api 获取 Jira 中的项目版本描述

java - JAVA 中 URL 背后的逻辑

用于 TCP 套接字的基于 C++ 流的 JSON 解析器

python - Python 3.5 的语法是 LL(1) 吗?

javascript - 在 Javascript 中迭代 JSON 响应

java - Java 中的泛型 - 实例化 T

java - ListView 不在较小的屏幕上显示项目

java - 通过多个方法调用显示值而不覆盖表中的值

javascript - 使用 JavaScript 解析 URL