|Re: standard intermediate representation for C/C++ ? firstname.lastname@example.org.NCR.COM (Dave Howell) (1992-05-11)|
|ANDF email@example.com (1992-05-13)|
|Re: ANDF nickh@CS.CMU.EDU (1992-05-15)|
|Re: ANDF caliban!ig@uunet.UU.NET (1992-05-15)|
|Re: ANDF firstname.lastname@example.org (1992-05-19)|
|From:||caliban!ig@uunet.UU.NET (Iain Bason)|
|Date:||Fri, 15 May 1992 19:10:26 GMT|
I have a (paper) copy of "TDF Specification" published by the Defense
Research Agency/Electronics Division (that's in England). Unfortunately
it doesn't list an address or phone number. I can't type it all in (it's
~85 pages and copyrighted), but I'll see if I can find a reasonable
overview. Hmm, let's see...
"TDF is defined in the form of a data-structure which is
an abstract syntax for programs...[deleted text] A TDF
data-structure representing program is encoded into a linear
stream of bits and resides in a file..."
"TDF provides two different methods of identifying values
by names, one static and one dynamic. Identifiers which
statically identify pieces of TDF program are called
TOKENs. They loosely correspond to ANSI C's parameterised
macros but are a great deal more powerful. Identifiers
in a TDF program that dynamically identify run-time
values are of SORT TAG. These identifiers correspond
to the names of variables and procedures in programming
Unfortunately they don't give any examples, but it seems as though
and expression like "a = b + c" would translate to something like
Assign(Obtain_tag(1), Plus(Obtain_tag(2), Obtain_tag(3)))
where, of course, tag 1 refers to 'a', tag 2 to 'b', and tag 3 to 'c'.
There are extra arguments to all of the constructs. For instance,
Assign has arguments to specify error treatment, and whether the
source and destination overlap. TDF has an "Identify" construct that
acts a lot like Lisp "let". Constants are specified with "Make_int",
and so on.
I don't know how closely ANDF will correspond to TDF, but I expect the
basic structure will be the same.
Return to the
Search the comp.compilers archives again.