是否可以在Antlr4中将令牌拆分为2?

问题描述 投票:0回答:1

为了突出显示,我需要将一个令牌分成2个,我有一个看起来像这样的令牌:

ID_INTERP: '$' IDEN;

但是我想用与标识符不同的方式突出显示美元符号,是否可以将此令牌分为两个,一个带有美元符号,另一个带有标识符?我知道我可以在特定条件下将整个令牌更改为其他类型,但是我希望能够添加和更改其包含的文本,基本上是要更改令牌流,因此不必说]

ID_INTERP [“ $ foo”]

它将看到类似这样的内容:

DOLLAR_SIGN [“ $”] IDEN [“ foo”]

为了突出显示,我必须能够将一个令牌分成2个,我有一个看起来像这样的令牌:ID_INTERP:'$'IDEN;但是我想突出显示美元符号,而不是...

antlr antlr4
1个回答
1
投票

对于给定的匹配,可以扩展令牌源以发出多个令牌。我已经使用此想法为词法分析器规则DOT_IDENTIFIERsee the MySQL grammar in the MySQL Workbench parser)生成2个标记。匹配时,它会推送一个点令牌并将结果设置为IDENTIFIER,从而为单个规则有效地创建2个单独的令牌。

© www.soinside.com 2019 - 2024. All rights reserved.