問題タブ [lexical]

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 に答える
396 参照

java - Java 字句解析器 (意味論的に分析できる Java コードをマイニングするため)

Java コードの字句解析器が必要です。自分で作成する必要がありますか、それとも既存のツールを使用する必要がありますか? 独自の正規表現を記述せずに、字句アナライザーを Java 字句アナライザーと同じように動作させることは可能ですか?

たとえば、次のようなクラスがある場合:

出力を次のようにしたい

何かアイデアがあれば教えてください..

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

java - Java で文字列の字句特徴を識別するためのライブラリ

現在、Java の文字列の特別な字句特性を見つける必要があります。

  • 総文字数
  • アルファベットの総数
  • 大文字の総数
  • ....それができるライブラリがあるのだろうか?コーディング時間を節約するのは素晴らしいことです。
    どうもありがとうございました。
0 投票する
4 に答える
115 参照

python - `1 < 2` はキーワード `not` がなくてもブール演算の `not_test` ですか?

私はPythonのドキュメント2.76を読んでいます

これは、3 種類のブール演算の字句構文です

これは比較のための字句構文です:

or_expr の字句構文:

ドキュメントの表記については、次のとおりです。

垂直バー (|) は、選択肢を区切るために使用されます。これは、この表記法で最も拘束力の低い演算子です。

ここで質問が来ます:

  1. not_test ::= comparison | "not" not_testのように解析されます

    not_test ::= comparison | ("not" not_test)?

  2. 1.が true の場合、有効なcomparisonも有効ですnot_test1 < 2not_testnot

  3. さらに、validand_testは単一の validnot_testである可能性があるため、 1 < 2validand_testも同様です。についても同様or_testです。

  4. では、有効な とは何comparisonですか? 1 < 2明らかにパターンに適合します。そして、これらのビットごとの比較 expr も有効ですcomparison。共通しているのは、少なくとも 1 つの演算子 ('>'、'<'、またはビット単位のもの) の存在が必要であることです。(わからない。)

  5. ここで奇妙な部分になります。x and yたとえば、考えてみましょう。によると

and_test ::= not_test | and_test "and" not_test

and_test ::= not_test | (and_test "and" not_test) # このように解析されたと思いますか?

が true でx and yある場合and_test( がnot_test存在するため、 になることはありませんand)、は valid であるx必要があり、and_testこれはただ 1 つの valid である可能性がありますnot_test。そして、あまりにもy有効でなければなりませnot_testん。

Anot_testは、1 つまたは が前に付いたcomparison別のいずれかです。したがって、 aは基本的に 0 個以上の s の後に 1 が続きます。ここで重要なのは、 の字句構文です。not_testnotnot_testnotcomparisoncomparison

によると4.、 acomparisonには少なくとも 1 つの演算子が必要です。ただし、これは次の例と競合します。

x = 3、y = 4 を割り当てます。3 and 4有効なようですand_test

しかし、どうすれば有効なの3かわかりません。どこで私は間違えましたか?4comparison

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

compiler-construction - 字句アナライザ: 有限オートマトンによる正規表現の実装?

あいさつ!

ドラゴンブックの第 3 章 (字句解析) を読んでいるうちに、彼らが有限オートマトンについて話し始めるまで、ほとんどすべて (正規表現でトークンを指定する方法) を理解できました。そして、それは字句解析器を説明する上で大きな部分を占めるように思われました。

これで、有限オートマトンの概念は理解できましたが、字句解析器での役割と使用法がわかりません。正規表現でトークンを指定しないのはなぜですか?

前もって感謝します。

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

c - 単純な字句解析器で文字を文字列として取得する

私はCで単純な字句解析器を実装しようとしています.そして私の問題は文字と文字列に関するものです. 通常、リンクされたリストの挿入では、引数として char を指定します。しかし、キーワードの場合、それらは印刷中に文字列であるため、問題が発生しています:

私の入力は次のとおりです。

通常、次のような出力が得られます。

キーワードの場合にp[0]を与えるべきではないことはわかっています。構造体の定義も調べて、char 語彙素char lexemes[]にしましたが、いくつかのエラーが発生しました。C の適切な str クラスを見つけようとしましたが、できませんでした。次のような出力が必要です。

それで、あなたは何を提案しますか?それを達成するにはどうすればよいですか?

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

language-agnostic - 形容詞語彙の定義

インターネットで、私は形容詞語彙の一般的な意味を読んだことがあります。それは、単語が出現する可能性のある文を参照せずに、物理的な世界または抽象的な概念に関連する単語の意味です。

この単語がさまざまな文脈で使用されているのを見てきました: 字句スコープ、字句解析、字句定数、字句演算子など。

スコープのようなものの前にレキシカルという言葉を使うのはなぜですか? レキシカルの定義とレキシカルスコープの間には何の関係もありません。字句解析、字句定数などについても同様です。

より簡単に参照できるように何かに名前を付けたいと考えていることは理解していますが、なぜ意味のない名前を付けるのでしょうか? それが理にかなっているとしたら、それがどのように機能するかを明確にしていただけますか?


別のスレッドで、C++ におけるレキシカルの意味を尋ねる別のスレッドを見たことがあります。「レキシカル」という用語は、C++ では何を意味しますか?

その質問に対する一番上の回答は、字句がソースコードに関連していることを意味することを説明しています。それでは、私の質問は次のとおりです。ソースコードに関係のないプログラミングはどうですか? あらゆる種類のスコープ、定数、形式のコード分析がソース コードに関連しているのではないでしょうか。また、レキシカルの定義は、ソースコードとの関係の定義とどのように関連していますか?