1

SQL Server 構文でParseKit トークン化を使用しようとしています。次の例を見てみましょう。

CREATE PROCEDURE [dbo].[test]
  @MyId UNIQUEIDENTIFIER
AS
BEGIN
  -- something something
END
GO

私はコメント(および複数行のコメント)を設定するために以下を使用しています:

PKTokenizer *t = [PKTokenizer tokenizerWithString: [inputString substringWithRange: range]];

// SQL does not support // comments.
[t.commentState removeSingleLineStartMarker: @"//"];

// But it does support -- comments.
[t setTokenizerState:t.commentState from: '-' to:'-'];
[t.commentState addSingleLineStartMarker: @"--"];

[t setTokenizerState: t.commentState from: '/' to: '/'];
[t.commentState addMultiLineStartMarker: @"/*" endMarker: @"*/"];

これは、SQL コメントの処理のサポートをセットアップします。現在、 などのパラメーターを検出するためのサポートを追加しようとしてい@MyIdます。現在、トークナイザーはこれらを単語として@取得しますが、文字列値には含めません。私の考えは、次のようにして a を使用しようとすることでしたdelimitState:

[t.delimitState addStartMarker: @"@" endMarker: @" " allowedCharacterSet: [NSCharacterSet alphanumericCharacterSet]];

次に を確認しtoken.isDelimitedStringますが、何も検出されないようです。

私はこれについて間違っていますか?@wordstateにどのように含めることができるかについて何か提案はありますか?

4

1 に答える 1

1

ParseKitの開発者はこちら。

@MyId単一の区切り文字列トークンとして一致させるには、次を試してください。

[t setTokenizerState:t.delimitState from:'@' to:'@'];
[t.delimitState addStartMarker:@"@" endMarker:nil allowedCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
于 2013-06-21T15:21:15.303 に答える