Symbol table

Een symbol table is in de informatica een datastructuur die voornamelijk gebruikt wordt in compilers en interpreters.

Een symbol table associeert met iedere identifier in de broncode een verzameling informatie over deze identifier, zoals het datatype van de variabele die door de identifier aangeduid wordt en de plaats in het geheugen waar de inhoud van de variabele te vinden is.

De implementatie van symbol tables wordt gecompliceerd door twee factoren:

  1. De informatie die bij een bepaalde identifier hoort verschilt voor de verschillende dingen die een identifier kan aanduiden. Bijvoorbeeld: voor een primitieve variabele worden het type en de plaats in het geheugen in de symbol table opgeslagen, voor een functie het aantal formele parameters en hun typen plus het returntype en voor een class de methoden en attributen die bij die class horen.
  2. Iedere identifier heeft een bereik. Sommige variabelen, functies of door de gebruiker gedefinieerde typen zijn alleen zichtbaar in een gedeelte van het programma. Daarnaast kan dezelfde identifier naar verschillende dingen verwijzen op verschillende plaatsen in de code. Bijvoorbeeld: in een functie met een lokale variabele a verwijst de identifier a naar een andere variabele dan buiten deze functie als er ook een globale variabele a is.

Debugging

De in door de compiler samengestelde symbol table wordt in de regel in de objectcode opgeslagen. Deze tabel, samen met informatie over bestanden en regelnummers waar het symbool is gedefinieerd (de debug info), dient als basis voor zogeheten symbolic- of sourcelevel debuggers, die in tegenstelling tot klassieke debuggers niet alleen een geheugenadres, maar ook de naam van de variabele in de programmatekst weergeven. Omdat hiermee een rechtstreekse link kan worden gelegd tussen een (reeks van) geheugenadres(sen) en de symbolische naam, vereenvoudigt dit het vinden van fouten in de broncode (de source).

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.