gpt4 book ai didi

antlr4 - 标签 x 分配给一个不是集合的 block

转载 作者:行者123 更新时间:2023-12-03 23:48:09 25 4
gpt4 key购买 nike

尝试升级 antlr4,我在语法中有 2 行产生错误消息:

label tok assigned to a block which is not a set



专门针对如下所示的语法行:
contextRadius: tok=('radius' 'change-authorize-nas-ip') (IP4_ADDRESS|IP6_ADDRESS) 'encrypted' 'key' ID 'port' INT_TOK 'event-timestamp-window' INT_TOK 'no-reverse-path-forward-check'
;

这究竟意味着什么 - 成为“未设置的块”并且有通用的解决方案吗?

最佳答案

不正确的标签如下:

tok=('radius' 'change-authorize-nas-ip')

在这种情况下,ANTLR 不知道是否分配 token 'radius'或 token 'change-authorize-nas-ip'到标签 tok .从 ANTLR 4 开始,不是生成语义不明确的代码,而是产生错误。您需要删除标签 tok或将其移至预期项目。换句话说,使用以下三种形式之一。
('radius' 'change-authorize-nas-ip')
(tok='radius' 'change-authorize-nas-ip')
('radius' tok='change-authorize-nas-ip')

语法块上允许使用标签的原因是为了支持以下项目。该块是一个集合,这意味着可以折叠内容以匹配一组固定的允许标记中的一个标记。然后将与集合匹配的特定项目分配给 x .
x=('a' | 'b')

关于antlr4 - 标签 x 分配给一个不是集合的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381187/

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