info-gnu
[Top][All Lists]
Advanced

[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-----





reply via email to

[Prev in Thread] Current Thread [Next in Thread]