gpt4 book ai didi

java - 验证自定义语法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:22:09 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个用户可以输入的自定义语法:IF(ROW1>ROW2;4;ROW1+ROW2)或者更复杂的东西:IF(ROW1>ROW2;IF(ROW1>ROW2;4;ROW1/IF(ROW1>ROW2;4;ROW1-ROW2));ROW1+ROW2)

我认为第一个示例的输出结果很清楚:如果 ROW1 大于 ROW2,则结果将为 4,否则 ROW1+ROW2。

如果我不能使用任何外部库,那么在 Java 中验证这种自定义语法的最佳方法是什么?据我所知,RegEx 无济于事,因为它无法处理嵌套的括号。

我唯一的想法是:

  • 验证括号是否平衡;
  • 验证运算符的邻居(关系和计算),只能有行、数字,如果是关系其他 IF 语句;
  • 最后验证 IF 语句的结构。(递归);

所有这些都将在解析器中完成,该解析器将逐一检查每个字符。

进行此验证是否有更明智的想法?

最佳答案

如果使用 ANTLR 不是评论中建议的选项,我会使用堆栈并转换您的表达式 from infix to postfix form .

在上面链接中的文章中,仅观察到数学运算,但您可以在代码中扩展可能的运算,添加 if 和比较运算符。

然后您可以使用堆栈计算您的表达式。

关于java - 验证自定义语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383350/

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