"C" Interpreter

Ken Raeburn raeburn at athena.mit.edu
Mon Jan 9 00:45:17 AEST 1989


In article <84207 at sun.uucp> haley%lucid at Sun.COM (Mike Haley) writes:
>Iam looking for a "C" interpreter that runs under UNIX.

You could certainly do worse than Saber-C, produced by a company
called (I think) Saber Software, in Cambridge, MA.

I can only say a little bit about the people supporting it.  I know
one of them, Stephen Kaufer, from when he had an office here at
Athena, and I've nothing negative to say about him.  He always showed
interest in any problems I ran into with the software.  (Nice guy,
too.)  I've also dealt a little bit (quick demo in person, or email)
with one or two other people from their staff; they've also been
friendly and responsive.

Saber runs both source and object code, with a reasonably large amount
of sanity checking when interpreting source.  (Uninitialized values,
pointers out of bounds, accessing an object with a type different from
that originally stored there, etc, etc.)  There's also lots of
load-time cross-checking of declarations and definitions.

It also runs in an interactive mode, which interprets shell-like
command lines and C source code, with subroutines available that
implement all of the commands.  (Earlier versions required you to use
C statements for everything, i.e.:

	quit();

	load("foo.c");

but version 2 has a more friendly shell-like interface as well.)

When errors are flagged at runtime, the user can interrupt execution,
run a few commands (examine or modify variables, call other routines)
and resume execution or reset everything and run it over.

The user-settable options include ANSI or pre-ANSI modes (I don't
remember exactly what parameters change here, I always use ANSI);
automatic reloading of changed source files (I think even including
dependencies on header files); miscellaneous parameters about how to
present information to the user; automatic suppression of certain
warnings.

The latest version we've got, at least (dunno about earlier ones), can
handle programs forking; pulls up a new window on your display for the
subprocess, etc.  (Not sure what it does for terminals; I haven't used
this feature much.)

Lots of nice stuff.  I think the only complaint I had about a recent
version (after looking over the documentation) was that there was no
way to turn off its interpretation of lint-style comments like
/*ARGSUSED*/.  At least, I think that was it.  (Sorry, it was a while
ago, and I haven't used it much lately.)

Mmm... make that three complaints.  #2: If you're debugging something
large from source code, it gets to be slow and requires lots of
memory.  Sure, it's to be expected, but I can wish. :-)

And #3: If your program is big enough, and your system runs out of
memory (or you hit your per-process limit), or occasionally with some
other types of errors, saber sometimes finds itself unable to recover.
As I said, I haven't used it in a while, so I don't remember all the
details, and besides, it's probably gotten better since then.

I expect there'll be more and better stuff in future versions.  (Steve
was asking opinions one day along the lines of, "which of these N
features would be most useful to see in the next version of saber?"
They didn't do 'em all, so maybe in the next version. :)

I don't know their street address or phone numbers, but I think Steve
reads this newsgroup; he can probably provide you some more info.

~~
Disclaimer:  I don't work for these folks, I just use there stuff.  I
also don't speak for my employers here, but I think they like the
product too. :)
~~
~~ Ken Raeburn / raeburn at athena.mit.edu
~~ systems programmer
~~ MIT Project Athena
~~



More information about the Comp.lang.c mailing list