iPhone用のパーサーParsekitを使用する場合。二重引用符に対して含めることは可能ですか?そして、特別なBNFの一部であるもの?
(定義された文法でシーケンスをエスケープすることは可能ですか?)
@start = doublequote+;
doublequote= '"'
ParseKitの開発者はこちら。
デフォルトでは、組み込みの
QuotedString
パーサー(
QuotedString
トークンと一致します)を使用して、引用符で囲まれた文字列と簡単に照合できます。
@start = quotes;
quotes = QuotedString+;
次のような入力と一致します:
"foo" 'bar' "baz"
3つの引用符付き文字列:
"foo"
、
'bar'
、
"baz"
したがって、これはデフォルトで、ParseKitトークナイザー(
PKTokenizer
クラス)が
QuotedString
または
"
を検出したときに
'
トークンを生成することを示しています。
デフォルトのトークナイザーの動作の詳細については、
ParseKit tokenization documentationを参照してください。
ただし、引用文字(
"
、
'
)を、引用符付き文字列の開始または終了を示すのではなく、スタンドアロンシンボルとして認識させる場合は、最初にトークナイザの動作を変更する必要があります。
コードでは、
PKTokenizer
オブジェクトのメソッドを呼び出して、トークナイザーの動作を変更します。
文法では、トークナイザーディレクティブを使用してトークナイザーの動作を変更します。
トークナイザーディレクティブは、
@
文字で始まる文法の上部に配置される特別なルールです。この場合、トークナイザーによってスタンドアロンシンボルトークンとして認識される文字を変更します。具体的には、
@symbolState
トークナイザーディレクティブを使用して、2つの文字を記号として追加します。
あなたはそれをあなたの文法でそれを次のように変更することによって行うことができます:
@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)+;
上記と同じ入力の場合、別々の引用符と単語を一致させます:
"
、
foo
、
"
、
'
、
bar
、
'
、
"
、
baz
、