問題タブ [parsekit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - ParseKit - 無限再帰に入る SQLite パーサー
私のアプリケーションでは、SQLiteパーサーを構築しようとしています。私のアプリケーションは Objective-C を使用しているので、ParseKitは良い選択肢のようです。SQLite の構文図を読み、それらに基づいて文法を作成しました。ただし、この文法を使用して何かを解析しようとすると、パーサーは無限再帰に入ります。
必要なステートメントは、SELECT、INSERT、UPDATE、および DELETE だけです (SELECT が必要なのは、他の人が参照しているためです)。私の @start は、セミコロンで区切られた複数のステートメントを処理するように設計されています。
ステートメントは次のとおりです。
そして、それらをサポートする表現:
名前、別名:
その他の演算子など:
基本タイプ:
そしてEXPR:
コードをステップ実行すると、基本的なパスは @start -> statement -> select_stmt -> select_core -> result_column -> expr -> expr -> expr... でした。
PKParser の matchAndAssemble: と PKParser/Subclass の allMatchesFor: の間で約 8 ~ 9,000 回呼び出した後、通常は EXC_BAD_ACCESS エラーが原因で何かが停止します (その後、LLDB も何もできなくなります)。
PS: 「ああ、本当にこれを使用する必要があります」という回答を投稿する場合は、A) 私は Objective-C が好きです。使わないように言わないでください。それは私の選択です。私の反応はおそらく暴言になるでしょう。B) SQLite のソースを掘り下げて、パーサーを使用しようとしました。私はどこにも行きませんでした。私がそれを使用する必要があると思われる場合は、パーサーのソースを他の依存関係のない単一のファイルとして投稿してください。
xcode - Xcodeフラグが設定されている場所が見つかりません
最新のXcodeリリース(4.6?)でParseKitをアーカイブし、使用されていないフラグで停止し続けようとしています。
プロジェクトを再確認しましたが、異常なフラグが設定されていないようです。私はそれが何を意味するのかグーグルで調べましたが、何も見つかりません。clang -cc1 --help
私はそこに何かが欠けているかもしれないことを認めますが、あまり役に立たないようです。
誰かが最新のXcodeでParseKitをアーカイブすることに成功しましたか?ビルドプロセスからそのフラグを削除するにはどうすればよいですか?
明確にするために:ParseKitを依存プロジェクトとして追加したり、デバッグビルドを作成したりするのに問題はありません。私ができないのは、アーカイブ、リリースビルドです。
objective-c - 測定単位のBNF文法
私はParseKitを使用して測定単位を解析しています。これを行うには、文法を提供する必要があります。グーグルを試してみましたが、うまくいきませんでした。それは私自身で楽しい運動ですが、私はそれが正しく行われることを確認したいと思います。ParseKitは、次のようなBNF文法を期待しています。
次のような入力をサポートしたいと考えています。
objective-c - 部分文字列をトークン化するためにParseKitでPKTokenizerをカスタマイズするにはどうすればよいですか?
単語の接頭辞のように、ParseKitを使用して部分文字列を解析したいとします。たとえば、「preview」と「review」を解析したいと思います。だから私の文法は次のようになるかもしれません:
これで、ParseKitを変更せずに、「preview」と「review」を一致させることができますが、「preview」または「review」を一致させることはできません。ドキュメントを見ると、PKTokeinzerの単語の状態をカスタマイズする必要があると思います。これは、「Word」トークンを終了するための空白を探しているためです。どうすればそれを回避できますか?
syntax-highlighting - NSAttributedStringを介したNSTextView構文の強調表示のパフォーマンスの向上
アプリにシンタックスハイライトを追加する作業をしています。テストクラスでは、現在NSTextView
、textDidChange
通知があります。これに似ています:
NSTextView
ハイライトテキストの機能は、解析から文字列を取得してを作成しNSMutableAttributedString
、最後に文字列を表示します。コードは次のようなものです:(私はParseKitを使用して解析を行います。以下のサンプルはコードコメントを強調しています)。
これで、少量のテキストで作業している場合は正常に機能しますが、大量のテキストで作業している場合はパフォーマンスを向上させたいと思います。私はこのテーマについて2つの考えを持っていました:
- バックグラウンドで処理を行います。ユーザーが入力すると、これはテキストが数秒間フォーマット解除される可能性があることを意味します。私はこの考えが本当に好きではありません。
- テキストの表示されているセクションでのみ強調表示を実行します。ユーザーがスクロールするときに、さらに強調表示を行います。これには、ユーザーがスクロールすると、テキストがフォーマットされていないが、フォーマットされたスタイルにゆっくりとポップするという問題があります。
この分野について何か提案はありますか?これを行う別の方法がありませんか、それともこれでうまくいくはずですか?誰かが似たような/より良いことをしているサンプルコードを知っている可能性がありますか?私は現在、オプション#2に行くことを考えています。
xcode4 - XcodeのParseKitフレームワークは赤で、ビルドされません
Xcodeの新しいコマンドラインプロジェクトにParseKitを追加しようとしていますが、プロジェクトナビゲータでフレームワークが赤で表示されます。ビルドしようとすると、このエラーが発生します
error: /Users/acdlite/Xcode/Chemistry Parser/../parsekit-trunk/build/Debug/ParseKit.framework: No such file or directory
私はこの回答で開発者からの指示に従いました:MacアプリバンドルにプライベートフレームワークとしてParseKitを埋め込む方法。
私の知る限り、赤はファイルが指定された場所にないことを示します。ファイルインスペクターは、に配置する必要があると言っています/parsekit-trunk/build/Debug/ParseKit.framework
が、Finderでそこに移動しようとすると、実際には存在しません。では、それはどこにありますか?何も思いつきません。
私は、SVNを介してコードをチェックアウトすることを含め、今では数十回のようにすべてのステップを最初から実行しました。それは私を夢中にさせています、そして私はばかみたいに感じます。もっと具体的にできればいいのですが、ここからどこへ行くのか本当に迷っています。
parsing - ParseKit 文法を使用して単純なブール式言語を解析する方法
単純なブール式を解析する文法を構築しようとしています。
複数の式がある場合、問題が発生しています。'ed 式
を解析できる必要があります。1..n
and/or
以下の各例は、完全な式です。
(myitem.isavailable("1234") or myitem.ispresent("1234")) and myitem.isready("1234")
myitem.value > 4 and myitem.value < 10
myitem.value = yes or myotheritem.value = no
文法:
objective-c - ParseKit に改行文字を認識させる方法は?
ParseKit の Tokenizer が改行文字を認識し、他の空白文字を認識しないようにしようとしています。
また、例はハッシュで始まるコメントを認識させる方法を示していますが、作成された関数は単一の文字にのみ適用されるようです。2 つのダッシュ ('--') で始まり、改行で終わるコメントを PK に認識させたいと考えています。
objective-c - ParseKit トークン化と DelimitedString の使用
SQL Server 構文でParseKitの トークン化を使用しようとしています。次の例を見てみましょう。
私はコメント(および複数行のコメント)を設定するために以下を使用しています:
これは、SQL コメントの処理のサポートをセットアップします。現在、 などのパラメーターを検出するためのサポートを追加しようとしてい@MyId
ます。現在、トークナイザーはこれらを単語として@
取得しますが、文字列値には含めません。私の考えは、次のようにして a を使用しようとすることでしたdelimitState
:
次に を確認しtoken.isDelimitedString
ますが、何も検出されないようです。
私はこれについて間違っていますか?@
wordstateにどのように含めることができるかについて何か提案はありますか?