問題タブ [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.

0 投票する
1 に答える
191 参照

xml - LPeg re モジュールを使用した XML タイプのファイルの解析

私は LPeg を学ぼうとre moduleしていますが、特に公式ドキュメントが非常に優れているため、非常に興味深い経験でした。

ただし、説明が不十分と思われるトピックがいくつかあります。たとえば、named group capture構造: {:name: p :}.

次の例を考えてみましょう。一致しない理由がわかりません。

ここで何が問題なのかを理解してくれる人はいますか? 私はそれについてかなり考えましたが、何か重要なものが欠けているようです。

0 投票する
2 に答える
457 参照

lua - LPeg.re (Lua) での大文字と小文字を区別しない一致

Lua の「LPeg」および「re」モジュールは初めてです。現在、次のルールに基づいてパターンを記述したいと考えています。

  1. 「gv_$/gv$/v$/v_$/x$/xv$/dba_/all_/cdb_」で始まる文字列と、接頭辞「SYS.%s*」または「PUBLIC.%s*」に一致します。オプションです
  2. 文字列は英数字に続くべきではありません。つまり、パターンは「X」に続くため、「XSYS.DBA_OBJECTS」と一致しません。
  3. パターンは大文字と小文字を区別しません

たとえば、以下の文字列はパターンに一致する必要があります。

現在、私のパターンは以下にあり、大文字の英数字以外の文字列にのみ一致します。

私の質問は次のとおりです。

  1. 大文字と小文字を区別しない一致を実現するには? 解決策についていくつかのトピックがありますが、私は理解するには新しすぎます
  2. %Wを追加するのではなく、一致した文字列のみを正確に返す方法は? Javaの「(?=...)」のようなもの

パターンまたは関連する機能を提供していただければ幸いです。

0 投票する
1 に答える
411 参照

lua - Lpeg「ルール内の空のループ」エラー

明確な説明と、このエラーを示す簡単な例を誰かが提供できますか?明らかに match-time capture (Cmt) に関連していますか?

私が見つけることができる唯一の言及を理解していません。

http://lua-users.org/lists/lua-l/2013-06/msg00086.html

ありがとう

0 投票する
1 に答える
396 参照

error-handling - LPeg で解析エラーを通知するにはどうすればよいですか?

私はLPegベースのパーサーを書いています。解析エラーが返されるようにするにはどうすればよいnil, errmsgですか?

を使用できることはerror()わかっていますが、私が知る限りでは、 ではなく通常のエラーが発生しますnil, errmsg

コードはかなり長いですが、関連する部分は次のとおりです。

無効なエスケープがあったときにLine:match(...)戻りたい。nil, errmsg

0 投票する
2 に答える
237 参照

parsing - lpeg を使用して単語境界でのみキャプチャする

私は、 LPEG を使用して構文強調表示のサポートを実装するテキスト エディターに取り組んできました。起動して実行するのは非常に簡単でしたが、必要最小限の作業しか行いませんでした。

次のような一連のパターンを定義しました。

これは入力を正しく処理しますが、残念ながら一致が多すぎます。たとえば、文字どおりの一致に " " を使用しているためint、 の途中で一致するprintfことが予想されます。P

明らかに「適切な」強調表示を実行するには、「int」は「int」と一致しますが、「printf」、「vsprintf」などとは一致しないように、単語の境界で一致する必要があります。

これを使用して、一致が " <[{ \n" の後にのみ発生するように制限しようとしましたが、これは私が望むことをしませんでした:

Cコードで期待される空白またはその他の文字で囲まれたキーワード/トークンのみに一致する、ここに欠けている単純で明白な解決策はありますか? 強調表示できるようにキャプチャされたトークンが必要ですが、それ以外の場合は、特定のアプローチと結婚していません。

例: これらは一致する必要があります:

しかし、これはすべきではありません: