Free C Interpreters (CINT, UPS, EiC)

Dibyendu Majumdar <>
2 Jan 1999 21:48:55 -0500

          From comp.compilers

Related articles
Free C Interpreters (CINT, UPS, EiC) (Dibyendu Majumdar) (1999-01-02)
| List of all articles for this month |

From: Dibyendu Majumdar <>
Newsgroups: comp.compilers
Date: 2 Jan 1999 21:48:55 -0500
Organization: Compilers Central
Keywords: C, interpreter, summary


I am writing this in the hope that it may be of use to others.

I have wanted to write an ISO/ANSI C interpreter for some
time. However, not being trained in this area, I found it difficult to
get started. Maybe one day I will understand the principles well
enough to write a C interpreter on my own.

In the meantime, I decided that the next best thing for me to do was
to understand an existing implementation of a C interpreter. After
looking for several months for a decent implementation of an ISO/ANSI
C interpreter for which source was freely available - I found three
that I liked. These are described below:

1. CINT - a C/C++ interpreter

This was the first one I found. The website is:

Created by Masaharu Goto, this is reasonably good C/C++
interpreter. Particularly notable is its ability to call external
routines (even in shared libraries or DLLs). The product is portable
and available for Win32/MSDOS/various UNIX flavors. The Interpreter
can be linked into any C application. It is also perhaps the only C++
interpreter available freely.

From my point of view I found the quality of code such that it was
very near impossible to understand how it works. However, it works
reasonably well - it can interpret itself !!

2. UPS C Debugger

Although this is really an X-Windows graphical debugger for C/C++, it
contains a reasonably complete ANSI-C interpreter. This implementation
is interesting for the following reasons:

                * It can interpret single C source files, or
                    multiple C source files. When interpreting multiple C
                    sources, a compile/link model is used to build
                    a byte-code executable. This can then be executed
                    by a Virtual Machine interpreter. This works for
                    single C source files as well.

                * The UPS debugger can debug (with limitaions) an
                    interpreter executable created above.

The website for this is Note that the
UPS C interpreter is undocumented - and does not work straight out of
the box as of now. I can supply patch files for Linux RedHat 5.1 to
anyone who is interested - please write to me at

I found this implementation the best from my point of view. The
quality/style of code is very good and the design is excellent - the
design completely separates the following phases:


If you want to understand how to write interpreters/debuggers, I
recommend this whole-heartedly.

3. EiC byte-code interpreter

I recently found this. Created by Ed Breen, this is a good C
interpreter. It can be run interactively or in scripting mode. Since
most readers of this new group are already aware of this interpreter -
I am not describing it further here.

The website I use is

For my purposes, I found UPS to be better mainly because of the way it
is written.


I am currently working on improving the UPS C Interpreter. I have
made a number of bug-fixes/minor enhancements - my main objective is
to make the interpreter as 'ANSI/ISO conforming' as possible. I have
also created a list of known problems/bugs in the interpreter, and a
brief writeup.

I have submitted my changes to the team that maintains the code -
hopefully the fixes will be available in the standard release very

Until then, I can supply a patch to anyone who is interested (my patch
will only work on RedHat 5.1).


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.