Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Type Checking è il processo di verifica dei vincoli sui tipi:

  • può essere eseguito a tempo di compilazione o a tempo di esecuzione;
  • il check dinamico è spesso usato nei linguaggi interpretati, mentre nei linguaggi compilati viene usato il check statico;
  • il checking statico è uno dei principali task semantici eseguiti da un compilatore.

Un type-checker è formato da un insieme di moduli interoperanti:

  • scanner:riconosce il lessico;
  • parser:verifica la sintassi ed aggiunge la semantica;
  • gestore di type-expression;
  • gestore di symbol-table.

Le tabelle dei simboli associano valori a nomi per rendere accessibili informazioni semantiche, legate ad un identificatore, al di fuori del contesto in cui esso è stato dichiarato.

Le informazioni associate a ciascun nome vengono utilizzate per verificare il corretto uso semantico degli identificatori di un programma.

Tali informazioni possono essere aggiornate dinamicamente via via che nuove caratteristiche del nome sono dichiarate nel programma o dedotte dal compilatore.

Le informazioni che vengono memorizzate all'interno di una
tabella dei simboli vengono dette entry.

Ogni operazione di inserimento definisce una chiave
(solitamente una stringa) tramite la quale poter,
successivamente, reperire le informazioni.

Un traduttore utilizza diverse tabelle dei simboli per
memorizzare informazioni diverse o appartenenti a contesti
diversi.

Symbol Table: implementazione

La scelta dipende dal numero di simboli da memorizzare, dalle prestazioni che si intendono ottenere, dalla complessità del codice che si intende produrre.

Esempio:

import java.util.HashMap;

HashMap symTable = new HashMap();

symTable.put("a","int"); 
symTable.put("b","float");

String tipo = (String) symTable.get("a");
System.out.println(tipo);

symTable.remove("a");

symTable.clear();

Ovviamente questo è codice Java, nel caso in cui si volesse creare una Symbol Table in CUP bisogna andare a scrivere istruzioni sia in parser code che init code e includere eventuali classi custom esterne per la definizione dei singoli elementi della symbol table.

Average (1 Vote)
The average rating is 5.0 stars out of 5.