問題タブ [lpeg]
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.
xml - LPeg re モジュールを使用した XML タイプのファイルの解析
私は LPeg を学ぼうとre module
していますが、特に公式ドキュメントが非常に優れているため、非常に興味深い経験でした。
ただし、説明が不十分と思われるトピックがいくつかあります。たとえば、named group capture
構造: {:name: p :}
.
次の例を考えてみましょう。一致しない理由がわかりません。
ここで何が問題なのかを理解してくれる人はいますか? 私はそれについてかなり考えましたが、何か重要なものが欠けているようです。
lua - LPeg.re (Lua) での大文字と小文字を区別しない一致
Lua の「LPeg」および「re」モジュールは初めてです。現在、次のルールに基づいてパターンを記述したいと考えています。
- 「gv_$/gv$/v$/v_$/x$/xv$/dba_/all_/cdb_」で始まる文字列と、接頭辞「SYS.%s*」または「PUBLIC.%s*」に一致します。オプションです
- 文字列は英数字に続くべきではありません。つまり、パターンは「X」に続くため、「XSYS.DBA_OBJECTS」と一致しません。
- パターンは大文字と小文字を区別しません
たとえば、以下の文字列はパターンに一致する必要があります。
現在、私のパターンは以下にあり、大文字の英数字以外の文字列にのみ一致します。
私の質問は次のとおりです。
- 大文字と小文字を区別しない一致を実現するには? 解決策についていくつかのトピックがありますが、私は理解するには新しすぎます
- %Wを追加するのではなく、一致した文字列のみを正確に返す方法は? Javaの「(?=...)」のようなもの
パターンまたは関連する機能を提供していただければ幸いです。
lua - Lpeg「ルール内の空のループ」エラー
明確な説明と、このエラーを示す簡単な例を誰かが提供できますか?明らかに match-time capture (Cmt) に関連していますか?
私が見つけることができる唯一の言及を理解していません。
http://lua-users.org/lists/lua-l/2013-06/msg00086.html
ありがとう
error-handling - LPeg で解析エラーを通知するにはどうすればよいですか?
私はLPegベースのパーサーを書いています。解析エラーが返されるようにするにはどうすればよいnil, errmsg
ですか?
を使用できることはerror()
わかっていますが、私が知る限りでは、 ではなく通常のエラーが発生しますnil, errmsg
。
コードはかなり長いですが、関連する部分は次のとおりです。
無効なエスケープがあったときにLine:match(...)
戻りたい。nil, errmsg
parsing - lpeg を使用して単語境界でのみキャプチャする
私は、 LPEG を使用して構文強調表示のサポートを実装するテキスト エディターに取り組んできました。起動して実行するのは非常に簡単でしたが、必要最小限の作業しか行いませんでした。
次のような一連のパターンを定義しました。
これは入力を正しく処理しますが、残念ながら一致が多すぎます。たとえば、文字どおりの一致に " " を使用しているためint
、 の途中で一致するprintf
ことが予想されます。P
明らかに「適切な」強調表示を実行するには、「int」は「int」と一致しますが、「printf」、「vsprintf」などとは一致しないように、単語の境界で一致する必要があります。
これを使用して、一致が " <[{ \n
" の後にのみ発生するように制限しようとしましたが、これは私が望むことをしませんでした:
Cコードで期待される空白またはその他の文字で囲まれたキーワード/トークンのみに一致する、ここに欠けている単純で明白な解決策はありますか? 強調表示できるようにキャプチャされたトークンが必要ですが、それ以外の場合は、特定のアプローチと結婚していません。
例: これらは一致する必要があります:
しかし、これはすべきではありません: