Een symbool in de informatica is een discrete waarde waaraan een semantische inhoud, dat wil zeggen een specifieke betekenis, is toegevoegd. Meer specifiek een associatie van een identifier met zijn eigenschappen, waaronder het geheugenadres, naam, type en taalafhankelijke restricties, voorbeelden hiervan zijn definities van klassen, variabelen, functies en constanten.
Het doel van het gebruik van symbolen is vierledig:
calculate_error
zegt meer dan een letterlijke instructie call $7FCE:D832
.TABLE_A_SIZE
maakt echter zeer duidelijk welke tabel bedoeld wordt.TABLE_A_SIZE
te worden veranderd en hoeft niet voor ieder voorkomen van het getal 10 te worden uitgezocht of deze waarde op Tabel A, Tabel B of iets anders betrekking heeft.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 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 geheugenadres of een reeks van geheugenadressen en de symbolische naam, vereenvoudigt dit het vinden van fouten in de broncode, in de source.
Een speciaal geval vormen 'primitieve' of 'axiomatische' symbolen. Deze worden, in tegenstelling tot normale symbolen, niet in de programmatekst gedefinieerd, maar zijn in de definitie van de taal vastgelegd. Alle andere symbolen worden gedefinieerd in termen van primitieve symbolen. Voorbeelden van primitieve symbolen zijn sleutelwoorden, zoals 'if' en 'else', en voorgedefinieerde types, zoals 'int' en 'float'.