2012-02-07 10 views
1

私はこれらの手順にCまたはC++ソースファイルのコンパイルプロセスを打破する場合:解析&コンパイル命名法

  • A:前処理。
  • B:トークン化(キーワード、識別子、シンボル、リテラル(文字列、文字、数字)の収集とリスト)。
  • C:収集したトークンをツリーなどの構造化された形式にアセンブルする。
  • D:この構造化されたフォームを処理し、そのセマンティクスを分析して検証します。
  • E:命令のリスト(例えば、ASM)を生成する。

私の命名法の質問は以下のとおりです。

  1. は#ABCのすべてを解析する構文ですか? #紀元前?ちょうど#C?
  2. #ABCにはどのような用語を使用しますか? #紀元前? #C?
  3. ここではレクシングとは何ですか?それはちょうど#Bですか?
  4. #Dセマンティック解析ですか?
+0

の最終段階でもありintemediateコードを生成し、[EにD間]最適化 – amit

+0

preproceている間あなたのA,B,C,Dは、基本的には、コンパイラのfront endですソーサーもレクシングをしなくてはなりませんし、言語についても知っておく必要があります。 –

答えて

0

のみ前処理段階は、言語規格の一部であるが、ほとんどのプラットフォームは、コンパイル

  • 前、
  • 組み立て、
  • 連結に完全ビルドプロセスを分割します。

コンパイルは、レキシングと解析から始めて、すべての「ハードワーク」を包含するフェーズです。最適化は道路沿いのどこかにあります。

"リンク時間の最適化"の何らかの形を使用する最新のシステムでは、すべての構成オブジェクトファイルが一度処理されるまで、コンパイル/アセンブリ段階を延期または繰り返すことがありますが、道徳的にはすべてを連結したプロジェクトのファイルを1つの大きなファイルに入力してコンパイルします。

0

(A)は、単純な前処理である:で切断し
(B)を貼りlexical analysis
(C)はsyntax analysis [構文解析]
semantics analysis [数5添付のリンクにおける(D)である

あなたのEはそのbackend

+0

[ABC]をテキスト処理などと呼ぶことができますか? [BC]はどうですか?私は設計しようとしているコンパイラのモジュールとサブモジュールの適切な名前を探しています。 – Aotium

関連する問題