--- source: src/main.rs expression: parsed input_file: test-data/lua5.1-tests/attrib.lua --- [ DoBlock( CodeBlock { start: 1, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing require\"", ), ], ], ), ], line: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"string\"", ), ], ], ), ], line: 5, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), ], line: 5, }, ], ], ), ], line: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"math\"", ), ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), ], line: 6, }, ], ], ), ], line: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"table\"", ), ], ], ), ], line: 7, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "table", ), ], line: 7, }, ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"io\"", ), ], ], ), ], line: 8, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "io", ), ], line: 8, }, ], ], ), ], line: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"os\"", ), ], ], ), ], line: 9, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "os", ), ], line: 9, }, ], ], ), ], line: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 10, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), ], line: 10, }, ], ], ), ], line: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"coroutine\"", ), ], ], ), ], line: 11, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "coroutine", ), ], line: 11, }, ], ], ), ], line: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 13, }, ], ], ), ], line: 13, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "cpath", ), ], line: 14, }, ], ], ), ], line: 14, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loaded", ), ], line: 15, }, ], ], ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "\"table\"", ), ], ], ), ], line: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "preload", ), ], line: 16, }, ], ], ), ], line: 16, }, Operator( ( "==", true, ), ), Symbol( "\"table\"", ), ], ], ), ], line: 15, }, Variable { names: [ ( "DIR", false, ), ], values: [ [ Symbol( "\"libs/\"", ), ], ], line: 21, column: 0, }, Function { local: true, name: [ Symbol( "createfiles", ), ], args: [ "files", "preextras", "posextras", ], body: CodeBlock { start: 109, code: [ ForFuncLoop { iters: [ "n", "c", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "files", ), ], line: 22, }, ], ], ), ], line: 22, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "output", ), Call( [ [ Ident { expr: [ Symbol( "DIR", ), ], line: 23, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 23, }, ], ], ), ], line: 23, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "preextras", ), ], line: 24, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 24, }, ], ], ), ], line: 24, }, ], ], ), ], line: 23, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 25, }, ], ], ), ], line: 24, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "posextras", ), ], line: 26, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 26, }, ], ], ), ], line: 26, }, ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "output", ), Call( [], ), ], line: 27, }, ], ], ), ], line: 26, }, ], end: 61, }, line: 28, column: 1, }, ], end: 171, }, line: 29, column: 1, }, Function { local: false, name: [ Symbol( "removefiles", ), ], args: [ "files", ], body: CodeBlock { start: 176, code: [ ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "files", ), ], line: 32, }, ], ], ), ], line: 32, }, ], stop: None, initial: None, code: CodeBlock { start: 8, code: [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "DIR", ), ], line: 33, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 33, }, ], ], ), ], line: 33, }, ], end: 17, }, line: 34, column: 1, }, ], end: 194, }, line: 35, column: 1, }, Variable { names: [ ( "files", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "\"A.lua\"", ), ], ), [ Symbol( "\"\"", ), ], ), ( Some( [ Symbol( "\"B.lua\"", ), ], ), [ Symbol( "\"assert(...=='B');require 'A'\"", ), ], ), ( Some( [ Symbol( "\"A.lc\"", ), ], ), [ Symbol( "\"\"", ), ], ), ( Some( [ Symbol( "\"A\"", ), ], ), [ Symbol( "\"\"", ), ], ), ( Some( [ Symbol( "\"L\"", ), ], ), [ Symbol( "\"\"", ), ], ), ( Some( [ Symbol( "\"XXxX\"", ), ], ), [ Symbol( "\"\"", ), ], ), ( Some( [ Symbol( "\"C.lua\"", ), ], ), [ Symbol( "\"package.loaded[...] = 25; require'C'\"", ), ], ), ], line: 45, column: 1, }, ], ], line: 45, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "AA", ), ], line: 45, }, ], values: [ [ Symbol( "nil", ), ], ], line: 48, column: 0, }, Variable { names: [ ( "extras", false, ), ], values: [ [ MultilineString( "[[\nNAME = '%s'\nREQUIRED = ...\nreturn AA]]", ), ], ], line: 51, column: 1, }, Ident { expr: [ Symbol( "createfiles", ), Call( [ [ Ident { expr: [ Symbol( "files", ), ], line: 53, }, ], [ Symbol( "\"\"", ), ], [ Ident { expr: [ Symbol( "extras", ), ], line: 53, }, ], ], ), ], line: 51, }, Variable { names: [ ( "oldpath", false, ), ], values: [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 56, }, ], ], line: 56, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 56, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"D/?.lua;D/?.lc;D/?;D/??x?;D/L\"", ), ], [ Symbol( "\"D/\"", ), ], [ Ident { expr: [ Symbol( "DIR", ), ], line: 58, }, ], ], ), ], line: 58, }, ], ], line: 60, column: 0, }, Variable { names: [ ( "try", false, ), ], values: [ [ Lambda { args: [ "p", "n", "r", ], body: CodeBlock { start: 286, code: [ Alter { names: [ Ident { expr: [ Symbol( "NAME", ), ], line: 61, }, ], values: [ [ Symbol( "nil", ), ], ], line: 62, column: 0, }, Variable { names: [ ( "rr", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Ident { expr: [ Symbol( "p", ), ], line: 62, }, ], ], ), ], line: 62, }, ], ], line: 62, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "NAME", ), ], line: 63, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 63, }, ], ], ), ], line: 62, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "REQUIRED", ), ], line: 64, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 64, }, ], ], ), ], line: 63, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rr", ), ], line: 65, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "r", ), ], line: 65, }, ], ], ), ], line: 64, }, ], end: 315, }, line: 66, column: 1, }, ], ], line: 66, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"C\"", ), ], ], ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 66, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"C\"", ), ], ], ), ], line: 69, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 68, }, Alter { names: [ Ident { expr: [ Symbol( "AA", ), ], line: 69, }, ], values: [ [ Symbol( "nil", ), ], ], line: 70, column: 3, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "'B'", ), ], [ Symbol( "'B.lua'", ), ], [ Symbol( "true", ), ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loaded", ), Symbol( ".", ), Symbol( "B", ), ], line: 72, }, ], ], ), ], line: 71, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"B\"", ), ], ], ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 72, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loaded", ), Symbol( ".", ), Symbol( "A", ), ], line: 74, }, ], ], ), ], line: 73, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loaded", ), Symbol( ".", ), Symbol( "A", ), ], line: 74, }, ], values: [ [ Symbol( "nil", ), ], ], line: 75, column: 7, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "'B'", ), ], [ Symbol( "nil", ), ], [ Symbol( "true", ), ], ], ), ], line: 75, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "'A'", ), ], [ Symbol( "'A.lua'", ), ], [ Symbol( "true", ), ], ], ), ], line: 76, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loaded", ), Symbol( ".", ), Symbol( "A", ), ], line: 77, }, ], values: [ [ Symbol( "nil", ), ], ], line: 78, column: 7, }, Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "DIR", ), ], line: 79, }, Operator( ( "..", true, ), ), Symbol( "'A.lua'", ), ], ], ), ], line: 78, }, Alter { names: [ Ident { expr: [ Symbol( "AA", ), ], line: 79, }, ], values: [ [ Table { data: [], line: 80, column: 4, }, ], ], line: 80, column: 4, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "'A'", ), ], [ Symbol( "'A.lc'", ), ], [ Ident { expr: [ Symbol( "AA", ), ], line: 81, }, ], ], ), ], line: 80, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"A\"", ), ], ], ), ], line: 82, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "AA", ), ], line: 82, }, ], ], ), ], line: 81, }, Alter { names: [ Ident { expr: [ Symbol( "AA", ), ], line: 82, }, ], values: [ [ Symbol( "false", ), ], ], line: 83, column: 3, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "'K'", ), ], [ Symbol( "'L'", ), ], [ Symbol( "false", ), ], ], ), ], line: 83, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "'K'", ), ], [ Symbol( "'L'", ), ], [ Symbol( "false", ), ], ], ), ], line: 84, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 86, }, ], [ Symbol( "\"_REQUIREDNAME\"", ), ], ], ), ], line: 86, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 85, }, Alter { names: [ Ident { expr: [ Symbol( "AA", ), ], line: 86, }, ], values: [ [ Symbol( "\"x\"", ), ], ], line: 88, column: 3, }, Ident { expr: [ Symbol( "try", ), Call( [ [ Symbol( "\"X\"", ), ], [ Symbol( "\"XXxX\"", ), ], [ Ident { expr: [ Symbol( "AA", ), ], line: 89, }, ], ], ), ], line: 88, }, Ident { expr: [ Symbol( "removefiles", ), Call( [ [ Ident { expr: [ Symbol( "files", ), ], line: 92, }, ], ], ), ], line: 89, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 92, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"D/?.lua;D/?/init.lua\"", ), ], [ Symbol( "\"D/\"", ), ], [ Ident { expr: [ Symbol( "DIR", ), ], line: 97, }, ], ], ), ], line: 97, }, ], ], line: 97, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "files", ), ], line: 97, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "\"P1/init.lua\"", ), ], ), [ Symbol( "\"AA = 10\"", ), ], ), ( Some( [ Symbol( "\"P1/xuxu.lua\"", ), ], ), [ Symbol( "\"AA = 20\"", ), ], ), ], line: 102, column: 1, }, ], ], line: 102, column: 1, }, Ident { expr: [ Symbol( "createfiles", ), Call( [ [ Ident { expr: [ Symbol( "files", ), ], line: 104, }, ], [ Symbol( "\"module(..., package.seeall)\\n\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 102, }, Alter { names: [ Ident { expr: [ Symbol( "AA", ), ], line: 104, }, ], values: [ [ Symbol( "0", ), ], ], line: 107, column: 0, }, Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1\"", ), ], ], ), ], line: 107, }, ], ], ), ], line: 107, }, ], ], line: 107, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 108, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), ], line: 108, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 108, }, Operator( ( "==", true, ), ), Symbol( "\"P1\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "AA", ), ], line: 108, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "AA", ), ], line: 108, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 107, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1\"", ), ], ], ), ], line: 109, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), ], line: 109, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "P1", ), ], line: 109, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "m", ), ], line: 109, }, ], ], ), ], line: 108, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1\"", ), ], ], ), ], line: 110, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), ], line: 110, }, ], ], ), ], line: 109, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "_PACKAGE", ), ], line: 111, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 110, }, Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1.xuxu\"", ), ], ], ), ], line: 113, }, ], ], ), ], line: 113, }, ], ], line: 113, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 114, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 114, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "\"P1.xuxu\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "AA", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "AA", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 113, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1.xuxu\"", ), ], ], ), ], line: 115, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 115, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 115, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "m", ), ], line: 115, }, ], ], ), ], line: 114, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1.xuxu\"", ), ], ], ), ], line: 116, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 116, }, ], ], ), ], line: 115, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"P1\"", ), ], ], ), ], line: 117, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "P1", ), ], line: 117, }, ], ], ), ], line: 116, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "xuxu", ), Symbol( ".", ), Symbol( "_PACKAGE", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "\"P1.\"", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "AA", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "_PACKAGE", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 118, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "_G", ), ], line: 120, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 120, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "P1", ), Symbol( ".", ), Symbol( "xuxu", ), Symbol( ".", ), Symbol( "_G", ), ], line: 120, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 120, }, ], ], ), ], line: 119, }, Ident { expr: [ Symbol( "removefiles", ), Call( [ [ Ident { expr: [ Symbol( "files", ), ], line: 124, }, ], ], ), ], line: 120, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 124, }, ], values: [ [ Symbol( "\"\"", ), ], ], line: 127, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "require", ), ], line: 128, }, ], [ Symbol( "\"file_does_not_exist\"", ), ], ], ), ], line: 128, }, ], ], ), ], line: 127, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 128, }, ], values: [ [ Symbol( "\"??\\0?\"", ), ], ], line: 129, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "require", ), ], line: 130, }, ], [ Symbol( "\"file_does_not_exist1\"", ), ], ], ), ], line: 130, }, ], ], ), ], line: 129, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 130, }, ], values: [ [ Ident { expr: [ Symbol( "oldpath", ), ], line: 132, }, ], ], line: 135, column: 0, }, Variable { names: [ ( "fname", false, ), ], values: [ [ Symbol( "\"file_does_not_exist2\"", ), ], ], line: 136, column: 0, }, Variable { names: [ ( "m", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "require", ), ], line: 136, }, ], [ Ident { expr: [ Symbol( "fname", ), ], line: 136, }, ], ], ), ], line: 136, }, ], ], line: 137, column: 0, }, ForFuncLoop { iters: [ "t", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 137, }, Operator( ( "..", true, ), ), Symbol( "\";\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "cpath", ), ], line: 137, }, ], [ Symbol( "\"[^;]+\"", ), ], ], ), ], line: 137, }, ], stop: None, initial: None, code: CodeBlock { start: 741, code: [ Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 138, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 138, }, ], [ Symbol( "\"?\"", ), ], [ Ident { expr: [ Symbol( "fname", ), ], line: 138, }, ], ], ), ], line: 138, }, ], ], line: 138, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 139, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 139, }, ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 139, }, ], ], ), ], line: 138, }, ], end: 769, }, line: 140, column: 1, }, Function { local: true, name: [ Symbol( "import", ), ], args: [ "...", ], body: CodeBlock { start: 775, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 144, column: 6, }, ], ], line: 145, column: 0, }, Return( Some( [ [ Lambda { args: [ "m", ], body: CodeBlock { start: 11, code: [ ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "f", ), ], line: 146, }, ], step: None, code: CodeBlock { start: 8, code: [ Alter { names: [ Ident { expr: [ Symbol( "m", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 146, }, ], ), Symbol( "]", ), ], line: 146, }, ], ), Symbol( "]", ), ], line: 146, }, ], values: [ [ Ident { expr: [ Symbol( "_G", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 146, }, ], ), Symbol( "]", ), ], line: 146, }, ], ), Symbol( "]", ), ], line: 146, }, ], ], line: 146, column: 15, }, ], end: 24, }, line: 146, column: 24, }, ], end: 36, }, line: 147, column: 1, }, ], ], ), ), ], end: 812, }, line: 148, column: 1, }, Variable { names: [ ( "assert", false, ), ( "module", false, ), ( "package", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), ], line: 150, }, ], [ Ident { expr: [ Symbol( "module", ), ], line: 150, }, ], [ Ident { expr: [ Symbol( "package", ), ], line: 150, }, ], ], line: 150, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 150, }, ], values: [ [ Symbol( "nil", ), ], ], line: 151, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 151, }, ], values: [ [ Symbol( "0", ), ], ], line: 151, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 151, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"X\"", ), ], ], ), ], line: 151, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 152, }, ], values: [ [ Symbol( "1", ), ], ], line: 152, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_M", ), Symbol( ".", ), Symbol( "x", ), ], line: 152, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"X.a.b.c\"", ), ], ], ), ], line: 152, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 153, }, ], values: [ [ Symbol( "2", ), ], ], line: 153, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_M", ), Symbol( ".", ), Symbol( "x", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"X.a.b\"", ), ], [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "seeall", ), ], line: 154, }, ], ], ), ], line: 153, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 154, }, ], values: [ [ Symbol( "3", ), ], ], line: 154, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "\"X\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "\"X.a.b.c\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "\"X.a.b\"", ), ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "_M", ), ], line: 156, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "X", ), ], line: 156, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "_M", ), ], line: 156, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), ], line: 156, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "_M", ), ], line: 156, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), ], line: 156, }, ], ], ), ], line: 155, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "x", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "x", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "_PACKAGE", ), ], line: 158, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "_PACKAGE", ), ], line: 158, }, Operator( ( "==", true, ), ), Symbol( "\"X.a.b.\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "_PACKAGE", ), ], line: 158, }, Operator( ( "==", true, ), ), Symbol( "\"X.a.\"", ), ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_PACKAGE", ), ], line: 160, }, Operator( ( "..", true, ), ), Symbol( "\"c\"", ), Operator( ( "==", true, ), ), Symbol( "\"X.a.c\"", ), ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "_M", ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"X.a\"", ), ], [ Ident { expr: [ Symbol( "import", ), Call( [ [ Symbol( "\"X\"", ), ], ], ), ], line: 162, }, ], ], ), ], line: 161, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 162, }, ], values: [ [ Symbol( "4", ), ], ], line: 162, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "_NAME", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "\"X.a\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "_M", ), ], line: 163, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), ], line: 163, }, ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"X.a.b\"", ), ], [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "seeall", ), ], line: 164, }, ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 164, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 164, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 164, }, ], values: [ [ Symbol( "5", ), ], ], line: 164, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_NAME", ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "\"X.a.b\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "_G", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "_G", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "_G", ), ], line: 167, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 167, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "X", ), Symbol( ".", ), Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "_G", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "setfenv", ), Call( [ [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "_G", ), ], line: 169, }, ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "module", ), ], line: 172, }, ], [ Symbol( "\"x\"", ), ], ], ), ], line: 172, }, ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "module", ), ], line: 173, }, ], [ Symbol( "\"math.sin\"", ), ], ], ), ], line: 173, }, ], ], ), ], line: 172, }, Variable { names: [ ( "p", false, ), ], values: [ [ Symbol( "\"\"", ), ], ], line: 182, column: 0, }, Variable { names: [ ( "f", false, ), ( "err", false, ), ( "when", false, ), ], values: [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Symbol( "\"libs/lib1.so\"", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 182, }, Operator( ( "..", true, ), ), Symbol( "\"luaopen_lib1\"", ), ], ], ), ], line: 182, }, ], ], line: 183, column: 0, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "f", ), ], line: 183, }, ], body: CodeBlock { start: 1209, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 184, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 184, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\a\\n >>> cannot load dynamic library <<<\\n\\a'", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 185, }, ], [ Ident { expr: [ Symbol( "when", ), ], line: 185, }, ], ], ), ], line: 184, }, ], end: 1224, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 1224, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 187, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"lib1\"", ), ], ], ), ], line: 188, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lib1", ), ], line: 188, }, ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 188, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "lib1", ), Symbol( ".", ), Symbol( "id", ), Call( [ [ Symbol( "\"x\"", ), ], ], ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), ], ], ), ], line: 189, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 190, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Symbol( "\"libs/lib1.so\"", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 191, }, Operator( ( "..", true, ), ), Symbol( "\"anotherfunc\"", ), ], ], ), ], line: 191, }, ], ], ), ], line: 191, }, ], ], line: 191, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "20", ), ], ], ), ], line: 192, }, Operator( ( "==", true, ), ), Symbol( "\"1020\\n\"", ), ], ], ), ], line: 191, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 192, }, Ident { expr: [ Symbol( "err", ), ], line: 193, }, Ident { expr: [ Symbol( "when", ), ], line: 193, }, ], values: [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Symbol( "\"libs/lib1.so\"", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 193, }, Operator( ( "..", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 193, }, ], ], line: 193, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "f", ), ], line: 194, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 194, }, ], ], ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "when", ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "\"init\"", ), ], ], ), ], line: 193, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "cpath", ), ], line: 194, }, ], values: [ [ Symbol( "\"libs/?.so\"", ), ], ], line: 195, column: 5, }, Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"lib2\"", ), ], ], ), ], line: 195, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "lib2", ), Symbol( ".", ), Symbol( "id", ), Call( [ [ Symbol( "\"x\"", ), ], ], ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), ], ], ), ], line: 196, }, Variable { names: [ ( "fs", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"lib1.sub\"", ), ], ], ), ], line: 198, }, ], ], line: 198, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fs", ), ], line: 199, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lib1", ), Symbol( ".", ), Symbol( "sub", ), ], line: 199, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "lib1", ), Symbol( ".", ), Symbol( "sub", ), ], line: 199, }, ], ], ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 198, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"lib2\"", ), ], [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "seeall", ), ], line: 200, }, ], ], ), ], line: 199, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 200, }, ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"-lib2\"", ), ], ], ), ], line: 201, }, ], ], line: 201, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Symbol( ".", ), Symbol( "id", ), Call( [ [ Symbol( "\"x\"", ), ], ], ), ], line: 202, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_M", ), ], line: 202, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "f", ), ], line: 202, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_NAME", ), ], line: 202, }, Operator( ( "==", true, ), ), Symbol( "\"lib2\"", ), ], ], ), ], line: 201, }, Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "\"lib1.sub\"", ), ], [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "seeall", ), ], line: 203, }, ], ], ), ], line: 202, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_M", ), ], line: 204, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "fs", ), ], line: 204, }, ], ], ), ], line: 203, }, Ident { expr: [ Symbol( "setfenv", ), Call( [ [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "_G", ), ], line: 205, }, ], ], ), ], line: 204, }, ], end: 1400, }, next: None, line: 207, column: 1, }, ), line: 207, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 207, }, Ident { expr: [ Symbol( "err", ), ], line: 208, }, Ident { expr: [ Symbol( "when", ), ], line: 208, }, ], values: [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Symbol( "\"donotexist\"", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 208, }, Operator( ( "..", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 208, }, ], ], line: 208, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "f", ), ], line: 209, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 209, }, ], ], ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "when", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "\"open\"", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "when", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "\"absent\"", ), ], ), Ident { expr: [], line: 209, }, ], ], ), ], line: 208, }, DoBlock( CodeBlock { start: 1439, code: [ Variable { names: [ ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "package", ), ], line: 215, }, ], ], line: 215, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), ], line: 215, }, ], values: [ [ Table { data: [], line: 216, column: 4, }, ], ], line: 216, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "p", ), Symbol( ".", ), Symbol( "preload", ), Symbol( ".", ), Symbol( "pl", ), ], line: 216, }, ], values: [ [ Lambda { args: [ "...", ], body: CodeBlock { start: 18, code: [ Ident { expr: [ Symbol( "module", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 218, }, Function { local: false, name: [ Symbol( "xuxu", ), ], args: [ "x", ], body: CodeBlock { start: 9, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 219, }, Operator( ( "+", true, ), ), Symbol( "20", ), ], ], ), ), ], end: 14, }, line: 219, column: 10, }, ], end: 33, }, line: 220, column: 1, }, ], ], line: 220, column: 1, }, Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"pl\"", ), ], ], ), ], line: 220, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"pl\"", ), ], ], ), ], line: 223, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pl", ), ], line: 223, }, ], ], ), ], line: 222, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pl", ), Symbol( ".", ), Symbol( "xuxu", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 224, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 223, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), ], line: 224, }, ], values: [ [ Ident { expr: [ Symbol( "p", ), ], line: 226, }, ], ], line: 226, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 227, }, ], ], ), ], line: 227, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 226, }, ], end: 1507, }, ), ], end: 1509, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 232, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing assignments, logical operators, and constructors\"", ), ], ], ), ], line: 234, }, Variable { names: [ ( "res", false, ), ( "res2", false, ), ], values: [ [ Symbol( "27", ), ], ], line: 238, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 238, }, Ident { expr: [ Symbol( "b", ), ], line: 240, }, ], values: [ [ Symbol( "1", ), ], [ Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ], line: 240, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 241, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 241, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 240, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 241, }, ], values: [ [ Table { data: [], line: 242, column: 4, }, ], ], line: 243, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 1550, code: [ Return( Some( [ [ Symbol( "10", ), ], [ Symbol( "11", ), ], [ Symbol( "12", ), ], ], ), ), ], end: 1557, }, line: 243, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 243, }, Ident { expr: [ Symbol( "b", ), ], line: 244, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 244, }, ], values: [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 244, }, ], ], line: 244, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 245, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 245, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 245, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 244, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 246, }, ], ), Symbol( "]", ), ], line: 245, }, Ident { expr: [ Symbol( "b", ), ], line: 246, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 246, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 246, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 246, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 246, }, ], [ Symbol( "'x'", ), ], ], line: 246, column: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10", ), ], ), Symbol( "]", ), ], line: 247, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 247, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 247, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "13", ), ], ), Symbol( "]", ), ], line: 247, }, Operator( ( "==", true, ), ), Symbol( "'x'", ), ], ], ), ], line: 246, }, DoBlock( CodeBlock { start: 1640, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "n", ], body: CodeBlock { start: 7, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [], line: 250, column: 5, }, ], ], line: 250, column: 6, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 250, }, ], step: None, code: CodeBlock { start: 13, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 250, }, ], ), Symbol( "]", ), ], line: 250, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 250, }, ], ], line: 250, column: 6, }, ], end: 20, }, line: 250, column: 20, }, Return( Some( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 251, }, ], ], ), ], line: 251, }, ], ], ), ), ], end: 34, }, line: 251, column: 6, }, ], ], line: 251, column: 7, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [], line: 252, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 252, }, Ident { expr: [ Symbol( "b", ), ], line: 253, }, ], values: [ [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 253, }, ], ], line: 253, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 254, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 254, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 253, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 254, }, Ident { expr: [ Symbol( "b", ), ], line: 255, }, ], values: [ [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 255, }, ], ], line: 255, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 256, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 256, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 255, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 256, }, Ident { expr: [ Symbol( "b", ), ], line: 257, }, Ident { expr: [ Symbol( "c", ), ], line: 257, }, ], values: [ [ Symbol( "0", ), ], [ Symbol( "5", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 257, }, ], ], line: 257, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 257, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 258, }, Ident { expr: [ Symbol( "b", ), ], line: 259, }, Ident { expr: [ Symbol( "c", ), ], line: 259, }, ], values: [ [ Symbol( "0", ), ], [ Symbol( "5", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 259, }, ], ], line: 259, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 259, }, ], end: 1778, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, Ident { expr: [ Symbol( "b", ), ], line: 264, }, Ident { expr: [ Symbol( "c", ), ], line: 264, }, Ident { expr: [ Symbol( "d", ), ], line: 264, }, ], values: [ [ Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "nil", ), ], [ Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "nil", ), ], [ Expr( [ Symbol( "1", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "nil", ), Operator( ( "or", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 264, }, ], ), Ident { expr: [], line: 264, }, ], [ Symbol( "6", ), ], ], line: 264, column: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 265, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 265, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 265, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "6", ), ], ], ), ], line: 264, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 265, }, ], values: [ [ Symbol( "20", ), ], ], line: 267, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 267, }, Ident { expr: [ Symbol( "b", ), ], line: 268, }, Ident { expr: [ Symbol( "c", ), ], line: 268, }, Ident { expr: [ Symbol( "d", ), ], line: 268, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 268, }, ], ], line: 268, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "11", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "12", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 268, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 269, }, Ident { expr: [ Symbol( "b", ), ], line: 270, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 270, }, ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 270, }, ], ], line: 270, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 271, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 271, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 270, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 273, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 273, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 273, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 273, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 271, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), Operator( ( "and", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 274, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 273, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), Operator( ( "or", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 275, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 274, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 276, }, ], ), Ident { expr: [], line: 276, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 275, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 277, }, ], ), Ident { expr: [], line: 277, }, ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "nil", ), Operator( ( "or", true, ), ), Symbol( "\"alo\"", ), ], ), Ident { expr: [], line: 278, }, Operator( ( "==", true, ), ), Symbol( "\"alo\"", ), ], ], ), ], line: 277, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 279, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 278, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "false", ), Operator( ( "and", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 280, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 279, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 281, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "false", ), Operator( ( "or", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 282, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "false", ), Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "~=", true, ), ), Symbol( "false", ), ], ], ), ], line: 283, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 285, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 286, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 288, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 287, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "6", ), Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 289, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 288, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "56", ), ], ), Ident { expr: [], line: 290, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 289, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 291, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 290, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 291, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 292, }, ], values: [ [ Table { data: [], line: 294, column: 4, }, ], ], line: 294, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "true", ), ], ), Symbol( "]", ), ], line: 294, }, ], values: [ [ Symbol( "20", ), ], ], line: 295, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 295, }, ], values: [ [ Symbol( "10", ), ], ], line: 296, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Symbol( "]", ), ], line: 297, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), Operator( ( ">", true, ), ), Symbol( "2", ), ], ), Symbol( "]", ), ], line: 297, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 296, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", ], body: CodeBlock { start: 2110, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 299, }, ], ], ), ), ], end: 2113, }, line: 299, column: 8, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 301, column: 5, }, ], ], line: 302, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "3000", ), ], end: [ Operator( ( "-", false, ), ), Symbol( "3000", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 2129, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 302, }, ], ), Symbol( "]", ), ], line: 302, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 302, }, ], ], line: 302, column: 7, }, ], end: 2137, }, line: 302, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10e30", ), ], ), Symbol( "]", ), ], line: 302, }, ], values: [ [ Symbol( "\"alo\"", ), ], ], line: 303, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "true", ), ], ), Symbol( "]", ), ], line: 303, }, ], values: [ [ Symbol( "10", ), ], ], line: 303, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 303, }, ], values: [ [ Symbol( "20", ), ], ], line: 303, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10e30", ), ], ), Symbol( "]", ), ], line: 304, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "not", false, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 304, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10", ), Operator( ( "<", true, ), ), Symbol( "20", ), ], ), Symbol( "]", ), ], line: 304, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 303, }, ForLoop { iter: "i", start: [ Symbol( "3000", ), ], end: [ Operator( ( "-", false, ), ), Symbol( "3000", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 2194, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 305, }, ], ), Symbol( "]", ), ], line: 305, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 305, }, ], ], ), ], line: 305, }, ], end: 2205, }, line: 305, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "print", ), ], line: 306, }, ], ), Symbol( "]", ), ], line: 305, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), ], line: 306, }, ], ], line: 306, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), ], line: 307, }, ], ), Symbol( "]", ), ], line: 306, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 307, }, ], ], line: 307, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 308, }, ], ), Symbol( "]", ), ], line: 307, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 308, }, ], ], line: 308, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 309, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 309, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 309, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 309, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "print", ), ], line: 309, }, ], ), Symbol( "]", ), ], line: 309, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "assert", ), ], line: 309, }, ], ], ), ], line: 308, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "print", ), ], line: 310, }, ], ), Symbol( "]", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), ], line: 310, }, ], ), Symbol( "]", ), ], line: 310, }, ], ), Symbol( "]", ), ], line: 310, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "print", ), ], line: 310, }, ], ), Symbol( "]", ), ], line: 310, }, ], ], ), ], line: 309, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 310, }, ], values: [ [ Symbol( "nil", ), ], ], line: 311, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 311, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "9", ), ], ), ( None, [ Symbol( "8", ), ], ), ( None, [ Symbol( "7", ), ], ), ( None, [ Symbol( "6", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( Some( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), [ Symbol( "'a'", ), ], ), ( Some( [ Ident { expr: [ Symbol( "f", ), ], line: 313, }, ], ), [ Ident { expr: [ Symbol( "print", ), ], line: 313, }, ], ), ( Some( [ Symbol( "a", ), ], ), [ Symbol( "'a'", ), ], ), ( Some( [ Symbol( "b", ), ], ), [ Symbol( "'ab'", ), ], ), ], line: 313, column: 42, }, ], ], line: 313, column: 42, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 313, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 314, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 314, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 314, }, ], [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 314, }, ], ], line: 314, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 315, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 315, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "a", ), ], line: 315, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), ], line: 315, }, ], ), Symbol( "]", ), ], line: 315, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 315, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 315, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 315, }, ], ], ), ], line: 314, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 315, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 316, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 316, }, Ident { expr: [ Symbol( "b", ), ], line: 316, }, Ident { expr: [ Symbol( "c", ), ], line: 316, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "'alo'", ), ], ), [ Ident { expr: [ Symbol( "assert", ), ], line: 316, }, ], ), ], line: 316, column: 24, }, ], [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 316, }, ], [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "f", ), ], line: 316, }, ], ), Symbol( "]", ), ], line: 316, }, ], [ Symbol( "6", ), ], [ Symbol( "10", ), ], [ Symbol( "23", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 316, }, ], ], ), ], line: 316, }, ], [ Symbol( "2", ), ], ], line: 316, column: 49, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "alo", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 317, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 317, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 317, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 317, }, ], ], ), ], line: 316, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), ], ), Symbol( "]", ), ], line: 317, }, ], values: [ [ Symbol( "10", ), ], ], line: 319, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 319, }, ], values: [ [ Symbol( "11", ), ], ], line: 319, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), ], ), Symbol( "]", ), ], line: 319, }, ], values: [ [ Symbol( "12", ), ], ], line: 319, column: 30, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ), Symbol( "]", ), ], line: 319, }, ], values: [ [ Symbol( "13", ), ], ], line: 320, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ), Symbol( "]", ), ], line: 320, }, ], values: [ [ Symbol( "14", ), ], ], line: 320, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 320, }, ], values: [ [ Symbol( "15", ), ], ], line: 320, column: 30, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10", ), Operator( ( "^", true, ), ), Symbol( "33", ), ], ), Symbol( "]", ), ], line: 320, }, ], values: [ [ Symbol( "16", ), ], ], line: 320, column: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), ], ), Symbol( "]", ), ], line: 322, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 322, }, Operator( ( "==", true, ), ), Symbol( "11", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), ], ), Symbol( "]", ), ], line: 322, }, Operator( ( "==", true, ), ), Symbol( "12", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ), Symbol( "]", ), ], line: 322, }, Operator( ( "==", true, ), ), Symbol( "13", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ), Symbol( "]", ), ], line: 323, }, Operator( ( "==", true, ), ), Symbol( "14", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 323, }, Operator( ( "==", true, ), ), Symbol( "15", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10", ), Operator( ( "^", true, ), ), Symbol( "33", ), ], ), Symbol( "]", ), ], line: 323, }, Operator( ( "==", true, ), ), Symbol( "16", ), ], ], ), ], line: 320, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 324, }, ], values: [ [ Symbol( "nil", ), ], ], line: 329, column: 0, }, DoBlock( CodeBlock { start: 2576, code: [ Variable { names: [ ( "a", false, ), ( "i", false, ), ( "j", false, ), ( "b", false, ), ], values: [], line: 330, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 330, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "'a'", ), ], ), ( None, [ Symbol( "'b'", ), ], ), ], line: 331, column: 7, }, ], ], line: 331, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 331, }, ], values: [ [ Symbol( "1", ), ], ], line: 331, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "j", ), ], line: 331, }, ], values: [ [ Symbol( "2", ), ], ], line: 331, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 331, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 331, }, ], ], line: 331, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 331, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 332, }, ], ), Symbol( "]", ), ], line: 332, }, Ident { expr: [ Symbol( "a", ), ], line: 332, }, Ident { expr: [ Symbol( "j", ), ], line: 332, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "j", ), ], line: 332, }, ], ), Symbol( "]", ), ], line: 332, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 332, }, ], ), Symbol( "]", ), ], line: 332, }, ], values: [ [ Ident { expr: [ Symbol( "j", ), ], line: 332, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 332, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 332, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 332, }, ], [ Ident { expr: [ Symbol( "j", ), ], line: 332, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 332, }, ], ], line: 332, column: 34, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 333, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 333, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 332, }, ], end: 2673, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 335, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 339, }, ], ], ), ), ]