From: | gah4 <gah4@u.washington.edu> |
Newsgroups: | comp.compilers |
Date: | Tue, 31 Jan 2023 22:59:17 -0800 (PST) |
Organization: | Compilers Central |
References: | <Adkz+TvWa4zLl8W9Qd6ovtClKZpZrA==> 23-01-078 |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="6571"; mail-complaints-to="abuse@iecc.com" |
Keywords: | translator, comment |
Posted-Date: | 01 Feb 2023 14:36:58 EST |
In-Reply-To: | 23-01-078 |
On Sunday, January 29, 2023 at 8:58:58 AM UTC-8, Roger L Costello wrote:
(snip)
> Sally Smith creates Programming_Language_2. Sally wants to leverage the
> compiler work done on Programming_Language_1. She considers two approaches:
> 1. Create a compiler front-end for Programming_Language_2 which compiles
> instances to Intermediate_Code_1.
> 2. Create a translator which converts instances of Programming_Language_2 into
> Programming_Language_1 instances.
The complication with this question is the definition of intermediate language.
Some compilers have a front end, middle end, and back end, with some form of
intermediate code between each. They might be more or less general.
Depending on the compiler writer (or writers), there may be thought and time
to make them more general, allowing for other languages.
But okay, choice 2, especially if the language 1 has a standard, can be useful.
(I was almost going to shorten "Programming_Language_1" to PL-1, but
then realized that some might read that wrong.)
That allows it to be used with other compilers, even ones not written yet.
On the other hand, it is restricted by the features of that language, which
sometimes make things complicated.
In the case of choice 1, you might be able to add new features to the
intermediate language, especially if you can join with its project.
Usually, though, there are some features that don't translate to
language 1. Or translate in an extremely complicated way.
Usually the translated language is unreadable to most people who
actually know the language.
Some examples. TeX was written in Pascal. Well, not really.
It was written in Web, a language and preprocessor that generates
Pascal code to be compiled. At some point, it was desired to have
it in C instead. A program was written to translate much of
Pascal into C, but some things were not so easy. So instead,
the features of the Web preprocessor were used, to convert to
a Pascal-like language, easier to convert to C. This was made
possible by the macro facilities of Web, and with its change
file feature.
Another one is f2c, which translates Fortran to C, but uses
special library routines and otherwise not so readable output.
Could we have a standard intermediate language, with all
features needed, or that ever will be needed?
[The answer to that last question is no. It's a very old bad idea,
with the first failed attempt UNCOL in 1958. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.