--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-tests/sort.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing (parts of) table library\"", ), ], ], ), ], line: 4, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing unpack\"", ), ], ], ), ], line: 4, }, Variable { names: [ ( "unpack", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), ], line: 8, }, ], ], line: 10, column: 0, }, Variable { names: [ ( "maxI", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 10, }, ], ], line: 11, column: 0, }, Variable { names: [ ( "minI", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mininteger", ), ], line: 11, }, ], ], line: 14, column: 0, }, Function { local: true, name: [ Symbol( "checkerror", ), ], args: [ "msg", "f", "...", ], body: CodeBlock { start: 32, code: [ Variable { names: [ ( "s", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 15, }, ], [ Symbol( "...", ), ], ], ), ], line: 15, }, ], ], line: 15, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 16, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 16, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 16, }, ], ], ), ], line: 16, }, ], ], ), ], line: 15, }, ], end: 58, }, line: 17, column: 1, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"wrong number of arguments\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), ], line: 20, }, ], [ Table { data: [], line: 20, column: 10, }, ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 17, }, Variable { names: [ ( "x", false, ), ( "y", false, ), ( "z", false, ), ( "a", false, ), ( "n", false, ), ], values: [], line: 22, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 22, }, ], values: [ [ Table { data: [], line: 23, column: 4, }, ], ], line: 23, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "lim", ), ], line: 23, }, ], values: [ [ Ident { expr: [ Symbol( "_soft", ), ], line: 23, }, Operator( ( "and", true, ), ), Symbol( "200", ), Operator( ( "or", true, ), ), Symbol( "2000", ), ], ], line: 24, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 24, }, ], step: None, code: CodeBlock { start: 104, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 24, }, ], ), Symbol( "]", ), ], line: 24, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 24, }, ], ], line: 24, column: 6, }, ], end: 111, }, line: 24, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "select", ), Call( [ [ Ident { expr: [ Symbol( "lim", ), ], line: 25, }, ], [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 25, }, ], ], ), ], line: 25, }, ], ], ), ], line: 25, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 25, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "'#'", ), ], [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 25, }, ], ], ), ], line: 25, }, ], ], ), ], line: 25, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 25, }, ], ], ), ], line: 24, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 25, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 26, }, ], ], ), ], line: 26, }, ], ], line: 26, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 27, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 26, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 27, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 28, }, ], ], ), ], line: 28, }, ], ), ], line: 28, column: 8, }, ], ], line: 28, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 29, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 29, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 29, }, ], ), Symbol( "]", ), ], line: 29, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 29, }, ], ], ), ], line: 28, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 29, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, ], [ Ident { expr: [ Symbol( "lim", ), ], line: 30, }, Operator( ( "-", true, ), ), Symbol( "2", ), ], ], ), ], line: 30, }, ], ), ], line: 30, column: 12, }, ], ], line: 30, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 31, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 31, }, Operator( ( "-", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 31, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 31, }, ], ], ), ], line: 30, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 31, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, ], [ Symbol( "10", ), ], [ Symbol( "6", ), ], ], ), ], line: 32, }, ], ), ], line: 32, column: 12, }, ], ], line: 32, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 33, }, ], ], ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 32, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 33, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 34, }, ], [ Symbol( "11", ), ], [ Symbol( "10", ), ], ], ), ], line: 34, }, ], ), ], line: 34, column: 12, }, ], ], line: 34, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, ], ], ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 34, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, Ident { expr: [ Symbol( "y", ), ], line: 36, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 36, }, ], [ Symbol( "10", ), ], [ Symbol( "10", ), ], ], ), ], line: 36, }, ], ], line: 36, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 36, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 37, }, Ident { expr: [ Symbol( "y", ), ], line: 38, }, Ident { expr: [ Symbol( "z", ), ], line: 38, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 38, }, ], [ Symbol( "10", ), ], [ Symbol( "11", ), ], ], ), ], line: 38, }, ], ], line: 38, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 39, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 39, }, Operator( ( "==", true, ), ), Symbol( "11", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 39, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 38, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 39, }, Ident { expr: [ Symbol( "x", ), ], line: 40, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 40, column: 8, }, ], ], ), ], line: 40, }, ], ], line: 40, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 40, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 41, }, Ident { expr: [ Symbol( "x", ), ], line: 42, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 42, column: 11, }, ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 42, }, ], ], line: 42, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 42, }, DoBlock( CodeBlock { start: 350, code: [ Variable { names: [ ( "maxi", false, ), ], values: [ [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "31", ), ], ), Ident { expr: [], line: 46, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 47, column: 0, }, Variable { names: [ ( "mini", false, ), ], values: [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "31", ), ], ), ], ], line: 47, column: 9, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 48, }, ], [ Table { data: [], line: 48, column: 8, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 48, }, ], ], ), ], line: 47, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 49, }, ], [ Table { data: [], line: 49, column: 8, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 49, }, ], ], ), ], line: 48, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 50, }, ], [ Table { data: [], line: 50, column: 8, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 50, }, ], ], ), ], line: 49, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 51, }, ], [ Table { data: [], line: 51, column: 8, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 51, }, ], ], ), ], line: 50, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 52, }, ], [ Table { data: [], line: 52, column: 8, }, ], [ Ident { expr: [ Symbol( "mini", ), ], line: 52, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 52, }, ], ], ), ], line: 51, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 53, }, ], [ Table { data: [], line: 53, column: 8, }, ], [ Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "maxi", ), ], line: 53, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 53, }, ], ], ), ], line: 52, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many results\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 54, }, ], [ Table { data: [], line: 54, column: 8, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 54, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 54, }, ], ], ), ], line: 53, }, Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [], line: 55, column: 4, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 55, }, ], [ Symbol( "0", ), ], ], ), ], line: 54, }, Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [], line: 56, column: 4, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 56, }, ], [ Symbol( "1", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [], line: 57, column: 4, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 57, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 57, }, ], ], ), ], line: 56, }, Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), ], line: 58, }, ], [ Table { data: [], line: 58, column: 6, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 58, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 57, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxi", ), ], line: 59, }, ], ), [ Symbol( "20", ), ], ), ], line: 59, column: 14, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 59, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 59, }, ], ], ), ], line: 59, }, ], ], line: 59, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 59, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 60, }, Ident { expr: [ Symbol( "b", ), ], line: 61, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxi", ), ], line: 61, }, ], ), [ Symbol( "20", ), ], ), ], line: 61, column: 13, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 61, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 61, }, ], ], ), ], line: 61, }, ], ], line: 61, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 61, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 63, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), [ Symbol( "12", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 63, }, ], ), [ Symbol( "23", ), ], ), ], line: 63, column: 18, }, ], ], line: 63, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 63, }, Ident { expr: [ Symbol( "b", ), ], line: 64, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 64, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 64, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 64, }, ], ], ), ], line: 64, }, ], ], line: 64, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "12", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "23", ), ], ], ), ], line: 64, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 64, }, Ident { expr: [ Symbol( "b", ), ], line: 65, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 65, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 65, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 65, }, ], ], ), ], line: 65, }, ], ], line: 65, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "23", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 65, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 65, }, Ident { expr: [ Symbol( "b", ), ], line: 66, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 66, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 66, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 66, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 66, }, ], ], line: 66, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 66, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 66, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 66, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 66, }, ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 67, }, ], ), [ Symbol( "12.3", ), ], ), ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 67, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), [ Symbol( "23.5", ), ], ), ], line: 67, column: 17, }, ], ], line: 67, column: 17, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 67, }, Ident { expr: [ Symbol( "b", ), ], line: 68, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 68, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 68, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 68, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 68, }, ], ], line: 68, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "12.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "23.5", ), ], ], ), ], line: 68, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 68, }, Ident { expr: [ Symbol( "b", ), ], line: 69, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 69, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 69, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 69, }, ], ], ), ], line: 69, }, ], ], line: 69, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 69, }, Operator( ( "==", true, ), ), Symbol( "12.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 69, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 69, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 69, }, Ident { expr: [ Symbol( "b", ), ], line: 70, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 70, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 70, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "minI", ), ], line: 70, }, ], ], ), ], line: 70, }, ], ], line: 70, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 70, }, ], end: 742, }, ), DoBlock( CodeBlock { start: 743, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 74, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 14, code: [ Return( Some( [ [ Symbol( "'abc'", ), ], ], ), ), ], end: 17, }, line: 74, column: 17, }, ], ), ], line: 74, column: 18, }, ], ], ), ], line: 74, }, ], ], line: 74, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 75, }, Operator( ( "==", true, ), ), Symbol( "'abc'", ), ], ], ), ], line: 74, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"object length is not an integer\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), ], line: 76, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 76, }, ], [ Symbol( "1", ), ], ], ), ], line: 75, }, ], end: 782, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing pack\"", ), ], ], ), ], line: 77, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 79, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), Call( [], ), ], line: 81, }, ], ], line: 81, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 82, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 82, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 82, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 81, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 82, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "table", ), ], line: 84, }, ], ], ), ], line: 84, }, ], ], line: 84, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 85, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "table", ), ], line: 85, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 85, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 84, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 85, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 87, }, ], ], line: 87, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 88, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 88, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 87, }, DoBlock( CodeBlock { start: 859, code: [ Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"table expected\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 94, }, ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 94, }, Function { local: true, name: [ Symbol( "eqT", ), ], args: [ "a", "b", ], body: CodeBlock { start: 24, code: [ ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 97, }, ], ], ), ], line: 97, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 97, }, ], ), Symbol( "]", ), ], line: 97, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 97, }, ], ], ), ], line: 97, }, ], end: 20, }, line: 97, column: 20, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 98, }, ], ], ), ], line: 98, }, ], stop: None, initial: None, code: CodeBlock { start: 30, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 98, }, ], ), Symbol( "]", ), ], line: 98, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 98, }, ], ], ), ], line: 98, }, ], end: 40, }, line: 98, column: 20, }, ], end: 65, }, line: 99, column: 1, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 101, column: 14, }, ], [ Symbol( "1", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], ], ), ], line: 101, }, ], ], line: 101, column: 21, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 102, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 102, column: 13, }, ], ], ), ], line: 101, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 102, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 105, column: 13, }, ], [ Symbol( "1", ), ], [ Symbol( "3", ), ], [ Symbol( "3", ), ], ], ), ], line: 105, }, ], ], line: 105, column: 20, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 106, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 106, column: 15, }, ], ], ), ], line: 105, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 106, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 109, column: 11, }, ], ], line: 109, column: 11, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 110, }, ], [ Symbol( "1", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 110, }, ], ], ), ], line: 109, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 111, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 111, column: 15, }, ], ], ), ], line: 110, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 111, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 113, column: 13, }, ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "1", ), ], ], ), ], line: 113, }, ], ], line: 113, column: 20, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 114, }, ], [ Table { data: [ ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 114, column: 11, }, ], ], ), ], line: 113, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 114, }, ], values: [ [ Table { data: [], line: 116, column: 4, }, ], ], line: 116, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 117, column: 13, }, ], [ Symbol( "1", ), ], [ Symbol( "3", ), ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 117, }, ], ], ), ], line: 117, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 117, }, ], ], ), ], line: 116, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 118, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 118, column: 11, }, ], ], ), ], line: 117, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 118, }, ], values: [ [ Table { data: [], line: 120, column: 4, }, ], ], line: 120, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 121, column: 13, }, ], [ Symbol( "1", ), ], [ Symbol( "0", ), ], [ Symbol( "3", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 121, }, ], ], ), ], line: 121, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 121, }, ], ], ), ], line: 120, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 122, }, ], [ Table { data: [], line: 122, column: 6, }, ], ], ), ], line: 121, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 122, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 124, column: 13, }, ], [ Symbol( "1", ), ], [ Symbol( "10", ), ], [ Symbol( "1", ), ], ], ), ], line: 124, }, ], ], line: 124, column: 20, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 125, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 125, column: 11, }, ], ], ), ], line: 124, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 125, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 128, }, Operator( ( "-", true, ), ), Symbol( "2", ), ], ), [ Symbol( "1", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 128, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), [ Symbol( "2", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 128, }, ], ), [ Symbol( "3", ), ], ), ], line: 128, column: 29, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 128, }, Operator( ( "-", true, ), ), Symbol( "2", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 129, }, ], [ Operator( ( "-", false, ), ), Symbol( "10", ), ], [ Table { data: [], line: 129, column: 11, }, ], ], ), ], line: 128, }, ], ], line: 129, column: 12, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, ], [ Table { data: [ ( Some( [ Operator( ( "-", false, ), ), Symbol( "10", ), ], ), [ Symbol( "1", ), ], ), ( Some( [ Operator( ( "-", false, ), ), Symbol( "9", ), ], ), [ Symbol( "2", ), ], ), ( Some( [ Operator( ( "-", false, ), ), Symbol( "8", ), ], ), [ Symbol( "3", ), ], ), ], line: 130, column: 26, }, ], ], ), ], line: 129, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 132, }, ], ), [ Symbol( "1", ), ], ), ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 132, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), [ Symbol( "2", ), ], ), ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 132, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), [ Symbol( "3", ), ], ), ], line: 132, column: 29, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 132, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 133, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], [ Operator( ( "-", false, ), ), Symbol( "10", ), ], [ Table { data: [], line: 133, column: 11, }, ], ], ), ], line: 132, }, ], ], line: 133, column: 12, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, ], [ Table { data: [ ( Some( [ Operator( ( "-", false, ), ), Symbol( "10", ), ], ), [ Symbol( "1", ), ], ), ( Some( [ Operator( ( "-", false, ), ), Symbol( "9", ), ], ), [ Symbol( "2", ), ], ), ( Some( [ Operator( ( "-", false, ), ), Symbol( "8", ), ], ), [ Symbol( "3", ), ], ), ], line: 134, column: 26, }, ], ], ), ], line: 133, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( None, [ Symbol( "45", ), ], ), ], line: 136, column: 9, }, ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 136, }, ], ], ), ], line: 136, }, ], ], line: 136, column: 16, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 137, }, ], [ Table { data: [ ( None, [ Symbol( "45", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 137, }, ], ), [ Symbol( "45", ), ], ), ], line: 137, column: 13, }, ], ], ), ], line: 136, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 139, }, ], ), [ Symbol( "100", ), ], ), ], line: 139, column: 13, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 139, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 139, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 139, }, ], ], ), ], line: 139, }, ], ], line: 139, column: 20, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 140, }, ], [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 140, }, ], ), [ Symbol( "100", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 140, }, ], ), [ Symbol( "100", ), ], ), ], line: 140, column: 17, }, ], ], ), ], line: 139, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 140, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 142, }, ], ), [ Symbol( "100", ), ], ), ], line: 142, column: 13, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 142, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 142, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 142, }, ], ], ), ], line: 142, }, ], ], line: 142, column: 20, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 143, }, ], [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "minI", ), ], line: 143, }, ], ), [ Symbol( "100", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxI", ), ], line: 143, }, ], ), [ Symbol( "100", ), ], ), ], line: 143, column: 17, }, ], ], ), ], line: 142, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 143, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 145, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "_", "k", ], body: CodeBlock { start: 578, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "k", ), ], line: 146, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ), ], end: 583, }, line: 146, column: 13, }, ], ), ( Some( [ Symbol( "__newindex", ), ], ), [ Ident { expr: [ Symbol( "error", ), ], line: 147, }, ], ), ], line: 147, column: 4, }, ], ], ), ], line: 145, }, ], ], line: 148, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 148, }, ], [ Symbol( "1", ), ], [ Symbol( "10", ), ], [ Symbol( "3", ), ], [ Table { data: [], line: 148, column: 17, }, ], ], ), ], line: 148, }, ], ], line: 148, column: 18, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 149, }, ], [ Table { data: [], line: 149, column: 6, }, ], ], ), ], line: 148, }, Ident { expr: [ Symbol( "eqT", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 150, }, ], [ Table { data: [ ( None, [ Symbol( "nil", ), ], ), ( None, [ Symbol( "nil", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "50", ), ], ), ( None, [ Symbol( "60", ), ], ), ( None, [ Symbol( "70", ), ], ), ( None, [ Symbol( "80", ), ], ), ( None, [ Symbol( "90", ), ], ), ( None, [ Symbol( "100", ), ], ), ], line: 150, column: 29, }, ], ], ), ], line: 149, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 150, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"\"", ), ], ), ], line: 152, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "error", ), ], line: 153, }, ], ), ( Some( [ Symbol( "__newindex", ), ], ), [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 667, code: [ Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 155, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s(%d,%d)\"", ), ], [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 155, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 155, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 155, }, ], ], ), ], line: 155, }, ], ], line: 155, column: 20, }, ], end: 688, }, line: 156, column: 1, }, ], ), ], line: 156, column: 2, }, ], ], ), ], line: 152, }, ], ], line: 156, column: 3, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 157, }, ], [ Symbol( "10", ), ], [ Symbol( "13", ), ], [ Symbol( "3", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 157, }, ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 158, }, Operator( ( "==", true, ), ), Symbol( "\"(3,100)(4,110)(5,120)(6,130)\"", ), ], ], ), ], line: 157, }, Variable { names: [ ( "stat", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 159, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 159, }, ], [ Symbol( "10", ), ], [ Symbol( "13", ), ], [ Symbol( "3", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 159, }, ], ], ), ], line: 159, }, ], ], line: 159, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "stat", ), ], line: 160, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "msg", ), ], line: 160, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 160, }, ], ], ), ], line: 159, }, ], end: 1603, }, ), DoBlock( CodeBlock { start: 1604, code: [ Function { local: true, name: [ Symbol( "checkmove", ), ], args: [ "f", "e", "t", "x", "y", ], body: CodeBlock { start: 14, code: [ Variable { names: [ ( "pos1", false, ), ( "pos2", false, ), ], values: [], line: 167, column: 4, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 168, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "_", "k", ], body: CodeBlock { start: 21, code: [ Alter { names: [ Ident { expr: [ Symbol( "pos1", ), ], line: 169, }, ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 169, }, ], ], line: 169, column: 3, }, ], end: 25, }, line: 169, column: 12, }, ], ), ( Some( [ Symbol( "__newindex", ), ], ), [ Lambda { args: [ "_", "k", ], body: CodeBlock { start: 34, code: [ Alter { names: [ Ident { expr: [ Symbol( "pos2", ), ], line: 170, }, ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 170, }, ], ], line: 170, column: 4, }, Ident { expr: [ Symbol( "error", ), Call( [], ), ], line: 170, }, ], end: 42, }, line: 170, column: 16, }, ], ), ], line: 170, column: 18, }, ], ], ), ], line: 168, }, ], ], line: 171, column: 0, }, Variable { names: [ ( "st", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 171, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 171, }, ], [ Ident { expr: [ Symbol( "f", ), ], line: 171, }, ], [ Ident { expr: [ Symbol( "e", ), ], line: 171, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 171, }, ], ], ), ], line: 171, }, ], ], line: 171, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "st", ), ], line: 172, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "msg", ), ], line: 172, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "pos1", ), ], line: 172, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 172, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "pos2", ), ], line: 172, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 172, }, ], ], ), ], line: 171, }, ], end: 95, }, line: 173, column: 1, }, Ident { expr: [ Symbol( "checkmove", ), Call( [ [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 174, }, ], [ Symbol( "0", ), ], [ Symbol( "1", ), ], [ Symbol( "0", ), ], ], ), ], line: 173, }, Ident { expr: [ Symbol( "checkmove", ), Call( [ [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 175, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 175, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 175, }, ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "checkmove", ), Call( [ [ Ident { expr: [ Symbol( "minI", ), ], line: 176, }, ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Operator( ( "-", false, ), ), Symbol( "5", ), ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 176, }, Operator( ( "-", true, ), ), Symbol( "6", ), ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "checkmove", ), Call( [ [ Ident { expr: [ Symbol( "minI", ), ], line: 177, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 177, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "checkmove", ), Call( [ [ Ident { expr: [ Symbol( "minI", ), ], line: 178, }, ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "minI", ), ], line: 178, }, ], [ Symbol( "0", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "checkmove", ), Call( [ [ Ident { expr: [ Symbol( "minI", ), ], line: 179, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "minI", ), ], line: 179, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 178, }, ], end: 1794, }, ), Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 182, }, ], [ Table { data: [], line: 182, column: 10, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 182, }, ], [ Symbol( "1", ), ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 183, }, ], [ Table { data: [], line: 183, column: 10, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 183, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 184, }, ], [ Table { data: [], line: 184, column: 10, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 184, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too many\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 185, }, ], [ Table { data: [], line: 185, column: 10, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 185, }, ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 185, }, ], [ Symbol( "1", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"wrap around\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 186, }, ], [ Table { data: [], line: 186, column: 10, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 186, }, ], [ Symbol( "2", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"wrap around\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 187, }, ], [ Table { data: [], line: 187, column: 10, }, ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "maxI", ), ], line: 187, }, ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"wrap around\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "move", ), ], line: 188, }, ], [ Table { data: [], line: 188, column: 10, }, ], [ Ident { expr: [ Symbol( "minI", ), ], line: 188, }, ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing sort\"", ), ], ], ), ], line: 188, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 195, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 1934, code: [ Return( Some( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ), ], end: 1938, }, line: 195, column: 18, }, ], ), ], line: 195, column: 19, }, ], ], ), ], line: 195, }, ], ], line: 195, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 196, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 195, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, ], [ Ident { expr: [ Symbol( "error", ), ], line: 197, }, ], ], ), ], line: 196, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 198, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 1969, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "maxI", ), ], line: 198, }, ], ], ), ), ], end: 1972, }, line: 198, column: 16, }, ], ), ], line: 198, column: 17, }, ], ], ), ], line: 198, }, ], ], line: 198, column: 18, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too big\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), ], line: 199, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 199, }, ], ], ), ], line: 198, }, Function { local: true, name: [ Symbol( "check", ), ], args: [ "t", ], body: CodeBlock { start: 1990, code: [ Function { local: true, name: [ Symbol( "f", ), ], args: [ "a", "b", ], body: CodeBlock { start: 8, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 203, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 203, }, ], ], ), ], line: 203, }, Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 18, }, line: 203, column: 18, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid order function\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), ], line: 204, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 204, }, ], [ Ident { expr: [ Symbol( "f", ), ], line: 204, }, ], ], ), ], line: 203, }, ], end: 2021, }, line: 205, column: 1, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 207, column: 10, }, ], ], ), ], line: 205, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 208, column: 12, }, ], ], ), ], line: 207, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "6", ), ], ), ], line: 209, column: 14, }, ], ], ), ], line: 208, }, Function { local: false, name: [ Symbol( "check", ), ], args: [ "a", "f", ], body: CodeBlock { start: 2064, code: [ Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 213, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 213, }, Operator( ( "or", true, ), ), Lambda { args: [ "x", "y", ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 213, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 213, }, ], ], ), ), ], end: 15, }, line: 213, column: 15, }, ], ], line: 213, column: 16, }, ForLoop { iter: "n", start: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 214, }, ], end: [ Symbol( "2", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 27, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 215, }, ], ), Symbol( "]", ), ], line: 215, }, ], [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 215, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 215, }, ], ], ), ], line: 215, }, ], ], ), ], line: 215, }, ], end: 46, }, line: 216, column: 1, }, ], end: 2111, }, line: 217, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 217, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "\"Jan\"", ), ], ), ( None, [ Symbol( "\"Feb\"", ), ], ), ( None, [ Symbol( "\"Mar\"", ), ], ), ( None, [ Symbol( "\"Apr\"", ), ], ), ( None, [ Symbol( "\"May\"", ), ], ), ( None, [ Symbol( "\"Jun\"", ), ], ), ( None, [ Symbol( "\"Jul\"", ), ], ), ( None, [ Symbol( "\"Aug\"", ), ], ), ( None, [ Symbol( "\"Sep\"", ), ], ), ( None, [ Symbol( "\"Oct\"", ), ], ), ( None, [ Symbol( "\"Nov\"", ), ], ), ( None, [ Symbol( "\"Dec\"", ), ], ), ], line: 220, column: 6, }, ], ], line: 220, column: 6, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 222, }, ], ], ), ], line: 220, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 223, }, ], ], ), ], line: 222, }, Function { local: false, name: [ Symbol( "perm", ), ], args: [ "s", "n", ], body: CodeBlock { start: 2155, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 226, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 226, }, Operator( ( "or", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 226, }, ], ], line: 227, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 227, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 11, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 228, }, ], ], ), ], line: 228, }, ], ), ], line: 228, column: 9, }, ], ], line: 228, column: 9, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 229, }, ], ], ), ], line: 228, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 230, }, ], ], ), ], line: 229, }, ], end: 31, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 31, code: [ ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 232, }, ], step: None, code: CodeBlock { start: 7, code: [ Alter { names: [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 233, }, ], ), Symbol( "]", ), ], line: 233, }, Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 233, }, ], ), Symbol( "]", ), ], line: 233, }, ], values: [ [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 233, }, ], ), Symbol( "]", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 233, }, ], ), Symbol( "]", ), ], line: 233, }, ], ], line: 233, column: 19, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 234, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 234, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 233, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 235, }, ], ), Symbol( "]", ), ], line: 234, }, Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 235, }, ], ), Symbol( "]", ), ], line: 235, }, ], values: [ [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 235, }, ], ), Symbol( "]", ), ], line: 235, }, ], [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 235, }, ], ), Symbol( "]", ), ], line: 235, }, ], ], line: 235, column: 19, }, ], end: 54, }, line: 236, column: 1, }, ], end: 86, }, next: None, line: 237, column: 1, }, ), line: 237, column: 1, }, ], end: 2242, }, line: 238, column: 1, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [], line: 240, column: 3, }, ], ], ), ], line: 238, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 241, column: 4, }, ], ], ), ], line: 240, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 242, column: 6, }, ], ], ), ], line: 241, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 243, column: 8, }, ], ], ), ], line: 242, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 244, column: 10, }, ], ], ), ], line: 243, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 245, column: 10, }, ], ], ), ], line: 244, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 246, column: 12, }, ], ], ), ], line: 245, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 247, column: 12, }, ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "6", ), ], ), ], line: 248, column: 14, }, ], ], ), ], line: 247, }, Ident { expr: [ Symbol( "perm", ), Call( [ [ Table { data: [ ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "6", ), ], ), ], line: 249, column: 14, }, ], ], ), ], line: 248, }, Function { local: false, name: [ Symbol( "timesort", ), ], args: [ "a", "n", "func", "msg", "pre", ], body: CodeBlock { start: 2348, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), Call( [], ), ], line: 252, }, ], ], line: 252, column: 8, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 253, }, ], [ Ident { expr: [ Symbol( "func", ), ], line: 253, }, ], ], ), ], line: 252, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 253, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), Call( [], ), ], line: 254, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 254, }, ], ), Ident { expr: [], line: 254, }, Operator( ( "*", true, ), ), Symbol( "1000", ), ], ], line: 254, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "pre", ), ], line: 254, }, ], values: [ [ Ident { expr: [ Symbol( "pre", ), ], line: 255, }, Operator( ( "or", true, ), ), Symbol( "\"\"", ), ], ], line: 255, column: 5, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%ssorting %d %s elements in %.2f msec.\"", ), ], [ Ident { expr: [ Symbol( "pre", ), ], line: 256, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 256, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 256, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 256, }, ], ], ), ], line: 256, }, ], ], ), ], line: 255, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 257, }, ], [ Ident { expr: [ Symbol( "func", ), ], line: 257, }, ], ], ), ], line: 256, }, ], end: 2406, }, line: 258, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "limit", ), ], line: 258, }, ], values: [ [ Symbol( "50000", ), ], ], line: 261, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "_soft", ), ], line: 261, }, ], body: CodeBlock { start: 2412, code: [ Alter { names: [ Ident { expr: [ Symbol( "limit", ), ], line: 261, }, ], values: [ [ Symbol( "5000", ), ], ], line: 261, column: 3, }, ], end: 2416, }, next: None, line: 261, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, ], values: [ [ Table { data: [], line: 263, column: 4, }, ], ], line: 264, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "limit", ), ], line: 264, }, ], step: None, code: CodeBlock { start: 2427, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 265, }, ], ), Symbol( "]", ), ], line: 265, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [], ), ], line: 265, }, ], ], line: 265, column: 10, }, ], end: 2438, }, line: 266, column: 1, }, Ident { expr: [ Symbol( "timesort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 268, }, ], [ Ident { expr: [ Symbol( "limit", ), ], line: 268, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"random\"", ), ], ], ), ], line: 266, }, Ident { expr: [ Symbol( "timesort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 270, }, ], [ Ident { expr: [ Symbol( "limit", ), ], line: 270, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"sorted\"", ), ], [ Symbol( "\"re-\"", ), ], ], ), ], line: 268, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 270, }, ], values: [ [ Table { data: [], line: 272, column: 4, }, ], ], line: 273, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "limit", ), ], line: 273, }, ], step: None, code: CodeBlock { start: 2471, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 274, }, ], ), Symbol( "]", ), ], line: 274, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [], ), ], line: 274, }, ], ], line: 274, column: 10, }, ], end: 2482, }, line: 275, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 275, }, ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), Call( [], ), ], line: 277, }, ], ], line: 277, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 277, }, ], values: [ [ Symbol( "0", ), ], ], line: 277, column: 11, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 278, }, ], [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 2505, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 278, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 278, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 278, column: 6, }, Return( Some( [ [ Ident { expr: [ Symbol( "y", ), ], line: 278, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 278, }, ], ], ), ), ], end: 2516, }, line: 278, column: 23, }, ], ], ), ], line: 277, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 278, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), Call( [], ), ], line: 279, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 279, }, ], ), Ident { expr: [], line: 279, }, Operator( ( "*", true, ), ), Symbol( "1000", ), ], ], line: 279, column: 13, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"Invert-sorting other %d elements in %.2f msec., with %i comparisons\"", ), ], [ Ident { expr: [ Symbol( "limit", ), ], line: 280, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 281, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 281, }, ], ], ), ], line: 280, }, ], ], ), ], line: 279, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 282, }, ], [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 2555, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "y", ), ], line: 282, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 282, }, ], ], ), ), ], end: 2560, }, line: 282, column: 15, }, ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Table { data: [], line: 285, column: 5, }, ], ], ), ], line: 282, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "limit", ), ], line: 287, }, ], step: None, code: CodeBlock { start: 2573, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 287, }, ], ), Symbol( "]", ), ], line: 287, }, ], values: [ [ Symbol( "false", ), ], ], line: 287, column: 6, }, ], end: 2580, }, line: 287, column: 14, }, Ident { expr: [ Symbol( "timesort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 288, }, ], [ Ident { expr: [ Symbol( "limit", ), ], line: 288, }, ], [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 2592, code: [ Return( Some( [ [ Symbol( "nil", ), ], ], ), ), ], end: 2595, }, line: 288, column: 15, }, ], [ Symbol( "\"equal\"", ), ], ], ), ], line: 287, }, ForFuncLoop { iters: [ "i", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 290, }, ], ], ), ], line: 290, }, ], stop: None, initial: None, code: CodeBlock { start: 2608, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 290, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 290, }, ], end: 2615, }, line: 290, column: 17, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 290, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "\"álo\"", ), ], ), ( None, [ Symbol( "\"\\0first :-)\"", ), ], ), ( None, [ Symbol( "\"alo\"", ), ], ), ( None, [ Symbol( "\"then this one\"", ), ], ), ( None, [ Symbol( "\"45\"", ), ], ), ( None, [ Symbol( "\"and a new\"", ), ], ), ], line: 292, column: 15, }, ], ], line: 292, column: 15, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 293, }, ], ], ), ], line: 292, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 294, }, ], ], ), ], line: 293, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 296, }, ], [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 2652, code: [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"A[%q] = ''\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 297, }, ], ], ), ], line: 297, }, ], [ Symbol( "\"\"", ), ], ], ), Call( [], ), ], line: 297, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 297, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 299, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 299, }, ], ], ), ), ], end: 2675, }, line: 300, column: 1, }, ], ], ), ], line: 294, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 300, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__lt", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2687, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "val", ), ], line: 303, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "val", ), ], line: 303, }, ], ], ), ), ], end: 2696, }, line: 303, column: 20, }, ], ), ], line: 303, column: 21, }, ], ], line: 303, column: 21, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 303, }, ], values: [ [ Table { data: [], line: 304, column: 4, }, ], ], line: 305, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 2708, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 305, }, ], ), Symbol( "]", ), ], line: 305, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 305, }, ], ), ], line: 305, column: 15, }, ], ], line: 305, column: 16, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 305, }, ], ), Symbol( "]", ), ], line: 305, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 305, }, ], ], ), ], line: 305, }, ], end: 2735, }, line: 305, column: 34, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 306, }, ], ], ), ], line: 305, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 307, }, ], [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 307, }, ], ], ), ], line: 306, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 308, }, ], ], ), ], line: 307, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"OK\"", ), ], ], ), ], line: 308, }, ]