Parsekit:如何匹配个别引用字符?
当使用parsing器Parsekit的iPhone。 是否可以包括在一个双引号? 而那些属于BNF特殊的东西呢? (是否有可能转义定义的语法序列?)
@start = doublequote+; doublequote= '"'
ParseKit的开发者在这里。
默认情况下,您可以使用内置的QuotedString
parsing器(它将匹配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
"