|
|
Algol-68 |
C |
Pascal |
Turing |
general |
block structured, expression based language |
"flat", some expression based features |
block structured, imperative |
imperative, has `modules' |
expressions |
arith |
+,-,*,/,^ NB.% is int div |
+,-,*,/,% NB.% is int mod |
+,-,*,/, div, mod |
+,-,*,/, ** |
comparisons |
=, <>, <, <=, >, >= |
==, !=, <, <=, >, >= |
=, <>, <, <=, >, >= |
=, not= <, <=, >, >= |
logical |
and, or, not |
&&, ||, ! |
and, or, not |
and, or, not |
conditional expression |
if e then e1 [elsf e' then e2] else e3 fi or (e | e1 | e2) also case exp'n |
e ? e1 : e2 |
n.a. |
n.a. |
statements |
assignment |
x:=e |
x=e; |
x:=e |
x:=e |
conditional |
if e then s1 [elsf e' then s2] [else s3] fi |
if(e) s1 [else s2] |
if e then s1 [else s2] |
if e then s1 [elsf e' then s2] [else s3] end if |
case |
case e in s1,s2,... out s esac |
switch(e) {case e1:s1 ...} |
case e of e1:s1;... end |
case e of label e1:s1;... end case |
for |
[for] [i] [from e1] [by e2] [to e3] [while eb] do ... od |
for(s1;eb;s2)s3 |
for i:=e1 (to | downto) e2 do s |
for [decreasing] i:range s end for |
while |
see above |
while( ) |
while do |
loop ... exit when e; ... end loop |
repeat |
n.a. |
n.a. |
repeat until e |
use loop |
group |
begin...end or (...) |
{...} |
begin...end |
begin...end |
function result |
final exp'n |
return e |
fnName=e |
result e |
declarations |
constants |
T c=e |
#define |
const c=ce |
const c:=e |
variables |
T x [=e] |
T x |
var x:T |
var x:T |
subroutine |
proc( )void s |
void p( ) {...} |
procedure p(...) ... begin ... end |
procedure p(...) ... end |
function |
proc(...)T e |
T f(...) {...} |
function f(...)T ... begin ... end |
function f(...)T ...end |
function result |
final exp'n |
return e |
fnName=e |
result e |
parameters |
T x |
T x |
[var] x:T |
[var] x:T |
types
| © L.Allison '99
|
data type |
mode |
typedef |
type |
type |
basic types |
int real bool char |
int float char |
integer real boolean char |
int real boolean char |
structure |
struct( ) |
struct( ) |
record end |
record end record |
field access |
f of s |
s.f |
s.f |
s.f |
pointer |
ref |
* |
^ |
pointer to |
pointer access |
implicit or cast |
*, -> ptr & field |
^ |
thecollection(x) |
special ptr value |
nil |
NULL |
nil |
nil(thecollection) |
union |
union(...) |
union |
record case variant |
union ... end union |
array |
array T1 of T2 |
T2 a[size] |
array [T1] of T2 |
array T1 of T2 |
array access |
a[i] |
a[i] |
a[i] |
a(i) |
array slicing |
m[i:j, ] rows i to j of 2D |
n.a. |
m[i] is row i of 2d |
n.a. |
sets |
n.a. |
n.a. (use bits) |
set of T |
set of T |
|
|