You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Lexical定义的带引号字符串支持空字符解析?

如何让带引号字符串的词法规则支持空字符?

现有两组词法定义:

lexical DQChr = !["] | ["]["];
lexical String = "\"" DQChr* "\"";

目前能正常解析这些场景:

parse(#String,"\"a\"");
parse(#String,"\"\"");

但如果字符串内容包含空字符(比如"\0"),就会触发解析错误:

parse(#String,"\"�\"");

解决方法

原来的DQChr规则里,!["]在部分词法分析器实现中会默认把空字符(\x00)排除在外,导致空字符无法被识别为合法的字符串内容。我们只需要修改DQChr的定义,明确允许空字符即可:

方案一:直接显式包含空字符

lexical DQChr = [\x00] | !["] | ["]["];

方案二:用any关键字匹配任意字符(自然包含空字符),再排除双引号

lexical DQChr = (any - [""]) | ["]["];

修改后,DQChr就能匹配空字符、除双引号外的所有普通字符,以及转义的双引号,这样String规则就可以正常解析包含空字符的带引号字符串了。

内容的提问来源于stack exchange,提问作者Steven Klusener

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:58:09