gpt4 book ai didi

parsing - 如何捕获没有引号字符的字符串

转载 作者:行者123 更新时间:2023-12-05 00:36:22 25 4
gpt4 key购买 nike

我试图在没有引号的情况下捕获带引号的字符串。我有这个终端

%token <string> STRING

和这个生产
constant:
| QUOTE STRING QUOTE { String($2) }

连同这些词法分析器规则
| '\''       { QUOTE }
| [^ '\'']* { STRING (lexeme lexbuf) } //final regex before eof

它似乎正在解释导致 QUOTE 的所有内容。作为单个词素,不解析。所以也许我的问题出在语法的其他地方——不确定。我会以正确的方式解决这个问题吗?在我尝试从字符串中排除引号之前,它解析得很好。

更新

我认为以下词法分析器规则可能存在一些歧义
let name = alpha (alpha | digit | '_')*
let identifier = name ('.' name)*

以下规则在 STRING 之前
| identifier    { ID (lexeme lexbuf) }

有没有办法消除这些歧义而不在 STRING 中包含引号?正则表达式?

最佳答案

在词法分析器中对字符串和数字文字等常量进行语义分析是很正常的,因此您可以考虑为字符串常量使用 lex 规则,例如

| '\'' [^ '\'']* '\'' 
{ STRING (let s = lexeme lexbuf in s.Substring(1, s.Length - 2)) }

关于parsing - 如何捕获没有引号字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216412/

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