1

我正在尝试将ParseKit 的标记 与 SQL Server 语法一起使用。如果您看一下以下示例:

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. 当前标记器将这些作为单词提取,但不包含@在字符串值中。我的想法是尝试delimitState通过做来使用:

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

然后检查token.isDelimitedString,但似乎没有任何反应。

我要解决这个问题了吗?关于如何@在我的单词状态中包含的任何建议?

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 回答