用語
バインディング
スコープ内で割り当て/バインドされている値。
バインディング型
バインディングのタイプ:インポートされた値、割り当てられた値(let/const/var)、エクスポートされた値、関数/クラス宣言、関数/メソッド引数など。
スコープ
バインディングが存在可能なブロック。ブロックとは、{}で囲まれた任意のコードを指す。クラス、関数、メソッド、コールバック、if/else 等が該当する。スコープは階層構造を持ち、親スコープに子スコープが存在する(常にとは限らない)が、子スコープは親スコープに属する。同じ名前のバインディングがある場合、子スコープ内のバインディングは親スコープ内のバインディングをシャドー(隠蔽)する。
スコープフラグ
現在のスコープに関するメタデータ(継承された階層スコープではない):関数、コンストラクタ、トップレベル(プログラム)、など。
シンボル
現在のソーステキスト内におけるバインドされた変数の各使用/呼び出しサイトへの参照を持つバインディングラッパー。シンボルはスキャン順にIDが割り当てられ、参照ポイントはそのIDによってシンボルに到達する。
シンボルフラグ
シンボル/バインディングに関するメタデータ。
参照
シンボル参照とは、シンボル(そしてその結果としてのバインディング)の使用を指し、スキャン順にIDが割り当てられる。各参照は読み取り、書き込み、または両方のフラグが付与される。
スパン
ノードがソーステキスト内の開始/終了オフセット。
