我正在尝试将ParseKit's Tokenization与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
,但它似乎没有选择任何。
我是不是错了?关于我如何在@
中包含{{1}}的任何建议?
答案 0 :(得分:1)
ParseKit的开发人员。
要将@MyId
与单个分隔的字符串标记相匹配,请尝试:
[t setTokenizerState:t.delimitState from:'@' to:'@'];
[t.delimitState addStartMarker:@"@" endMarker:nil allowedCharacterSet:[NSCharacterSet alphanumericCharacterSet]];