到目前为止,我的解析器能够使用这样的表达式来解析具有已知参数编号的函数
<FUNCTION><OPENPAR> son=expression() <COMMA> son1=expression() <CLOSEPAR>
此外,可选参数也可以轻松处理
<FUNCTION><OPENPAR> son=expression() <COMMA> son1=expression() [<COMMA> son2=expression()] <CLOSEPAR>
但是,我无法找到有关捕获未知数量参数的可能性的文档。我的猜测是这样的
<FUNCTION><OPENPAR> son=expression() <COMMA> son1=expression() [<COMMA> son2=expression()]+ <CLOSEPAR>
但在这种情况下,我不知道应该如何捕获这些多个参数。
有什么想法或例子吗? (或者如果有人知道这是不可能的)
最佳答案
假设至少需要一个参数。然后,您需要类似的东西:
private X myFunction():
{
X result = new X();
}
{
<FUNCTION>
<OPENPAR>
son=expression() { result.params.add(son); }
( <COMMA> son=expression() { result.params.add(son); } )*
<CLOSEPAR>
{ return result; }
}
总而言之,我的方法是:
- 创建结果 Java 类 X 并像在普通 Java 中一样使用它。
- 从一开始就初始化所需的内容。
- 返回填充的对象。
如果您仍然需要工作示例,您可能会找到 this有用。
关于java - 如何解析带有可变参数号的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932200/