問題タブ [ragel]
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.
pattern-matching - Ragel 文字列マッチング
私が取り組んでいるプロジェクトのためにラゲルを学ぼうとしています。私はこれが初めてです。
15個の文字列のリストがあります。問題は、指定された文字列がこの 15 個の文字列のいずれかと一致するかどうかを確認することです。
通常の状況では、15 個の文字列でハッシュ セットを構築するだけで、文字列の O(1) ルックアップを実行し、一致するかどうかを判断できます。
私の場合、これを10億回行います。そのため、ragel を使用してこれらの 15 個の文字列のステート マシンを構築し、指定された文字列が一致するかどうかを確認しようとしています。
どちらの場合も、キャラクターを 1 人ずつ見ていく必要があるため、ラゲル アプローチを使用する方が優れていると思います。つまり、ハッシュを計算するには、すべての文字を一度スキャンしてからルックアップを行う必要があります。ステートマシンを使用してすべての文字をスキャンすると、結果が得られ、ルックアップを回避できます。
これはより良いアプローチですか?そして、文字列マッチングを行うために 15 個の文字列のステート マシンを構築する方法を教えてもらえますか?
ragel - 重複する 2 つの式に優先順位を付けるにはどうすればよいですか? (ラゲル)
私は2つの式を持っています:
明らかに、任意の ident は文字列です。Ragel には、これを克服するための優先オペレーターがいます。しかし、どのように優先度を設定しようとしても、一部の ident が両方のアクションを実行するか、一部の有効な文字列が無視されます (有効な ident を接頭辞として持つ有効な文字列、たとえば ab$)。
優先順位を使用せずに、それを回避する1つの方法を見つけました:
しかし、重複する式がいくつかある場合、これは面倒になります。これが唯一の実用的な方法ですか?
これを行う正しい方法についての助けをいただければ幸いです。
regex - 私の単純な Ragel 文法がすべてのメモリを使用してクラッシュする理由
Adblock Plus ルールの一連の正規表現を、C++ から呼び出すことができる最適化された関数に変換しようとしています。
Ragel などのレクサー ジェネレーターを使用してこれを行うことができると期待していましたが、非常に小さな正規表現のセットで試してみると、メモリ使用量が 30 GB を超えて非常に高くなり、Ragel はエラー メッセージも出力ファイルも生成せずに終了しました。
問題を解決するために最適化できる愚かなことをしているのかどうかを理解しようとしています。
ragel - マシンのインスタンス化の範囲外でラゲル ラベルを使用する方法
アクションが実行されると、特定の条件下でアクションが別の状態へのジャンプをトリガーするようにします。コードを読みやすくするために、マシンのインスタンス化の外でアクションを定義したいと思います。
マシンのインスタンス化の範囲外で、ragel によって生成された状態ラベルにアクセスするにはどうすればよいですか?
osx-mavericks - マーベリックスでラゲルをコンパイルする
Ragel のソース コードをダウンロードし、コンパイルしようとしています。
設定できません。実行時に次のエラーが発生する
./configure --prefix=PREFIX
-bash: ./configure: そのようなファイルまたはディレクトリはありません
必要なコマンド ライン コンパイル ツールをすべてダウンロードしました。何が欠けているのかわからない。
objective-c - Ragel と NSMutableString
Ragel を NSMutableString で動作させることは可能ですか?
Ragel を使用して DFA を生成し、NSMutableString をトークン化したいと考えています。cStringUsingEncoding:
その「可変」部分は、 1文字が変わるたびに使用できないことを意味します。私が見る限り、次の 2 つの問題があります。
Ragel に含まれている例は
char *
、Objective C でも文字を取得するために使用されているようですが、常に変化する NSMutableString へのポインターを取得する方法がわかりません。characterAtIndex:
代わりにRagel に強制的に使用させることは可能でしょうか? それは遅くないでしょうか?私の理解が正しければ、NSString は実行時に内部表現を変更する可能性があります。つまり、常に UTF-16 であるとは限りません。たとえば、ASCII のみが含まれている場合は、1 バイトのエンコードが使用されます。ただし、有効な範囲外の文字が現れるとすぐに、マルチバイト エンコーディングに切り替わります。Ragelでそれを説明することは何とか可能ですか?