HTML解析
I. 文書の分割とインターフェース設計
- ファイル管理を容易にするため、パーサーを別のファイルに分割します。
- パーサーは HTML テキストを引数として受け取り、DOM ツリーを返します。
HTML 解析を実装する FSM
- FSMによるHTML解析の実装
- HTML標準では、HTMLの状態は次のように規定されています。
- Toy-Browserは、ミニマリスト・バージョンを完成させるために、これらの状態の一部だけを選びます。
III.ラベルの解析
- 主なラベルは、開始ラベル、終了ラベル、自動閉鎖ラベルです。
<div></div><br />
- このステップでは、プロパティを無視します。
IV.要素の作成
- ステートマシンでは、ステートマイグレーションに加えて、ビジネスロジックも追加されます。
- タグ終了状態でタグトークンを送信
V. 属性の取り扱い
- 属性値はシングルクォート、ダブルクォート、ノークォートのスタイルで記述されます。
- 属性はタグと同様に扱われます。
- 属性の最後に、その属性をTokenタグに追加します。
VI. DOMツリーの構築
- タグから DOM ツリーを構築する基本的なコツは、スタック
- 要素を作成し、開始タグに出会ったらスタックに置き、終了タグに出会ったらスタックから取り出します。
- 自閉ノードはスタック内にあり、すぐにスタックから出ることができます。
- 要素の親は、スタックに乗る前のスタックの一番上です。
VII.テキストノード
- テキストノードは、自己閉鎖ラベルに似ています。
- 複数のテキストノードをマージする必要があります。