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

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

python - Python3.0 - トークン化とトークン化解除

次の簡略化されたスクリプトに似たものを使用して、より大きなファイルから python のスニペットを解析しています。

コードは python2.x と同じではありませんが、同じイディオムを使用しており、問題なく動作します。ただし、python3.0 を使用して上記のスニペットを実行すると、次の出力が得られます。

このエラーとその原因への参照を検索しましたが、何も見つかりませんでした。私は何を間違っていますか?どうすれば修正できますか?

[編集]

ソースに改行を追加するとエラーが消えるというpartisannの観察の後、トークン化を解除していたリストをいじり始めました。EOFトークンの直前に改行がないとエラーが発生するようですので、削除するとエラーが解消されます。次のスクリプトはエラーなしで実行されます。

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

c++ - C または C++ で for ループ エラーをレポートできる語彙アナライザーはどこで入手できますか?

C/C++ で for ループ エラーを報告する単純な語彙アナライザーが必要です。

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

language-agnostic - 解析中にコンパイラが最も多くの時間を費やしているのはどこですか?

Sebesta bookで、コンパイラはほとんどの時間をソースコードの字句解析に費やしていることを読みました。したがって、構文アナライザーとは異なり、レクサーの最適化は必須です。

これが本当なら、一般的な構文解析に比べて字句解析の段階で時間がかかるのはなぜですか?

構文解析とは、派生プロセスを意味します。

0 投票する
5 に答える
343 参照

text-parsing - 大きな文書のテキスト分析

複数の章のドキュメントを2番目のドキュメントと比較して、それらの類似性を判断する必要があるプロジェクトがあります。問題は、これをどのように行うか、どのようなアプローチが存在するか、またはそれらが利用可能なライブラリであるかどうかがわからないことです。

私の最初の質問は...何が似ているのですか?一致する単語の数、一致する連続する単語の数?

各ドキュメントを単語と場所を含む配列に配置するパーサーを作成し、それらを比較するのを見ることができました。

テキスト分析のためのアルゴリズムまたはライブラリで以前の質問を見ました 。具体的には、支配的な単語、テキスト全体のフレーズ、およびテキストのコレクションです。

しかし、それは私がやろうとしていることとは少し違うようです。

人々が持っているかもしれないどんなオプションやポインタも素晴らしいでしょう!

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

parsing - Lex / Flex での状態の開始

パーサー ジェネレーターに Flex と Bison を使用していますが、スキャナーの開始状態に問題があります。

コメントを処理するために排他的なルールを使用していますが、この文法は引用されたトークンと一致しないようです:

この簡単な例では、次の行:

次のルールを含めない限り、コメントとして完全に一致するわけではありません。

これらすべてのトークンを排他的ルールに追加することなく、これを回避するにはどうすればよいですか?

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

python - テキストから意味を解析する

これが幅広いトピックであることは理解していますが、テキストから意味を解析するための優れた入門書を探しています。理想的にはPythonで。私がやろうとしていることの例として、ユーザーが次のようなブログ投稿を作成した場合:

「マニー・ラミレスは、今日のヒューストン・アストロズ戦でドジャースに復帰する」,

文から名詞を取り出す軽量/簡単な方法は何ですか? まず、固有名詞に限定すると思いますが、それだけに限定したくはありません (また、Title Capped が固有名詞であると仮定する単純な正規表現に依存したくありません)。

この質問をさらに悪いことに、私が求めていないことは何ですか? 始めるために既存の単語のコーパスが必要ですか? これを機能させるには、どのような字句解析について知っておく必要がありますか? このトピックに関する別の質問に出くわしました。現在、それらのリソースを掘り下げています。

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

c - レクサーをプログラミングするとき、tokens.h は何に使用されますか?

C でレクサーをプログラミングしていて、ヘッダー ファイルについてどこかで読みましたtokens.h。そこにいますか?もしそうなら、その用途は何ですか?

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

regex - DFA ベースの正規表現マッチング - すべての一致を取得する方法は?

正規表現を表す特定の DFA があります。入力ストリームに対して DFA を照合し、最小最長一致だけでなく、可能なすべての一致を取得したいと考えています。

例えば:

正規表現: a*ba|baa

入力: ああああああああああああああ

結果:

  1. あああああ
  2. あば
  3. ばあ
0 投票する
1 に答える
1515 参照

parsing - Yacc ではなく Lex でエラー状態を処理しますか?

次のようなlex正規表現があるとします

ユーザーが入力した場合

一致します

しかし、ユーザーが次のようなことを言った場合

エラーで「文字 K が認識されません。S が必要です」と言ってほしいです。

私が今していることは、次のように書いているだけです

そして、本質的に Yacc で文字列を re-lex して、意味のあるエラー条件を設定できるようにします。

どうすればこれを回避できますか?

私が考えることができる唯一のことは、名前付きグループを使用することですか?

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

parsing - Z80アセンブラーの作成-ASMの字句解析と、コンポジションを使用した解析ツリーの構築?

私はアセンブラーを作成するという概念に非常に慣れていません。大量の資料を読んだ後でも、いくつかの概念に頭を悩ませることはまだ困難です。

  1. ソースファイルを実際にトークンに分割するプロセスは何ですか?このプロセスは字句解析と呼ばれ、意味のある実際のコード例を上下に検索しましたが、それほど単純なコード例は大歓迎です;)

  2. 解析するときに、情報をツリーの上下に渡す必要がありますか?私が尋ねる理由は次のとおりです。

    LD BC、nn

トークン化されたら、次の解析ツリーに変換する必要があります(???)

ここで、このツリーをトラバースするときに、次のマシンコードを生成する必要があります。

指示があった場合:

次に、出力は次のようになります。

それが問題を提起することを意味しますが、LDノードはオペランドに基づいて異なるものを返しますか、それとも何かを返すのはオペランドですか?そして、これはどのように達成されますか?時間が許せば、より単純なコード例が優れています。

高度な既存のツールを見るよりも、ここで生のプロセスのいくつかを学ぶことに最も興味があるので、YaccまたはFlexに送る前にそのことを覚えておいてください。