'BEGIN'
    'REAL' x )invalid parameter like comments:(y;
        x := y := 0.0
'END'

!ALGOL
'BEGIN'
    'PROCEDURE' q( st ) invalid parameter like comments ( a );
        'STRING' st; 'REAL' a; ;
        q( {az} ) also in the call( 1.0 )
'END'

!ALGOL
'BEGIN'
    labelscannotpreceedcomments: 'COMMENT' should fail;
        'GOTO' labelscannotpreceedcomments
'END'


!ALGOL
       'BEGIN'
                'PROCEDURE' q( st )invalid parameter 'COMMENT' :( a );
                        'STRING' st; 'REAL' a; ;
                q( {str} ) az09:( 1.0 )
        'END'


!ALGOL
'BEGIN'
    'PROCEDURE' q( st1 )p:( st2 ); 'COMMENT' ;
        'STRING' st1, st2; ;
    q( {;'COMMENT' ) az: (};} )invalid:( {st2} )
'END'

!ALGOL

'BEGIN'

    'COMMENT'   string tests;

    'PROCEDURE' p(st); 
        'STRING'
            st; 
        ; 

    p( {*string 'STRING' {nested{{}}} 'BEGIN' 'END';} ); 
    p( { ,
        } )
'END' 


!ALGOL

'BEGIN'
    'REAL' 
        real, 
        integer, 
        begin, 
        end; 
    real := 0.0
'END' 

!ALGOL

'BEGIN'
    'REAL' 
        a, 
        ab, 
        abc, 
        abcd, 
        abcde, 
        abcdef, 
        abcdefg, 
        abcdefgh, 
        abcdefghi, 
        abcdefghij, 
        abcdefghijk, 
        abcdefghijkl, 
        abcdefghijklm, 
        abcdefghijklmn, 
        abcdefghijklnmo, 
        abcdefghijklnmop, 
        abcdefghijklmnopq, 
        abcdefghijklnmopqr, 
        abcdefghijklmnopqrs, 
        abcdefghijklmnopqrst, 
        abcdefghijklmnopqrstu, 
        abcdefghijklmnopqrstuv, 
        abcdefghijklmnopqrstuvw, 
        abcdefghijklmnopqrstuvwx, 
        abcdefghijklmnopqrstuvwxy, 
        abcdegfhijklmnopqrstuvwxyz, 
        abcdefghijklmnpoqrstuvwxyza, 
        abcdefghijklmnopqrstuvwxyzab, 
        abcdefghijklmnopqrstuvwxyzabc, 
        abcdefghijklmnopqrstuvwxyzabcd, 
        abcdefghijklmnopqrstuvwxyzabcde, 
        abcdefghijklmnopqrstuvwxyzabcdef, 
        abcdefghijklmnopqrstuvwxyzabcdefg, 
        abcdefghijklmnopqrstuvwxyzabcdefgh, 
        abcdefghijklnmopqrstuvwxyzabcdefghi, 
        abcdefghijklmnopqrstuvwxyzabcdefghij, 
        abcdefghijklmnopqrstuvwxyzabcdefghijk, 
        abcdefghijklmnopqrstuvwxyzabcdefghijkl, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklm, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmn, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmno,
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnop, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu, 
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv; 
        'INTEGER' ac, 
        c a; 
    ac := 1 2  3    4     5     6; 
    a := 1 . 0 0  @  1  0
'END' 

!ALGOL

'BEGIN'
'COMMENT' library 1;
    'ARRAY' 
        a[1 : 3], 
        b[1 : 3, 1 : 3]; 
    'REAL' 'PROCEDURE' sum(dim, a); 
        'VALUE'
            dim; 
        'INTEGER' 
            dim; 
        'ARRAY' 
            a; 
        sum := 
            'IF' dim = 1 'THEN' 
                a[1] + a[2] + a[3]
            'ELSE'
                sum2(a); 

    'REAL' 'PROCEDURE' sum2(a); 
        'ARRAY' 
            a; 
        sum2 := a[1, 1] + a[1, 2] + a[1, 3] + a[2, 1] + a[2, 2] +
            a[2, 3] + a[3, 1] + a[3, 2] + a[3, 3]; 

    'INTEGER' 
        i, 
        j; 
    'FOR' i := 1, 
        2, 
        3 'DO'
        'BEGIN'
        a[i] := i * i; 
        'FOR' j := 1, 
            2, 
            3 'DO'
            b[i, j] := a[i] + j
        'END'; 
    outreal(1,sum(2, a)); 
    outreal(1,sum(1, b))
'END' 



!ALGOL

'BEGIN'
'COMMENT' library 1;
    'ARRAY' 
        a[1 : 3], 
        b[1 : 3, 1 : 3]; 
    'REAL' 'PROCEDURE' sum(dim, a); 
        'VALUE'
            dim; 
        'INTEGER' 
            dim; 
        'ARRAY' 
            a; 
        sum := 
            'IF' dim = 1 'THEN' 
                a[1] + a[2] + a[3]
            'ELSE'
                sum2(a); 

    'REAL' 'PROCEDURE' sum2(a); 
        'ARRAY' 
            a; 
        sum2 := a[1, 1] + a[1, 2] + a[1, 3] + a[2, 1] + a[2, 2] +
            a[2, 3] + a[3, 1] + a[3, 2] + a[3, 3]; 

    'INTEGER' 
        i, 
        j; 
    'FOR' i := 1, 
        2, 
        3 'DO'
        'BEGIN'
        a[i] := i * i; 
        'FOR' j := 1, 
            2, 
            3 'DO'
            b[i, j] := a[i] + j
        'END'; 
    outreal(1,sum(1, a)); 
    outreal(1,sum(2, b))
'END' 

!KDF9
