gpt4 book ai didi

function - 用于定义/调用多参数函数的 ANTLR 语法

转载 作者:行者123 更新时间:2023-12-04 14:18:17 24 4
gpt4 key购买 nike

我有一个语法,我想在其中包含多参数函数(例如 f(x,y) )。我在我自己的树解析器中使用 AST 输出。现在我的参数列表生产是

paramdefs: (ID COMMA)* ID ;

这工作正常,但 AST 输出
z(x,y)=expression


(FUNC (z)(x)(,)(y)(expression))

(即它非常平坦)。
FUNC在一般情况下,CommonTree 的 child 是 { function name , parameter , comma , parameter , defined expression },对于任意数量的参数。我希望参数列表是一个单独的子项并且没有逗号(这将使遍历树更容易)。

理想情况下,这就是树的样子:
(FUNC (z)((x)(y))(expression))

(注意逗号元素的缺失以及 xy 的分组。

语法的相关相关领域:
funcdef: ID  '(' paramdefs ')' '=' expr -> ^(FUNC ID paramdefs expr) ;

paramdefs: (ID COMMA)* ID ;

最佳答案

要创建这样的树:

enter image description here

对于输入 z(x,y)=expr , 请执行下列操作:

grammar ...

...

tokens {
FUNC;
PARAMS;
}

...

funcdef
: ID '(' paramdefs ')' '=' expr -> ^(FUNC ID paramdefs expr)
;

paramdefs
: (ID COMMA)* ID -> ^(PARAMS ID+)
;

关于function - 用于定义/调用多参数函数的 ANTLR 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644800/

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