gpt4 book ai didi

antlr - ANTLR4 中的语义谓词?

转载 作者:行者123 更新时间:2023-12-04 00:52:56 28 4
gpt4 key购买 nike

您如何将用 ANTLR 3 编写的这部分代码翻译成 ANTLR 4?

expr: (Identifier '.')=> (refIdentifier)
| (Identifier '!')=> (refIdentifier)
| (Identifier '=>')=> (lambdaExpression);

我的意思是这种语义谓词现在似乎不存在。我可以用什么代替?

最佳答案

在 ANTLR v4 中,不再有门控语义谓词,{ ... }?=> ,并且也不再有句法谓词,( ... )=> ,因为 v4 中使用的解析算法可以解决歧义(不再需要此类谓词)。所以,这应该只适合你:

expr
: refIdentifier
| refIdentifier
| lambdaExpression
;

注意 v4 中只有一种谓词:语义谓词, { ... }? .例如,如果您需要检查 token 的内容,您可以这样做:
id_capitals_only
: {_input.LT(1).getText().matches("[A-Z]+")}? ID
;

ID
: [a-zA-Z]+
;

编辑

正如 Sam Harwell 在评论中提到的:

The semantic predicates {...}? in V4 work like the gated semantic predicates did in V3. The ungated predicates from V3 do not have a counterpart in ANTLR 4.

关于antlr - ANTLR4 中的语义谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13661754/

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