Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

To make our C-- language more powerful, we sometimes need to learn from other ex

ID: 3738495 • Letter: T

Question

To make our C-- language more powerful, we sometimes need to learn from other existing languages. The C language allows you to define new names for existing types using typedefs. Here is some example code that uses typedefs:

The first typedef defines money to be a synonym for int. Any declaration that follows this typedef can use money instead of int. The second typedef defines dollars to be a synonym for money, which makes it a synonym for int. Any declaration that follows this typedef can use dollars instead of int.

Typedefs can also be used with struct types:

A typedef can occur anywhere that a variable declaration (local or global) can occur. The usual C scoping rules apply to the names in typedefs.

a. Assume that the following productions have been added to the grammar for the c-- language:

What other productions need to be changed and/or added to the c-- grammar to allow typedefs?

b. Now consider the name-analysis phase of the compiler. Note that, in addition to the usual errors for multiply-defined names and for uses of undefined names, the name analyzer must enforce the following rules:

The declaration typedef T xxx; is an error if T is not a built-in type (e.g., int, bool) or a struct type (in which case T will be of the form: struct ttt) or a new type defined by a previous typedef in the current or an enclosing scope.

The declaration typedef T xxx; is an error if xxx has already been declared in the current scope (as a variable, function, parameter, or new type).

A variable, function, or parameter can only be declared to be of type T if T is either a built-in type or a new type defined by a previous typedef in the current or an enclosing scope. (A variable can still be declared to be of type struct ttt as before.)

Answer each of the following questions:

1. What should be done to process a typedef: typedef T xxx;?

2. What information should be stored with each name in the symbol table?

Explanation / Answer

ANSWER:

Productions need to be changed and/or added to the cats grammar to allow typedefs uses declspecs_ts after_type_declaration.

typedef int data1;

typedef float data2;

{

data1 data2;

}

declspecs_nots notype_declaration

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote