Related articles |
---|
[6 earlier articles] |
Re: Compilers in six hours anton@mips.complang.tuwien.ac.at (1994-05-19) |
Re: Compilers in six hours chase@Think.COM (1994-05-19) |
Re: Compilers in six hours hbaker@netcom.com (1994-05-20) |
Re: Compilers in six hours monnier@di.epfl.ch (Stefan Monnier) (1994-05-22) |
Re: Compilers in six hours munk@prl.philips.nl (1994-05-24) |
Re: Compilers in six hours li@marcus.cs.umn.edu (1994-05-24) |
Re: Compilers in six hours cytron@kato.wustl.edu (1994-05-25) |
Re: Compilers in six hours hobbs@gemmax.zko.dec.com (1994-05-26) |
Newsgroups: | comp.compilers |
From: | cytron@kato.wustl.edu (Ron Cytron) |
Keywords: | courses |
Organization: | Washington University in St. Louis |
References: | 94-05-066 94-05-101 |
Date: | Wed, 25 May 1994 15:25:31 GMT |
I have students in the first course translate from a C-like language
(extended with nested procedures, and the Algol-68 "everything has a
value" semantics, but cut back on data types and constructs) to a
Scheme-like language. In the target language, the atomic unit of
execution is an Expression, and each has a:
(PushLevel n (LinkExpression k)
(Args (SymbolID s1)
(SymbolID s2)
...
)
(Locals (SymbolID l1)
(SymbolID l2)
...
)
)
which declares the static nesting depth (n), the next outer scope (k), and
the arguments and locals associated with this expression.
I find this an easy target for a one-semester course, and I provide an
interpreter for it, so students can watch their programs execute.
This could be followed up with some low-level code generation, probably
using iburg, or could be the subject of program optimization, which I
teach in a second course.
The next time I teach the first course, I may short-change parsing
somewhat to cover the code generation, so the students do get a feeling
for low-level code issues.
The run-time library is written in this intermediate language, by the way.
There's tech report I could send interested people on this intermediate
language (which I call FrIL).
Ron Cytron
Washington University
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.