gpt4 book ai didi

antlr - ANTLR 中 AST 的可选重写规则

转载 作者:行者123 更新时间:2023-12-02 02:29:33 24 4
gpt4 key购买 nike

我在 ANTLR 中构建 AST 时遇到问题(我使用的是 ANTLR 3.2、ANTLRWorks 1.4)。

这是我的语法:

classDeclaration
:
(
'class' n=IDENTIFIER ('extends' e=IDENTIFIER)?
'{'

'}'
)
-> ^(CLASSDECLARATION ^(NAME $n) ^(EXTENDS $e)
;

问题出现在类的可选部分 — ('extends' e=IDENTIFIER)?

所以语法适用于此类声明:

class Test1 extends AbstractTest1 {

}

当我排除 extends 部分时失败,如下所示:

class Test2 {

}

ANTLR 在此片段之前停止并在控制台中给出此异常:javax.swing.text.BadLocationException: View 未表示位置

我如何指向 ANTLR 来处理重写规则 ^(EXTENDS $e) 作为可选?

最佳答案

问题解决了。没有什么棘手的,只需要使用常见的 RegExp 语法:

^(EXTENDS $e)?

关于antlr - ANTLR 中 AST 的可选重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297801/

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