gpt4 book ai didi

antlr - 跳过匹配的词法元素或标记的部分

转载 作者:行者123 更新时间:2023-12-04 05:19:09 25 4
gpt4 key购买 nike

我想匹配“{NUM}”,然后让词法分析器规则返回“NUM”。所以,我试过了

NUM : ('{' { skip(); })  'NUM'  ('}' { skip(); });

但是,这似乎跳过了所有内容并在比赛中返回空。是否可以跳过词法分析器匹配的部分内容?

Ant 金服 3.4

最佳答案

调用 skip()规则中的任何地方都会从词法分析器中删除整个标记,而不仅仅是某些字符。

你可以做的是:

NUM
: '{NUM}' {setText("NUM");}
;

或者,如果 NUM是可变的,请执行以下操作:
NUM
: '{' 'A'..'Z'+ '}' {setText($text.substring(1, $text.length() - 1));}
;

从 token 中删除第一个和最后一个字符。

编辑

smartnut007 wrote:

Is there an equivalent way to do this for Tokens ?



如果您的意思是如何更改解析器规则中的标记文本,请尝试以下操作:
parser_rule
: LEXER_RULE {$LEXER_RULE.setText("new-text");}
;

LEXER_RULE
: 'old-text'
;

关于antlr - 跳过匹配的词法元素或标记的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869958/

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