コンパイラの理論 - -2.2字句解析チャプター単純な構文コンパイラガイダンス

 字句解析:

  • 主な特長:字句解析は、入力、字句単位およびその構成オブジェクトから文字を読み込み、
  • 主な手順:
    • プリフェッチ:現在読んで文字を認識することができれば、次の入力が現在、文字を読むことを予測することは、空白文字としてPEEKを文字の数字や文字を読んで保持する変数PEEKを使用しました。字句解析器は、現在の字句単位の後に変数PEEKまたは形態学的特徴を保持しているか、空白を保持字句単位を返すとき。
    • 空白とコメントを削除します:
      •  図2-29擬似コードは、連続的に空白部分をスキップするスペース、タブまたは新しい行のイベントで入力文字を読み取ります。次の入力文字のために格納された変数のぞきます。エラーメッセージやエラーを見つけコンテキストヘルプの行番号を追加しました。このコードは、改行統計入力の可変の行番号を使用しています。

    • 識別と定数を計算します:
      •  図中の擬似コードは2~30の数字は整数で読み出し、この変数vの値を有する整数を得るために統合されています。

    • キーワードや識別子を識別します。
      •  図2-31擬似コードは、get操作を見つけるために、単語を禁じます。文字列を読み出す擬似コードは、文字S、文字入力からのビットの数で始まります。私たちは、sが限り長く字句解析遭遇した文字や数字として、それが入力から文字を読み続けるだろう、あること、できるだけ読みになることを前提としています。それは、このようなことに遭遇空白などの文字や数字を、遭遇したとき、形態素は読み取りがバッファBにコピーされていません。文字列テーブルは、既にSのエントリを有する場合、それが得られた字句単位words.getから復帰します。ここで、Sは、単語の既にテーブル内のテーブルの初期化のキーワードであってもよく、それはまた、識別子のリストに追加される前であってもよいです。S、対応するエントリが存在しない場合、id属性値sおよび組成物によるその後字句単位は、文字列テーブルに追加され、返されます。

  • 字句解析:
    • 主なプロセス:
      • 戻る字句単位スキャン関数オブジェクト
    • 個々のオブジェクト:
      • 类Token:
        •  トークンクラスは、意思決定を解析するためのタグフィールドを持っています
      • NUMサブクラスおよびサブクラスワード:
        • NUMサブクラスは、フィールド値、格納するための整数値を加算します

        •  サブクラスのWordは、形態素キーワードや識別子の保存、フィールドlexemを追加します

    • Lexer:

 

参考-《编译原理(第二版)》

おすすめ

転載: www.cnblogs.com/fangzhiyou/p/12416860.html