「トークナイザー」、「パーサー」、および「レクサー」とは何か、およびそれらが互いにどのように関連しているかについての明確な定義を探しています(たとえば、パーサーはトークナイザーを使用しますか、またはその逆ですか)?データの宣言と定義を抽出するために c/h ソース ファイルを通過するプログラムを作成する必要があります。
例を探していて、いくつかの情報を見つけることができますが、文法規則、解析ツリー、抽象構文ツリー、およびそれらが相互にどのように関連しているかなどの基本的な概念を理解するのに本当に苦労しています. 最終的には、これらの概念を実際のプログラムに格納する必要がありますが、1) どのように見えるか、2) 共通の実装はありますか。
これらのトピックや Lex や Yacc などのプログラムについて Wikipedia を調べてきましたが、コンパイラ クラス (EE メジャー) を経験したことがないので、何が起こっているのかを完全に理解するのは難しいと感じています。