0

我是新来的,以提高精神和玩弄 microSQL-Parser。
无法解析带引号的字符串,例如:'It's driving me crazy' 在具有以下语法定义的示例中:

string_literal = lexeme_d[ch_p( '\'' ) >> +(anychar_p - ch_p( '\'' )) 
                       >> ch_p( '\'' )] ;

我已经尝试了很多,但找不到正确的方法。有人知道怎么做吗?

4

1 回答 1

1

上面的代码对应于正则表达式:('[^']+' 它不会匹配空字符串'',但这是另一个问题)。

引号通过将它们加倍嵌入到 SQL 字符串中,因此您实际上想要将字符串提供给它:'It''s driving me crazy'并且您可以使用正则表达式:'(''|[^'])*'

对应于以下代码:

string_literal = lexeme_d[ch_p('\'') >>
    *(ch_p('\'') >> ch_p('\'') || +(anychar_p - ch_p('\''))) >>
    ch_p('\'')];
于 2012-08-08T20:15:46.423 回答