Two Flavors  Static (done

Symbol table semantics

The symbol table records information about each symbol name in a program. Historically, names were called symbols, and hence we talk about a symbol table rather than a name table. In this module, the word symbol will mean name.

It is the semantic analysis phase which creates the symbol table because it is not until the semantic analysis phase that enough information is known about a name to describe it.

Many compilers set up a table at lexical analysis time for the various variables in the program, and fill in information about the symbol later during semantic analysis when more information about the variable is known. A classic example comes from FORTRAN and Ada where the same syntax is used to refer to functions and arrays. In these languages, F(2) might refer to an element F2of an array F or the value of function computed using argument 2. For the lexical analyzer to make the distinction, some syntactic and semantic analysis would have to be added.

Code generation uses the symbol table to output assembler directives of the appropriate size and type.

It is important to distinguish between a symbol and an identifier since the same identifier may represent more than one name. For example, in FORTRAN, one can write:

  • COMMON /X/ X

    F(X) = X + 1

The single identifier X represents three names:

  1. the name of a common block (a shared section of memory) .
  2. the element X to be found in the common block.
  3. the dummy variable in a function definition.

Another example is found in block structured languages:

The picture implies that there is an outer block (or procedure) with a declaration of X and two inner blocks (or procedures) each with its own declaration of x; thus, the single identifier X again represents three different names or symbols.

Symbol Tables provide the following information:

  • Given an identifier, which name is it?

    What information is to be associated with the name?

    How do we access this information>

Some symbol tables also include the keywords in the same table while others use a separate table for keywords.

Each piece of information associated with a name is called an attribute (not to be confused with the term semantic attribute from Module 6.)

Attributes are language dependent, but might include the characters in the name, the name's type, and even storage allocation information such as how many bytes the value will occupy. Often, the line number where the name is declared is recorded as well as the lines where the symbol is referenced.

If the language contains scopes, as most do (FORTRAN is an exception), then the scope is often entered into the symbol table. We will discuss a number of attributes separately beginning with the class attribute. The class of a name is an important attribute

A name in a program can represent a variable, a constant, a parameter, a record or union type, a field in a record or union, a procedure or function, a macro, an array, a label, or a file, to name just a few possibilities. These are values for a symbol's class. Of course, not all languages have all these possibilities - FORTRAN has no records - or they may be described using other terms - C uses the term union while Pascal uses the term record.

You might also like
web 3.0 Class 9 Semantic Search
web 3.0 Class 9 Semantic Search
web 3.0 Class 10 Semantic Search
web 3.0 Class 10 Semantic Search
Search and the Semantic Web
Search and the Semantic Web
Tosbuy Mesh Slip on Water Shoes for Women(eu37,gray)
Shoes
  • Imported
  • Rubber sole
  • Open mesh on upper
  • lightweight and flexible
  • fabric upper
Semantic web + Twitter + Faceted searching demo on faveeo.com
Semantic web + Twitter + Faceted searching demo on faveeo.com
NetBase, The Semantic Approach to Web Search
NetBase, The Semantic Approach to Web Search
I Projects | A Web Search Engine-Based Approach to
IEEE Projects | A Web Search Engine-Based Approach to ...
web 3.0 Class 11 Semantic Search and Semantic Social Data
web 3.0 Class 11 Semantic Search and Semantic Social Data
CISE - The Semantic Search Engine - Query development
CISE - The Semantic Search Engine - Query development
WEBSENSA Semantic Search Engine 2.0
WEBSENSA Semantic Search Engine 2.0
Related Posts