如何解析具有可变参数号的函数?
How to parse a function with a variable argument number?
到目前为止,我的解析器能够使用诸如这样的表达式解析具有已知参数编号的函数
<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 class X 并像在普通 Java.
中一样使用它
- 初始化需要的东西。
- Return填充对象。
如果您仍然需要工作示例,您可能会发现 this 有用。
到目前为止,我的解析器能够使用诸如这样的表达式解析具有已知参数编号的函数
<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 class X 并像在普通 Java. 中一样使用它
- 初始化需要的东西。
- Return填充对象。
如果您仍然需要工作示例,您可能会发现 this 有用。