iphone - Parsekit:個々の引用文字を一致させる方法は?

iphone objective-c ios parsekit

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
関連記事

iphone - iPhone-低メモリ状態に対処する方法

iphone - プログラムでキーボードを閉じるにはどうすればよいですか?

iphone - デバイスがxcodeオーガナイザーウィンドウで認識されない

iphone - シーケンシャルUIView変換

iphone - UITextFieldsにテキストが追加されたときに、UIReturnKeyGoとUIReturnKeyNextを切り替えるにはどうすればよいですか?

c# - UITableViewでランダムに「NIBをバンドルでロードできませんでした」

iphone - PrintScreenを使用したり、画面の一部に画像を保存したりできますか?

iphone - プロパティtxtname(uiTextView *)のタイプがivar txtname(uiTextView)と一致しません

iphone - ビューとWebサービスの同期呼び出しの読み込みに関する問題

iphone - AppStoreでのホームオートメーションアプリのアップロード