pop-definition-attributes (プロシージャ)
public {pop-definition-attributes
source-state:CurlSourceState,
allowed-attributes:AdjectiveMask,
following-identifiers:int = 0
}:(info:BindingInfo, class-info:ClassBindingInfo)
パッケージ: CURL.LANGUAGE.COMPILER

ソースからの属性単語を解析します。

source-state: 属性解析の実行元となるソースの状態オブジェクトです。現在のインデックスは、関数が返ってきたときに最後に解析された属性の直後を指します。
allowed-attributes: 予測される属性のリストを指定します。
following-identifiers: 最後の属性の後にくることが予測される修飾子の数です。

戻り値

解析された属性を示す、BindingInfo および ClassBindingInfo オブジェクトを返します。

説明

source-state の Curl 属性単語を解析し、BindingInfo および ClassBindingInfo オブジェクトの形式で属性を返します。最後に解析された属性の後の次のソース オブジェクトにポイントするよう、f の解析インデックスを進めます。

これに使用されるアルゴリズムは次のとおりです。

  1. 既知の Curl 形容属性に一致する修飾子以外のトークンを検出するまで source-state をポップし、これらをリストに追加します。
  2. source-state から得られる following-identifiers追加修飾子トークンまでを読み取り、これらもリストに追加します。
  3. リストの終わりから following-identifiers エントリを削除し、source-state の解析インデックスを最初の削除エントリにポイントするように配置します。
  4. 残りのエントリの中に、allowed-attributes に当てはまるものがある場合、その始めのエントリに対して、'属性は無効です' の構文エラーが生成されます。
  5. さらなる互換性チェックが実行され、属性同士に互換性のあることが確認されます。