0
begin
    % computes factorial n iteratively                                       %
    integer procedure factorial( integer value n ) ;
        if n < 2
        then 1
        else begin
            integer f;
            f := 2;
            for i := 3 until n do f := f * i;
            f
        end factorial ;
 
    for t := 0 until 10 do write( "factorial: ", t, factorial( t ) );
 
end.

我已经编译了代码,但每次都说错误。看

$a68g main.alg
5             then 1
              1     
a68g: syntax error: 1: possibly a missing or erroneous separator nearby.
9                 for i := 3 until n do f := f * i;
                             1                     
a68g: syntax error: 1: possibly a missing or erroneous separator nearby.
13        for t := 0 until 10 do write( "factorial: ", t, factorial( t ) );
                     1                                                     
a68g: syntax error: 1: possibly a missing or erroneous separator nearby.
4

2 回答 2

1

试试marst ...“ MARST 是一个 Algol-to-C 翻译器。它自动将用算法语言 Algol 60 编写的程序翻译成 C 编程语言。”

于 2021-02-18T23:25:13.093 回答
1

您正在使用 Algol 68 编译器,但代码不是用 Algol 68 编写的。

Algol 60 和 Algol 68 是具有不同语法的不同语言。

您需要将您的代码转换为 algol 68 才能使用 a68g 或找到一个 algol 6o 编译器。

于 2021-01-28T11:21:41.707 回答