Symbol Tables

Symbol tables are core part of every compiler. Turbo Pascal uses linked lists and hasing to effectively store and retrieve identifiers. Functions in this unit take care for data storing, identifier searching and various symbol table management.

Symbol Tables and Hash Functions
Every compiler stores data in different symbol tables. Symbol table is a special data structure that is designed for easy insertion of new symbol with associated data and quick search through all elements in the table.
Symbol Table Management
Each identifier symbol table must be created before it can be used. Turbo pascal uses diferent parameters (number of linked lists) for different identifier symbol tables.
Storing Identifiers Into Symbol Table
Storing identifiers into symbol table is simple because of the way how Turbo Pascal organizes symbol tables.
Searching in Symbol Table
This function searches for current identifier in specified symbol table. The speed of this function and the design of symbol tables (hash function) have a significant impact on the speed of the compiler.
Searching For Identifiers
This function checks for identifier that should be already declared. If Token is Token_Identifier it checks if identifier is declared under current scope. If not the error is reported.
Compacting Symbol Tables
After each module is compiled the symbol tables are compacted to remove unused space.
Checking Public Identifiers
Turbo Pascal calculates a checksum of public identifiers for every unit to quickly check if something has been changed.
Reserved Words
All Turbo Pascal reserved words are stored in a dedicated symbol table.

© 2017 Turbo Pascal | Privacy Policy