JavaScript 2.0
正式な記述
解析手順
previousupnext

10/15/2002 (Tue)

ソースコードは以下の手順で処理される:

  1. 必要に応じてソースコードを UTF-16 正規形 C に変換する。
  2. ソースコードから Unicode 制御文字 (分類 Cf) を全て取り除く。
  3. 同時に字句文法セマンティクスによりソースコードを入力要素に分割し、構文文法を使って解析して解析木 P を得る。
  4. 構文セマンティクスでアクション Eval により P を評価する。

字句解析と構文解析

第3段階の処理は以下のように行われる:

  1. inputElements を入力要素 (構文文法の終端記号と改行) の空の配列とする。
  2. input を Unicode 文字の入力シーケンスとし、特別なプレースホルダ Endinput の末尾に追加する。
  3. state を、定数 redivnum のいずれかを格納する変数とする。初期値は re とする。
  4. input の可能な限り最も長い接頭辞を解析するために字句文法を適用する。stateredivnum のいずれであるかにより、開始シンボルはそれぞれ NextInputElementreNextInputElementdivNextInputElementnum を使用する。解析の結果は字句文法解析木 T となっているべきである。解析に失敗した場合は構文エラーを返す。
  5. T 上でアクション InputElement を処理し、InputElement e を得る。
  6. e が入力要素 endOfInput であれば手順15に移動する。
  7. input の字句解析の終わっていない接尾辞だけが残っていれば、T にマッチした文字を input から取り除く。
  8. 以下のようにして e を構文文法の終端記号か改行 として解釈する:
  9. 得られた終端記号か改行 を配列 inputElements の末尾に追加する。
  10. 配列 inputElements構文文法で定義される文脈自由言語の正しい接頭辞を形成する場合は手順13に移動する。
  11. lineBreak でなく、inputElements 配列の1つ前の要素が lineBreak であれば、inputElements 配列中の lineBreak の間に終端記号 VirtualSemicolon を挿入する。
  12. この時点で配列 inputElements構文文法で定義される文脈自由言語の正しい接頭辞を形成していない場合は構文エラーを出し、停止する。
  13. NumberNegatedMinLong であれば statenum に設定する。それ以外の場合で inputElements 配列のすぐ後ろに / が続き、その配列が構文文法で定義される文脈自由言語の正しい接頭辞を形成する場合は statediv に設定する。いずれにも該当しない場合は statere に設定する。
  14. 手順4に戻る。
  15. 配列 inputElements構文文法で定義される文脈自由言語の正しい文を形成していない場合は構文エラーを出し、停止する。
  16. 配列 inputElements により形成される文を構文文法で展開することにより得られた構文木を返す。

Waldemar Horwat
Last modified Tuesday, October 15, 2002
previousupnext
訳者: exeal <exeal@student.interq.or.jp>
このドキュメントのオリジナルは mozilla.org において英語で公布されています。
この翻訳文書は、利用者の利便のために Mozilla Japan 翻訳部門 により提供されています。
翻訳文書についてのコメントは mozilla.org 日本語版について までお寄せください。