[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GNU Marst 2.6 release information
From: |
Andrew Makhorin |
Subject: |
GNU Marst 2.6 release information |
Date: |
Fri, 16 Nov 2007 16:43:08 +0300 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
GNU Marst 2.6 -- Release information
************************************
Release date: Nov 16, 2007
GNU Marst is an Algol-to-C translator. It automatically translates
programs written in the algorithmic language Algol 60 (Level 0) into
the ANSI C programming language.
In this release:
Two bugs were fixed.
The first bug was detected due to a test program provided by Leif Harcke
<address@hidden>. It appeared in a context like follows:
a[i] := i
where identifier i was considered as the left part of the assignment
statement (i.e. as if there were a[i] := i := ...) while it is a final
expression in the right part.
The second bug appeared if a switch designator was used before
corresponding switch declaration.
A set of 130 Algol 60 validation tests were added. These tests along
with the report "Some validation tests for Algol 60 compiler" were
kindly provided by Mr Brian Wichmann, one of the authors of the Modified
Report on Algol 60.
All the tests were passed successfully with the following exceptions.
Test 16 is not relevant, because Marst expects string literals to be
coded as in C. (Note that this is the only difference from the syntax of
the reference language.)
Test 42 was not passed, because Marst does not allow array dimension to
be greater than 9.
Test 75 was not passed, because no input data was provided.
Test 87 was not passed, because Marst implements the for operator as
defined in the Modified Report:
4.6.4.2. Step-until element
If A, B and C are arithmetic expressions then
for V := A step B until C do S
is equivalent to
begin <type of B> Theta;
V := A;
Gamma:Theta := B;
if (V - C) * sign(Theta) <= 0 then
begin
S; V := V + Theta;
go to Gamma;
end
end
that assumes that the step value B is evaluated once before enter to the
loop.
However, Mr David Hill, one of the authors of the Modified Report,
informed me that the Computer Journal version is not the final word. In
particular, he said:
"There was a further development concerning a change in the
interpretation of the step-until element (para 4.6.4.2). It was
annoying that we got this right originally but, when the draft went
out for comment, we got one that caused us to alter it. After
publication more comments came in that caused us to revert to the
earlier version. This is explained in Computer Journal, 1978, 21,
282."
"The first of these was included in the 1981 Netherlands Standard and
the 1984 International Standard (ISO 1538-1984, now withdrawn). The
first, and a slightly different version of the second, in the 1982
Russian Standard (in Russian)."
In other word, paragraph 4.6.4.2 of the Modified Report was replaced by
the following:
4.6.4.2. Step-until element
If A, B and C are arithmetic expressions then
for V := A step B until C do S
is equivalent to
begin <type of B> Theta;
V := A;
Theta := B;
Gamma:if (V - C) * sign(Theta) <= 0 then
begin
S; Theta := B; V := V + Theta;
go to Gamma;
end
end
that assumes that the step value B should be re-evaluated every time on
execution of the loop.
For more details about the test set see file tests/README.
See GNU Marst web page <http://www.gnu.org/software/marst/marst.html>.
GNU Marst distribution can be ftp'ed from <ftp://ftp.gnu.org/gnu/marst/>
or from some mirror ftp sites; see <http://www.gnu.org/order/ftp.html>.
MD5 check-sum is the following:
2e69b7334b47b73315be5485e12307d1 *marst-2.6.tar.gz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
iD8DBQFHPZ2O0XvyMFmB6BgRAr7yAJ9OXd3cWPsGfznRM0b8DdkFnokN/QCeODQo
wMGcQb17e7SjeM9huod3dkY=
=HA3d
-----END PGP SIGNATURE-----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- GNU Marst 2.6 release information,
Andrew Makhorin <=