問題タブ [lexical-analysis]
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.
compiler-construction - ANTLR を使用して CommonTokenStream のトークンのテキストを変更するにはどうすればよいですか?
私はANTLRを学び、同時にそれを現在のプロジェクトに使用しようとしています。
コードのチャンクに対してレクサーを実行し、それを CommonTokenStream に出力できるようになりました。これは正常に機能しており、ソース テキストが適切なトークンに分割されていることを確認しました。
ここで、このストリーム内の特定のトークンのテキストを変更し、変更されたソース コードを表示できるようにしたいと考えています。
たとえば、私は試しました:
すべての識別子トークンのテキストを文字列リテラル「V」に設定しようとしています。
tokens.toString() を呼び出したときに、トークンのテキストへの変更が反映されないのはなぜですか?
さまざまなトークン タイプ ID を知るにはどうすればよいですか? デバッガーを使用して調べたところ、IDENTIFIER トークンの ID が「4」であることがわかりました (したがって、定数が一番上に表示されます)。しかし、そうでなければどうやってそれを知ったでしょうか?トークン タイプ ID をトークン名にマッピングする他の方法はありますか?
編集:
私にとって重要なことの 1 つは、トークンに元の開始位置と終了位置を持たせたいということです。つまり、変数名を「V」に変更して新しい位置を反映させたくありません。これは、トークンが元のソース テキストのどこにあったかを知るためです。
c - レクサー/トークナイザーと文字セット
lexer/tokenizer を構築するとき、isdigit/isalpha/... などの( Cの)関数に依存するのは間違いですか? 私の知る限り、それらはロケールに依存しています。文字セットを選択してそれに集中し、自分で文字マッピングを作成してから分類を検索する必要がありますか? 次に問題は、複数の文字セットを lex できるようになることです。文字セットごとに 1 つのレクサー/トークナイザーを作成するか、それとも、文字マッピングを変更するだけで済むように、作成したものをコーディングしようとしますか? 一般的な慣行とは何ですか?
parsing - Lex/Flex を使用したスキャナーでの文字位置
Lex/Flex では、文字ストリーム内の (ファイルの先頭から) トークンが表示される位置を取得する方法はありますか? 文字位置を整数として返すことを除いて、yylineno に似ていますか?
そうでない場合、これに到達するための最良の方法は何ですか? 自分のカウンターを保持する必要がありますか?
ありがとう!
parsing - プログラミング言語の仕様では、なぜ字句解析が翻訳できないのですか?
プログラミング言語のすべての標準仕様で、字句解析/レイアウトをプラグインして機能する準備ができている文法に直接翻訳できないのはなぜですか?
Flex / Bison、Lex / Yacc、Antlrなどに適応させることは不可能であり、さらに人間が理解できるようにすることは不可能だと理解できます。
しかし、確かに、それが標準仕様である場合は、文法レイアウトを単純にコピー/貼り付けする必要があります。代わりに、結果として大量のシフト/削減エラーが発生し、逆効果になり、不正確な文法が生成される可能性があります。
言い換えれば、なぜ文法/パーサーツールですぐに使用できるように読めなかったのでしょうか。
多分それは私が知らない議論の余地のあることです...
ありがとう、よろしく、トム。
nlp - プログラムによる構文解析と言語の理解(英語)
私は英語(または一般的には人間の言語)の構文解析と理解に関連するいくつかのリソースを探しています。これは明らかにかなり複雑で幅広い研究分野ですが、この主題の研究のための本やインターネットの推奨事項を誰かが持っているかどうか疑問に思いました。単語の関係を描くためにコピュラを探すなどの基本は知っていますが、皆さんがお勧めするものは、必ずよく読んでください。
ありがとう。
python - Python-字句解析とトークン化
これは字句解析の世界への私の最初のベンチャーであるため、ここでの発見プロセスをかなりスピードアップすることを目指しています。多分これは間違った道ですらあります。まず、私の問題について説明します。
私は非常に大きなプロパティファイル(1,000プロパティのオーダー)を持っています。これは、蒸留すると、実際には約15の重要なプロパティであり、残りは生成されるか、ほとんど変更されません。
したがって、たとえば:
これは、次のようなものをトークン化するために作成したいフォーマットのタイプです。
の中へ
字句解析とトークン化は私の最善のルートのように聞こえますが、これは非常に単純な形式です。これは単純な文法であり、単純な置換であり、釘を打ち込むためにハンマーを持ってこないようにしたいと思います。
独自のレクサーとトークナイザーを作成することもできますが、ANTlrを使用することもできますが、車輪の再発明は好きではなく、ANTlrはやり過ぎのように聞こえます。
私はコンパイラのテクニックに精通していないので、正しい方向とコードへのポインタが最もありがたいです。
注:入力形式は変更できます。
parsing - テキストトランスフォーマーの書き方は?
簡単に解析できるテキストがあるとします。テキストと特別な識別子で構成されます。解析後、テキストに対応するトークンとテキスト内の特別な識別子のリストを取得します。
私が抱えている問題は、このトークンリストから他の形式に変換するにはどうすればよいですか?
この問題への取り組み方がわかりません。
解析ツリーを構築しようとしましたが、次に何をすべきかわかりません。
この構文解析の一般的な問題についてアドバイスしてください。
php - PHPにコンパイルするメタ言語を実装するための最良の方法
私はしばらくの間、PHPにコンパイルできるメタ言語の仕様/キッチンシンクに取り組んできました。今、私は物を作り始めたいと思います。PHP_LexergeneratorとPHP_Parsergeneratorを使用して小さなDSLを実装する前は、それらは非常にうまく機能していましたが、これまでこの規模のものを構築したことはありません。私はあなたが大いに持っているかもしれないフィードバック/提案/経験をいただければ幸いです!
スペックをhttp://pastebin.com/613mFGsBに貼り付けました。
web - ウェブサイトを分類する - オープン ソース LSI?
多くの Web サイト (数百万) を分類しようとしています。Nutch を使用してそれらをクロールし、サイトのコンテンツを取得できますが、それらを分類するための最良の (そして最も安価な、または無料の) ツールを探しています。
1 つのオプションは、特定のキーワードを検索してサイトを分類する正規表現を作成することですが、Autonomy のようなハイエンドの LSI タイプのツールもあります。Web ページ/サイトからテキストを取得して分類するオープン ソースまたは安価なツールはありますか? 使用するカテゴリの種類をカスタマイズする必要があります。分類の一環として、実際にはページを停止しただけの「偽の」サイトや、ページに広告を掲載しているドメーナーや、ニュース、スポーツ、科学などの単純な古いカテゴリを認識できるようにしたいと考えています健康、食、娯楽etc...