gpt4 book ai didi

lexer - 如何定义可以在ANTLR4中以多种词法模式出现的标记?

转载 作者:行者123 更新时间:2023-12-03 23:35:54 24 4
gpt4 key购买 nike

我正在学习 ANTLR4 并尝试使用词汇模式。如何让相同的标记出现在多个词法模式中?作为一个非常简单的例子,假设我的语法有两种模式,我想在这两种模式中匹配空格和行尾,例如我怎么能不以 WS_MODE1 和 WS_MODE2 结尾。有没有办法在两种情况下重用相同的定义?无论模式如何,我都希望在所有空白的输出流中获得 WS token 。这同样适用于可以出现在两种模式中的 EOL 和其他关键字。

最佳答案

规则必须有不同的名称,但您可以使用 -> type(...) lexer 命令赋予它们相同的类型。

WS : [ \t]+;

mode Mode1;

Mode1_WS : WS -> type(WS);

mode Mode2;

Mode2_WS : WS -> type(WS);

即使 Mode1_WSMode2_WS不是 fragment规则,代码生成器会看到 type命令并知道您重新分配了它们的类型,因此它不会为它们定义标记。

关于lexer - 如何定义可以在ANTLR4中以多种词法模式出现的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15807322/

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