Parsekit:如何匹配个别引用字符?

当使用parsing器Parsekit的iPhone。 是否可以包括在一个双引号? 而那些属于BNF特殊的东西呢? (是否有可能转义定义的语法序列?)

@start = doublequote+; doublequote= '"' 

ParseKit的开发者在这里。

默认情况下,您可以使用内置的QuotedStringparsing器(它将匹配QuotedString标记)轻松地匹配引用的string:

 @start = quotes; quotes = QuotedString+; 

这将匹配像"foo" 'bar' "baz"

作为三个引用的string: "foo"'bar'"baz"

因此,这表明默认情况下,ParseKit标记器( PKTokenizer类)在遇到" or '时产生QuotedString标记。

有关默认标记器行为的更多详细信息,请阅读ParseKit标记化文档 。


但是,如果要将引号字符( "' )识别为独立符号,而不是指示引号string的开头或结尾,则必须首先更改标记器行为。

在代码中,您可以通过调用PKTokenizer对象上的方法来改变标记器的行为。

在语法中,您使用tokenizer指令来改变标记器的行为。

Tokenizer指令是放置在语法顶部的特殊规则,以@字符开头。 在这种情况下,您想更改哪些字符被标记器识别为独立符号标记。 具体来说,你想添加两个字符作为符号与@symbolState tokenizer指令。

你可以在你的语法中做到这一点,将其更改为:

 @symbolState = '"' "'"; // a tokenizer directive stating ' and " should be recognized as standalone symbol tokens // (by default they are start- and end-markers for quoted string tokens) @start = stuff; stuff = (Word | Symbol)+; 

给出与上面相同的input,您可以匹配单独的引号和单词: "foo"'bar'"baz "