malloc を使用してシンボル テーブル エントリを追加できますか? テーブルをトラバースして、何かが既に存在するかどうかを確認するにはどうすればよいですか?
3 に答える
「シンボルテーブル」は、特定の種類のデータ構造を記述していません。シンボルの追加と名前によるシンボルの取得という主要な操作モードについて説明しているだけです。ここでの記号は基本的に属性名です。コンパイラクラスの場合、そのような属性の1つはですIsAFunction
。
Cには、組み込みのデータ構造がほとんどありません。この場合、自分で作成する必要があります。C ++では、それはただの問題ですstd::map<std::string, Attributes>
。おそらく、コンパイラクラスを使用している場合は、Cでデータ構造を実装する方法(の使用を含むmalloc()
)をすでに知っているはずです。そうでない場合は、コンパイラクラスは実際には適していません。
一般に、シンボル テーブルはハッシュ テーブルを通じて実装されます。ハッシュ テーブルには、O(1) ストアとリトリーブという利点がありますが、データをシーケンシャルに格納するわけではありません。
C で作業していると仮定すると、 を使用できますがmalloc()
、それ以上の作業が必要です。提供されたリンクはあなたを啓発するはずです。
私は前に二重連鎖リンクリストでそれをしました。しかし今、私は間違いなくハッシュテーブルでそれを行います。これは単なるデータ構造です。