因此,我们定义了一组 API,最终用户(准确地说是职能人员)将使用它们来执行数据转换。例如,对于输入为 Name = "XyZ"
,功能人员可以定义一个转换规则,例如 @Text.UpperCase(Name)
,以将他们获得的 name
的每个值转换为大写。它的工作方式是,@
之后定义的每个单词都是数据类型,.
之后定义的每个单词都是一个方法,后跟括号和一个值。虽然这是我们的计划,但我正在尝试弄清楚是否:
1> 我们真的需要一个语法来解析这些输入吗?
2> 如何安排嵌套调用,例如 @Text.UpperCase(@Text.trim("XyZ "))
?
最佳答案
您应该定义语法以确保您知道允许用户输入的内容。
如果您的语法足够简单(例如,您的用户可以输入的唯一内容是对命名变量的有效函数调用),您可能不需要解析器生成器。在这种情况下,临时解析可能就足够了。这对于您的简单示例来说已经足够了。
如果您的语法具有适度的复杂性(例如嵌套调用),you can code a recursive descent parser pretty easily that will do the job.
如果您的语法变得复杂(用户肯定会要求更多功能),您可能需要一个解析器生成器。
如果是我,按照你所说的要求,我会在编写一个语法分析器生成器接受的语法后构建递归下降版本。这在用户手册中也是有用的文档。
关于java - 关于在运行时执行/解析自定义方法的建议 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9624771/