gpt4 book ai didi

java - 如何使用 Java 中命令的正则表达式从字符串中读取函数或有哪些替代选项?

转载 作者:行者123 更新时间:2023-12-05 00:42:26 25 4
gpt4 key购买 nike

我想在字符串中使用类似结构的函数来给出命令。比如我有三个函数:

go() do() hello()

而且这些函数的主体也可以包含相同的函数。

"go(){do(){go}} do()"

这些函数也可以使用参数。我怎样才能在正则表达式中做到这一点。这就像创建一种编程语言。

基本上,这些不是方法,而是由同一个抽象类实现的类。每个类都有一个参数,由相同类的列表类型组成。我的意图就像一个接受括号的计算器。
5* (2+5-(5*9))

我的命令可能会变得复杂:

go(true, 4){do(), hello(){go(){}}

最佳答案

如果您想解析具有未定义递归深度的递归语言,则不能使用仅解析常规语言并使用 Deterministic Finite Automaton 实现的正则表达式.

使用解析器生成器,如 ANTLR相反,它支持非常规语法。它包括各种现有编程语言的语法文件,您可以将其用作解析自己语言的示例。

更新:

如果这看起来太大或太多而无法学习您想要做什么,您可以在循环中调用正则表达式替换并从内到外解析嵌套结构。伪代码:

while true:
search any innermost bracket pair (that doesn't contain nested brackets) with regex
if found:
parse content of innermost bracket pair
remove bracket and its content from input or substitute with something w/o brackets
else:
parse content of remaining input
exit loop

关于java - 如何使用 Java 中命令的正则表达式从字符串中读取函数或有哪些替代选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74081952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com