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 文字列を 2 倍にすることで埋め込まれているため、実際には string: をフィードする'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 に答える