gpt4 book ai didi

antlr - 如何在 Antlr 语法中抛出异常

转载 作者:行者123 更新时间:2023-12-01 02:31:47 28 4
gpt4 key购买 nike

我有这种语法,

locationPath returns [CustomParser xpathParser]  
:^(LOCATION_PATH relativeLocationPath {**Want to throw a exception if this condition matches**})
|^(LOCATION_PATH absoluteLocationPath {$xpathParser=$absoluteLocationPath.xpathParser;})
;

有什么方法可以做到?我试过这个
locationPath returns [CustomParser xpathParser]  
:^(LOCATION_PATH relativeLocationPath {throw new Exception})
|^(LOCATION_PATH absoluteLocationPath {$xpathParser=$absoluteLocationPath.xpathParser;})

但是有了这个,生成的代码会给出编译错误。因为该方法 loactionapth 在方法签名中没有抛出线索。

最佳答案

只有一种方法可以做到这一点:抛出一个未经检查的异常:

locationPath returns [CustomParser xpathParser]  
: ^(LOCATION_PATH relativeLocationPath) {throw new RuntimeException("No way!");}
| ^(LOCATION_PATH absoluteLocationPath {$xpathParser=$absoluteLocationPath.xpathParser;})
;

如果编译器仍然提示(我不记得了,我现在无法测试),添加一个 if(true)在它面前:
locationPath returns [CustomParser xpathParser]  
: ^(LOCATION_PATH relativeLocationPath) {if(true) throw new RuntimeException("No way!");}
| ^(LOCATION_PATH absoluteLocationPath {$xpathParser=$absoluteLocationPath.xpathParser;})
;

关于antlr - 如何在 Antlr 语法中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783753/

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