gpt4 book ai didi

c# - 字符串标记的 Antlr 标记定义

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:47 25 4
gpt4 key购买 nike

我在为我的 Antlr 语法定义字符串标记时遇到问题。

我目前使用的是:

String_tok : '"' ( ~["\n\r] | '\\"')* '"' ;

它似乎适用于这样的标记:"This is a STRING"

但是,它不适用于此:"This is a\"STRING\""

我已经尝试了一些变体,我可以得到在一个上工作但在另一个上不行的东西。如果能帮我解决这个问题,我将不胜感激。谢谢。

最佳答案

以下应该有效:

String_tok : '"' ('\\' ["\\] | ~["\\\r\n])* '"' ;

基本上,交替的第一部分让您使用 \"\\ 转义,第二部分采用其他所有内容。这意味着排除 \ 也是字符。

在您的原始模式中,字符串中的 \ 字符被 ~["\n\r] 表达式消耗,并且永远不会进入 '\\"' 表达式。

关于c# - 字符串标记的 Antlr 标记定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894025/

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