問題タブ [lexer]

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 投票する
2 に答える
1795 参照

javascript - Javascript 言語ファイルに適した Delphi lexer/parser は何ですか?

バックグラウンド

Delphi アプリケーションで Javascript ソースを解析できるようにしたいと考えています。後のコードでコードを変更する目的で、ソース内の変数と関数を識別できる必要があります。おそらくこの目的のためにレクサーを使用する必要があることは理解していますが、私が見つけたレクサー ( Dyaclexx )を使用することはあまりうまくいきませんでした。

質問

適切なフリーウェアまたはオープン ソースの Delphi パーサー/レクサーはありますか?Javascript のトークン セットを既に持っているか、この目的のために問題なく簡単に変更できますか?

そのようなツールがまだ利用できない場合、この目的のために独自のレクサーを作成する方法を学ぶ最良の方法は何でしょうか?

ありがとうございました

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

python - インデントをどのように解析しますか (python スタイル)?

スコープを定義するためにインデントを使用する言語を解析するために、パーサーとレクサーのルールをどのように定義しますか。

私はすでにググって、字句解析器で INDENT および DEDENT トークンを生成することによってそれを解析するための巧妙なアプローチを見つけました。

この問題をさらに掘り下げて、何か興味深いことがあれば回答を投稿しますが、この問題に対する他のアプローチも見てみたいと思います。

編集:チャーリーが指摘したように、同じではないにしても、非常によく似た別のスレッドがすでにあります。私の投稿は削除されるべきですか?

0 投票する
4 に答える
39087 参照

parsing - 「トークナイザー」、「パーサー」、「レクサー」とは何か、またそれらがどのように相互に関連して使用されるのかについての明確な定義をお探しですか?

「トークナイザー」、「パーサー」、および「レクサー」とは何か、およびそれらが互いにどのように関連しているかについての明確な定義を探しています(たとえば、パーサーはトークナイザーを使用しますか、またはその逆ですか)?データの宣言と定義を抽出するために c/h ソース ファイルを通過するプログラムを作成する必要があります。

例を探していて、いくつかの情報を見つけることができますが、文法規則、解析ツリー、抽象構文ツリー、およびそれらが相互にどのように関連しているかなどの基本的な概念を理解するのに本当に苦労しています. 最終的には、これらの概念を実際のプログラムに格納する必要がありますが、1) どのように見えるか、2) 共通の実装はありますか。

これらのトピックや Lex や Yacc などのプログラムについて Wikipedia を調べてきましたが、コンパイラ クラス (EE メジャー) を経験したことがないので、何が起こっているのかを完全に理解するのは難しいと感じています。

0 投票する
3 に答える
2023 参照

parsing - 具体的および抽象的な構文ツリーの標準形式

コードの分析と操作を行う趣味のプロジェクトのアイデアがあります。このプロジェクトでは、特定のソース ファイルの具体的な構文ツリーと抽象的な構文ツリーの両方が必要になります。さらに、2 つのツリー間の双方向参照が役立ちます。文法を書き写して独自のレクサーとパーサーを構築する作業は避けたいと思います。

具体的または抽象的な構文ツリーを記述するための標準形式はありますか? 広く使用されているツール チェーンは、これらの形式への出力をサポートしていますか?

特定のターゲット プログラミング言語を念頭に置いているわけではありません。プロトタイプには一般的なものを使用できますが、Python、C#、Javascript、または C/C++ など、私がよく知っているものを使用したいと思います。

ツールまたはライブラリを介してソース ファイルを実行し、両方のツリーを取得する機能が必要です。理想的な世界では、このツールをユーザーが編集しているコードで実行し、エラーを許容することが実用的です。繰り返しますが、私は単にプロトタイプを開発しようとしているだけなので、これらの要件はかなり緩いです。

ありがとう!

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

java - Java 拡張機能を作成するのに最適なツールは何ですか?

私たちのプロジェクト グループは Java 言語の拡張に取り組んでおり、この目的のためにどのツールを使用すべきかを検討しています。拡張機能は、主に Java で使用される同時実行モデルの変更で構成されます。これまで、Polyglot と Javacc の 2 つのツールを調べてきました。Javacc はもう少し使いやすいように見えますが、言語にいくつかの重要な変更を加える予定であるため、より高度な Polyglot よりも Javacc を使用するのは良い考えではないかもしれません。 .

これらのツールの使用経験はありますか、または他の推奨ツールはありますか?

0 投票する
7 に答える
26245 参照

c# - C# の貧乏人の「字句解析器」

C# で非常に単純なパーサーを作成しようとしています。

正規表現をトークンに関連付けることができるレクサーが必要です。これにより、正規表現を読み取ってシンボルを返すことができます。

正規表現を使用して実際の重い作業を行うことができるように思われますが、それを行う簡単な方法がわかりません。一つには、Regex はストリームではなく文字列でのみ動作するようです (なぜですか!?!?)。

基本的に、次のインターフェースの実装が必要です。

だから、codzを送ってください...
いいえ、真剣に、私は上記のインターフェースの実装を書き始めようとしていますが、.NET (2.0) でこれを行う簡単な方法が既にないことを信じるのは難しいと思います. .

それで、上記を行う簡単な方法についての提案はありますか?(また、「コード ジェネレーター」も必要ありません。パフォーマンスは重要ではなく、ビルド プロセスを複雑にしたくありません。)

0 投票する
3 に答える
492 参照

text - シンタックス カラーリングのステート マシン

現在、レクサーとパーサーがどのように機能するかを学んでおり、ステート マシンについて次の質問があります。たとえば、次のルールに従ってテキストを色付けする必要があります。このルールでは、単純な状態遷移表は次のようになります。

これにより、「$」と行末の間にあるすべての文字に対して OnColor() アクションが呼び出されるため、色付けできます。もちろん、正規表現から同じものを自動的に生成することもできますが、魔法を大量に使用する前に、それがどのように機能するかを知りたいです:)。次に問題が発生します:ルールがある場合:(ドルで終わるテキスト行に色を付けたい場合、状態遷移表はあまり明確ではありません:

行末に「$」記号が見つかった場合に OnDollar() を呼び出すようにステート マシンに教えることができますが、ドル記号が出現する前のテキストを色付けするにはどうすればよいでしょうか? そのような問題を解決するための一般的なパターンは何ですか? もちろん、正規表現で 1 行になりますが、そのようなパーサーがステート マシンを介してどのように実装できるか、またそれが可能であるかを知りたいと思っています。

0 投票する
3 に答える
796 参照

parsing - 文脈自由パーサー文法を作成するためのインタラクティブなユーティリティを探しています

テキストの一部を (テキスト ボックスに) 与え、パーサーの文法 (同様の BNF を編集することによって) とトークン構造を実験しながら、解析ツリーがどのように見えるか (そしてそれが現在の文法を使用してテキストを解析できない場合、どこで停止したかがわかります)。

キーワードは双方向性です。たとえば、flex と bison を使用してこれを行うこともできますが、レクサーとパーサーを常に再作成する必要があります。

このようなものはありますか?私は何も見つけていません。理想的には、Linux で動作し、無料である必要があります。それがオプションでない場合でも、興味深いものです。