Es-compiler-design-compiler-design-symbol-table

提供:Dev Guides
移動先:案内検索

CompiladorDiseño-タブラデシンボロス

タブラデシンボロスデナトスエクサトゥラデダトスクレアダアンドマンテニダポルロスコンピラドールズコンエルフィンデアルマセナーインフォーカシオンアセルカデラオカレンシアデダイバーサスエンティデデス、テイルズコモノンブルデファンシオン、インターフェース、オブジェ、インターフェースなど タブラデシンボロスおよびユーティリティエルアナリシスイラシンテシスデウンコンピラドール。

シンボロスウナタブラデプエデンセルビルロスファインズシジエンテスエンファンシオンデルイディオマデラマノ:

  • パラ・アルマセナー・ロス・ノンブルズ・ド・トダス・ラス・エンティダデス・デ・フォルマ・エストラクチュラーダ・アン・ソロ・ルーガー。
  • 変数を宣言することはできません。
  • 実装の比較、複雑な概念の修正、および修正の方法について説明します。
  • パラ決定的エルアルカンスデアンノンブレ(alcance de laresolución)。

タブラデシンボロスとタブラクエプエデセルリネアルまたはタブラハッシュを使用します。 Mantiene una entrada para cada uno de los nombres con el formato siguiente:

<symbol name,  type,  attribute>

ejemploによって、変数の宣言の一覧表が表示されます。変数の宣言は、変数の宣言を行います。

static int interest;

継続、デベアルマーナ、ラエントラーダコモラシギエンテ:

<interest, int, static>

El atributocláusulacontiene las entradas relacionadas con el nombre。

アプリカシオン

コンペラドールエスマネジャーウナペケナカンティダードデダトス、コンティナシオン、ラタブラデシンボロスプエデサーインプリメンタドコモウナリスタデソルデナダ、ケエスミュイファシルデコディゴ、シノクエソーロエスアデクアドパラペケナスメサ シンボルの実装と実装のタブ形式:

  • Lineal(ordenadas o desordenadas)リスト
  • Árboldebúsquedabinaria
  • タブラハッシュ

参加者は、タブラスデシンボロスソンエンスマヨリアインプリメントスコモタブラスハッシュ、エンエルクエックエルコーディゴフューエンテプロピオシンボロエストラタダコモウンエレメンタルクラベパララファンシオンデハッシュアンドエルバロールデレトルノエスラインフォマシオンソブレエルシンボロ。

オペラシオン

Una tabla desímbolos、ya sea lineal o hash、debe proporcionar las siguientes operaciones。

インサート()

Estaoperaciónes el que se utiliza conmásfrecuencia en fase deanálisis、es decir、la primera mitad del compilador en donde los testigos son identificados y los nombres se almacenan en la tabla。 公共の場での情報の表示や、表彰台にあるシンボロスの名誉、ニコラス・ク・オカレン、エル・コーディゴなどの情報。 エル・トマト・アンド・ラ・ケ・ロス・オンブルズ・セ・アルマセナン・ディペンデ・デル・コンピラドール・エン・マノ。

シンボロのアントリビュートは、協会のコンシンシンボロの情報です。 Estainformacióncontiene el valor、el estado、el alcance y el tipo sobre elsímbolo。 El insertar()シンボローとタブラデシンボロスに関する情報を提供します。

イェンプロによる:

int a;

Debe ser procesada por el compilador como:

insert(a, int);

見上げる()

Lookup()es utilizado para buscar un nombre en la tabla desímbolospara determinar:

  • タブラに存在している
  • 実用的なユーティリティです。
  • Si nombre se usa en elámbitodeaplicación。
  • Si elsímboloestáinicializado。
  • Si elsímbolodeclarado varias veces。

El formato debúsqueda()varíasegúnel lenguaje deprogramación。 El formatobásicodebe coincidir con el siguiente:

Lookup(símbolo)

エステ・メトド・デヴエルベ・エル・バロール0(セロ)シン・シンボロは存在しません。 タブラデシンボロスに存在するシムエルシンボロ、タブラデアルベルゴスアルマケナドスにある。

アンビトゲスティオン

聖歌隊の歌手:シンボロスの世界的なタブラ*地球のタブラの世界*卓越した世界への道のり*聖域のアルカンス*聖域のパラダイス

決定的なエルアルカンスデナンブレ、シンボロメサエストアンディスプレースタエンストラクチュアジェラルキカケセムエストラエンエルイェメンプロシギエンテ:

. . .
int value=10;
void pro_one()
   {
   int one_1;
   int one_2;
      {              \
      int one_3;      |_  inner scope 1
      int one_4;      |
      }             /
   int one_5;
     {              \
      int one_6;      |_  inner scope 2
      int one_7;      |
      }             /
   }
void pro_two()
   {
   int two_1;
   int two_2;
      {              \
      int two_3;      |_  inner scope 3
      int two_4;      |
      }             /
   int two_5;
   }
. . .

タブラデシンボロスデジェラルキカデエナプチュアの代表プログラム

Tabla deSímbolos

ラ・タブラ・デ・シンボロス・グローバル・コンティエンス・ロス・ノンブルズ・ド・ウナ変数グローバル(int valor)y dos nombres de procedimiento、que debe estar disponible para todos los nodos secundarios se muestra arriba。 ロス・アンブレレス・メン・シオナドス・アン・ラ・タブラ・デ・シンボロスpro_one(y todos susniñostablas)noestándisponibles parasímbolospro_two tablas y su hijo。

エステシンボロジェラルキーアアンラエストラチュラロスダトスデラタブラセアルマセナアンエルアナリザドールセマンティコイカダベスクエノンナンブレセデベバスカーアンウナタブラデシンボロス、セブスカメディアンエルシギエンテアルゴリトモ:

  • プライマルガー、アンシンボロセブスカラエンエルアンビトアクチュアル、エスデシルタブラデシンボロス。
  • Si un nombre se encuentra、entonces、otra cosa que sebuscaráen la tabla desímboloshasta que padre、
  • オビンセエンクエントラエルナンブレオシンボロムンディアルタブラセハブスカドパラエルナンブレ。