关于在运行时执行/解析自定义方法的建议 - Java

时间:2012-03-08 20:53:23

标签: java parsing

因此,我们定义了一组API,最终用户(精确的功能人员)将用于执行数据转换。例如,对于输入Name = "XyZ",功能人员可以定义转换规则,如@Text.UpperCase(Name),将name获取的每个值转换为大写。它的工作方式是在@之后定义的每个单词都是数据类型,在.之后定义的每个单词都是一个后跟括号和值的方法。虽然这是我们计划的,但我想弄清楚是否:

1>我们真的需要一个用于解析这些输入的语法吗? 2 - ;如何安排嵌套调用,如@Text.UpperCase(@Text.trim("XyZ "))

1 个答案:

答案 0 :(得分:1)

您应该定义一个语法,以确保您知道允许用户键入的内容。

如果您的语法足够简单,您可能不需要解析器生成器(例如,您的用户可以键入的唯一内容是对命名变量进行有效的函数调用)。在这种情况下,临时解析可能就足够了。这对你的简单例子来说已经足够了。

如果您的语法具有适度的复杂性(例如,嵌套调用),you can code a recursive descent parser pretty easily that will do the job.

如果你的语法变得复杂(用户肯定会要求更多的功能),你可能需要一个解析器生成器。

如果是我,根据你所说的要求,我会在编写一个语法之后建立递归下降版本,我有一个解析器生成器可以接受。这也是ahem用户手册中的有用文档。