Related articles |
---|
Q: Intermediate code for interpreting & compiling? davis@wln.com (1995-02-10) |
Re: Q: Intermediate code for interpreting & compiling? torbenm@diku.dk (1995-02-14) |
Re: Q: Intermediate code for interpreting & compiling? cef@geodesic.com (Charles Fiterman) (1995-02-14) |
Re: Q: Intermediate code for interpreting & compiling? danhicks@aol.com (1995-02-22) |
Re: Q: Intermediate code for interpreting & compiling? Dave@occl-cam.demon.co.uk (Dave Lloyd) (1995-02-24) |
Re: Q: Intermediate code for interpreting & compiling? zmola@cicero.spc.uchicago.edu (1995-02-24) |
Re: Q: Intermediate code for interpreting & compiling? davidm@Rational.COM (1995-02-28) |
Re: Q: Intermediate code for interpreting & compiling? anton@mips.complang.tuwien.ac.at (1995-03-01) |
Newsgroups: | comp.compilers |
From: | danhicks@aol.com (DanHicks) |
Keywords: | interpreter, code, comment |
Organization: | America Online, Inc. (1-800-827-6364) |
References: | 95-02-103 |
Date: | Wed, 22 Feb 1995 02:55:16 GMT |
>>>
I am looking for some type of solution to a problem that I think arises
enough. I am programming a language that will act much like smalltalk,
namely, that it will be incrementally compiled into some form of
intermediate code that will later be compiled OR interpreted. I would like
it to be as generic (i.e. platform independant) as possible as I only
really want to write it once and recompile on multiple machines with as
little tweaking as possible... C is not a valid intermediate because then
I would be implementing 2 languages at once and I'm not up to that yet...
(Student, ya know...) that, and I think it would be easier to bring it to
a lower level than that...
<<<
The classical response (as has already been mentioned) is a stack
notation. However, I think there's another notation that deserves
consideration: A LISP-like notation. I'm not necessarily suggesting
either the textual parenthesized form, or the internal linked-list form,
but rather a length-prefix form. Each list can be prefixed by a length
word, with one bit devoted to distinguishing between lists and atoms.
This format is nearly as efficient to parse as machine-readable stack
notation, but it has several advantages.
Two of those advantages: 1) "Structured" control structures can be easily
represented, whereas stack notations need to either use branch/label
schemes or introduce additional structuring concepts. (A disadvantage,
though, is that non-structured code is quite difficult to represent.) 2)
It is easy to implement "thunks". Now few languages have "thunks" any
more, but thunks are still a useful concept internal to a compiler, and
with the LISP-like notation it is easy to pass a piece of pseudo-code as a
parameter.
Dan Hicks
[Hey, lots of languages have thunks. But now we call them function pointers.
-John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.