% Testing the parser and printer

% Every syntactic construct

1;
x;
true;
false;
if 1 then 2 else 3;
let x = 1 in 2;
fun f(x:int):int is 1;
();
case 1 of in1 x => 2 | in2 y => 3;
letcc[int] x in 1;
throw[int] 1 to 2;
try 1 ow 2;
fail[int];
1,2;
1=2;
1<2;
1+2;
1-2;
1*2;
~1;
abort[int] 1;
in1[int] 1;
in2[int] 1;
1 2;
1.1;
1.2;
fail[int];
fail[bool];
fail[int->int];
fail[int+int];
fail[int*int];
fail[0];
fail[1];
fail[int cont];

% Every precedence relation

1,2,3;
(1,2),3;
1,(2,3);

1,2=3;
1=2,3;
(1,2)=3;
1,(2=3);
(1=2),3;
1=(2,3);

1=2=3;
(1=2)=3;
1=(2=3);

% Okay, I got bored here

~~1 2;
(~~1) 2;
~(~1 2);
~(~1) 2;
~~(1 2);

2.1 3.1;
(2.1 3).1;
2.1 (3.1);
