CS 257 (Spring 2003) Project: LOBO Interpreter *
LOBO is a strictly imperative LOGO-like language with a list-based
syntax. In LOBO, it is possible to define procedures, including
recursive procedures, but not functions which return values. Like
LOGO, the metaphor is turtle graphics: All graphical output is
a side-effect of moving the turtle. A detailed description of the
language, including illustrated examples, can be found in the LOBO Reference Manual.
In this project, you will write an interpreter for the strictly
imperative LOBO language in a purely functional subset of
Scheme. Graphic output will be based on plumbing graphics. All
output is postponed until the LOBO program terminates, at which time a
single plumbing graphics object, representing the output of the LOBO
program, is rendered.
Grading
- Satisfactory (C): Implement forward, backward,
right, left, penup, pendown, and repeat. Run examples 1-5, and 9.
- Good (B): Do all of the above plus to, make,
if, and stop. Run examples 10, 12,
STARFISH, STARS, KOCH CURVE, and HILBERT
CURVE.
- Excellent (A): Do all of the above plus color, setxy,
push, and pop. Run examples 13-16, FANCY SPIRAL,
TREE, and LISSAJOUS.
Extra Credit
- Demonstrate your interpreter using a LOBO program of your own
invention (or a LOGO program you find on the web, e.g., here, and
translate) which produces a beautiful picture or uses the language in
a surprising or interesting way.
- Add a feature or keyword to the language above and beyond what I
have asked for and demonstrate it. Hey, it's your language
because you are writing the interpreter: Make it do something
cool.
Some LOBO programs
What You Should Hand In
- Listings of all your code.
- Representative graphic output.
When You Should Hand It In
The above should be handed in to the TA before midnight on Fri. May 16.
Of Possible Interest
* This webpage is located at http://cs.unm.edu/~williams/cs257/projects03.html