異なるプログラミング言語 (java/C/C++) で書かれたソース コードをトークン化できるライブラリはありますか? (識別子である関数の開始と終了のように、その一部を識別することができます)。過度に複雑になる可能性があるソース コードを解析したくありません。さらに、ソース コードにエラーがない場合もあります。事前に感謝します。
質問する
3452 次
2 に答える
3
flex (C の場合) や JLex (Java の場合) などの語彙アナライザー(略して lexer)を使用して、ソース コードをトークン化できます。Java、C、および C++ をトークン化するための文法を取得する最も簡単な方法は、お気に入りのレクサーを使用してオープン ソース コンパイラのコードを使用することです (ライセンス条項に従います)。ライセンス条件が難しすぎると感じたとしても、それらは参考になるはずです...
ただし、解析せずに関数の開始と終了を識別することはできません。
于 2012-04-26T00:27:55.437 に答える
2
すべての場合ではありません。たとえば、C または C++ コードの解析がtypedef
;の存在下でどのように変化するかを考えてみましょう。最初は識別子であるトークンは、後で型名として認識される必要があります。そうしないと、typedef
. 一部の言語では、任意の演算子 (新しいトークン) を定義できます。一部は単純に病的です (Perl パーサーを設計するか、波括弧挿入規則が壊れている Haskell '98 を設計してみてください)。
于 2012-04-26T00:25:08.737 に答える