字句解析:
- 主な特長:字句解析は、入力、字句単位およびその構成オブジェクトから文字を読み込み、
- 主な手順:
- プリフェッチ:現在読んで文字を認識することができれば、次の入力が現在、文字を読むことを予測することは、空白文字として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を追加します
-
- 类Token:
- Lexer:
- 主なプロセス:
参考-《编译原理(第二版)》