S --> AB A --> # A --> aA B --> Bb B --> b B --> cIf the language expressed by this grammar is regular, define it using a regular expression. If not, why not?
Assume the language of your project is extended so that a program is a sequence of expressions that are evaluated in order. Variables that appear free in these expressions refer to top-level bindings. (set! may be used to make top-level "definitions" as in Chez Scheme.) All top-level bindings, as well as the values of all complex literals, should be referenced as offsets from the global pointer. (It is not necessary for the intermediate compilation forms of this extended language to be executable as Scheme expressions.)
The expressions may be distributed over a sequence of independently compiled files. Before a program may be run, a linking loader must be invoked as a Unix command and given the names of the object files that resulted from compilation of the program's files.
Describe in as much detail as possible a reasonable design for this language extension. Be sure to include the object file format and a careful description of the operations performed by the linking loader. Do not bother with details of the intermediate representations used by the compiler except as necessary to understand the support of independent compilation.