用語集
Binding(束縛)
スコープ内で値が代入/束縛されること。
Binding type(束縛の種類)
束縛の分類。インポートされた値、代入された値(let/const/var)、エクスポートされた値、関数/クラス宣言、関数/メソッドの引数など。
Scope(スコープ)
束縛が存在しうるブロック。ブロックとは {} で囲れたコード領域(クラス、関数、メソッド、コールバック、if/else など)。スコープには階層があり、親が子を持ち(常にではない)、子は親に属します。同名の束縛は子が親をシャドウします。
Scope flags(スコープフラグ)
現在のスコープについてのメタデータ(継承階層のスコープではなく):関数、コンストラクタ、トップレベル(プログラム)など。
Symbol(シンボル)
束縛を包むラッパで、束縛された変数がソース内で使われる/呼ばれる参照をすべて持ちます。シンボルは走査順に ID が振られ、各参照はその ID でシンボルを指します。
Symbol flags(シンボルフラグ)
シンボル/束縛に関するメタデータ。
Reference(参照)
シンボル参照とはシンボル(ひいては束縛)の使用箇所で、走査順に ID が振られます。各参照は読み取り・書き込み・その両方としてフラグされます。
Span(スパン)
ソーステキスト内におけるノードの開始/終了オフセット。