gpt4 book ai didi

antlr4 - ANTLR4 中的无序子产品

转载 作者:行者123 更新时间:2023-12-04 05:54:50 27 4
gpt4 key购买 nike

我想在 ANTLR 中指定一个产品,其子产品的顺序无关紧要。请注意,我希望每个子制作都出现一次。完成此任务的蛮力方法如下所示:

grammar Foo;

r : (A B) | (B A) ;

A : 'a' ;
B : 'b' ;

随着更多的子制作被添加,排列的数量增加...... n!/(n-k)!

grammar Foo2;

r : (A B C) | (A C B) | (B A C) | (B C A) | (C A B) | (C B A) ;

A : 'a' ;
B : 'b' ;
C : 'c' ;

显然上述方案并不实用。 ANTLR 中是否有一个结构以更简洁的方式描述这样的排列?

最佳答案

不,在 ANTLR 中无法描述产生式中的排列。您需要匹配 ABC 三次,然后使用 listener检查所有三个标记是否完全匹配一次。

您可以使用自定义代码和谓词在您的语法中执行此操作,但这会使您的语法很难阅读:最好使用监听器来执行此操作。

关于antlr4 - ANTLR4 中的无序子产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25876386/

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