当前位置: 首页 > 面试题库 >

解析嵌套表达式的java方法

胡沈义
2023-03-14
问题内容

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


问题答案:

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

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

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


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



 类似资料:
  • 问题内容: 我试图解析嵌套的布尔表达式,并分别获取表达式内的各个条件。例如,如果输入字符串是: (A = a OR B = b OR C = c AND((D = d AND E = e)OR(F = f AND G = g))) 我想以正确的顺序得到条件。即 D = d AND E = e OR F = f AND G = g AND A = a OR B = b OR C = c 我正在使用A

  • 我想将带有嵌套大括号的原始字符串解析为多维数组。下面我添加了一些有效的示例代码。但主要问题是,我的正则表达式只捕获第一个匹配的组,而忽略了另一个发生。 非常感谢您的帮助。 代码: 原始字符串(data.txt): 代码输出: 但例外输出:

  • 问题内容: 我必须与API进行交互,并且响应格式(根据我的阅读)似乎结构不良。我发现一个Google 网上论坛在这里回答了一个类似的问题,但是我在实现Response类来处理Gson.fromJson时遇到了麻烦。有没有我想念的例子? 问题答案: JSON对象可以由或Javabean类表示。这是一个使用Javabean的示例。 如下使用它:

  • 问题内容: 我在以下位置阅读有关新功能的信息:http : //www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.html 我看到了下面的示例: 使用匿名类: 使用Lambda: 如果某人想要在匿名类中实现多个方法,该怎么办,例如: … 等等? 问题答案: 你可以通过使用辅助程序接口将多方法接口与lambda一起使

  • 我正在寻找一个JAVA库来解析 我的要求: 支持所有的值类型(例如int,双,布尔,String等) 支持所有已知的数学 有什么建议吗?

  • 如果希望在匿名类中实现多个方法,那么使用将如何处理,例如: …等等?