--- source: src/main.rs expression: parsed input_file: test-data/lua5.3-tests/strings.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing strings and string library'", ), ], ], ), ], line: 4, }, Variable { names: [ ( "maxi", false, ), ( "mini", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 6, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mininteger", ), ], line: 6, }, ], ], line: 9, column: 0, }, Function { local: true, name: [ Symbol( "checkerror", ), ], args: [ "msg", "f", "...", ], body: CodeBlock { start: 26, code: [ Variable { names: [ ( "s", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 10, }, ], [ Symbol( "...", ), ], ], ), ], line: 10, }, ], ], line: 10, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 11, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 11, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 11, }, ], ], ), ], line: 11, }, ], ], ), ], line: 10, }, ], end: 52, }, line: 12, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'alo'", ), Operator( ( "<", true, ), ), Symbol( "'alo1'", ), ], ], ), ], line: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "''", ), Operator( ( "<", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'alo\\0alo'", ), Operator( ( "<", true, ), ), Symbol( "'alo\\0b'", ), ], ], ), ], line: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'alo\\0alo\\0\\0'", ), Operator( ( ">", true, ), ), Symbol( "'alo\\0alo\\0'", ), ], ], ), ], line: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'alo'", ), Operator( ( "<", true, ), ), Symbol( "'alo\\0'", ), ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'alo\\0'", ), Operator( ( ">", true, ), ), Symbol( "'alo'", ), ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0'", ), Operator( ( "<", true, ), ), Symbol( "'\\1'", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0'", ), Operator( ( "<", true, ), ), Symbol( "'\\0\\1'", ), ], ], ), ], line: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\1\\0a\\0a'", ), Operator( ( "<=", true, ), ), Symbol( "'\\1\\0a\\0a'", ), ], ], ), ], line: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'\\1\\0a\\0b'", ), Operator( ( "<=", true, ), ), Symbol( "'\\1\\0a\\0a'", ), ], ), Ident { expr: [], line: 25, }, ], ], ), ], line: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0\\0'", ), Operator( ( "<", true, ), ), Symbol( "'\\0\\0\\0\\0'", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'\\0\\0\\0\\0'", ), Operator( ( "<", true, ), ), Symbol( "'\\0\\0\\0'", ), ], ), Ident { expr: [], line: 27, }, ], ], ), ], line: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0\\0'", ), Operator( ( "<=", true, ), ), Symbol( "'\\0\\0\\0\\0'", ), ], ], ), ], line: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'\\0\\0\\0\\0'", ), Operator( ( "<=", true, ), ), Symbol( "'\\0\\0\\0'", ), ], ), Ident { expr: [], line: 29, }, ], ], ), ], line: 28, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0\\0'", ), Operator( ( "<=", true, ), ), Symbol( "'\\0\\0\\0'", ), ], ], ), ], line: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0\\0'", ), Operator( ( ">=", true, ), ), Symbol( "'\\0\\0\\0'", ), ], ], ), ], line: 30, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'\\0\\0b'", ), Operator( ( "<", true, ), ), Symbol( "'\\0\\0a\\0'", ), ], ), Ident { expr: [], line: 32, }, ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], ], ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "\"234\"", ), ], ], ), ], line: 32, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "7", ), ], ], ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "\"789\"", ), ], ], ), ], line: 35, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "7", ), ], [ Symbol( "6", ), ], ], ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "7", ), ], [ Symbol( "7", ), ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Symbol( "\"7\"", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "0", ), ], [ Symbol( "0", ), ], ], ), ], line: 39, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 38, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "10", ), ], [ Symbol( "10", ), ], ], ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "\"123456789\"", ), ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "1", ), ], [ Symbol( "9", ), ], ], ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "\"123456789\"", ), ], ], ), ], line: 40, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "10", ), ], [ Operator( ( "-", false, ), ), Symbol( "20", ), ], ], ), ], line: 42, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 41, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "\"9\"", ), ], ], ), ], line: 42, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "\"6789\"", ), ], ], ), ], line: 43, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "6", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "\"456\"", ), ], ], ), ], line: 44, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Ident { expr: [ Symbol( "mini", ), ], line: 46, }, ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 46, }, Operator( ( "==", true, ), ), Symbol( "\"123456\"", ), ], ], ), ], line: 45, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Ident { expr: [ Symbol( "mini", ), ], line: 47, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 47, }, ], ], ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "\"123456789\"", ), ], ], ), ], line: 46, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Ident { expr: [ Symbol( "mini", ), ], line: 48, }, ], [ Ident { expr: [ Symbol( "mini", ), ], line: 48, }, ], ], ), ], line: 48, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 47, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"\\000123456789\"", ), ], [ Symbol( "3", ), ], [ Symbol( "5", ), ], ], ), ], line: 49, }, Operator( ( "==", true, ), ), Symbol( "\"234\"", ), ], ], ), ], line: 48, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "\"\\000123456789\"", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "sub", ), Call( [ [ Symbol( "8", ), ], ], ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "\"789\"", ), ], ], ), ], line: 49, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "\"345\"", ), ], ], ), ], line: 53, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 50, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 53, }, Ident { expr: [ Symbol( "b", ), ], line: 54, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Symbol( "\"345\"", ), ], ], ), ], line: 54, }, ], ], line: 54, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Symbol( "\"123456789\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 55, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 55, }, ], ], ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "\"345\"", ), ], ], ), ], line: 54, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"1234567890123456789\"", ), ], [ Symbol( "\"345\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"1234567890123456789\"", ), ], [ Symbol( "\"345\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 57, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 56, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"1234567890123456789\"", ), ], [ Symbol( "\"346\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 57, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"1234567890123456789\"", ), ], [ Symbol( "\".45\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "9", ), ], ], ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 58, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"abcdefg\"", ), ], [ Symbol( "\"\\0\"", ), ], [ Symbol( "5", ), ], [ Symbol( "1", ), ], ], ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 59, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 60, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"\"", ), ], [ Symbol( "2", ), ], ], ), ], line: 63, }, ], ], ), ], line: 62, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "''", ), ], [ Symbol( "'aaa'", ), ], [ Symbol( "1", ), ], ], ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 63, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "'alo(.)alo'", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "find", ), Call( [ [ Symbol( "'(.)'", ), ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 64, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Symbol( "\"\"", ), ], ], ), ], line: 67, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 65, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Symbol( "\"\\0\\0\\0\"", ), ], ], ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 67, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Symbol( "\"1234567890\"", ), ], ], ), ], line: 69, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 68, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Symbol( "\"\"", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 69, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Symbol( "\"\\0\\0\\0\"", ), Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 71, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Symbol( "\"1234567890\"", ), Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 72, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"a\"", ), ], ], ), ], line: 76, }, Operator( ( "==", true, ), ), Symbol( "97", ), ], ], ), ], line: 73, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\xe4\"", ), ], ], ), ], line: 77, }, Operator( ( ">", true, ), ), Symbol( "127", ), ], ], ), ], line: 76, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "255", ), ], ], ), ], line: 78, }, ], ], ), ], line: 78, }, Operator( ( "==", true, ), ), Symbol( "255", ), ], ], ), ], line: 77, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 79, }, ], ], ), ], line: 79, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 78, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\0\"", ), ], ], ), ], line: 80, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 79, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\0\\0alo\\0x\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 81, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "'x'", ), ], ], ), ], line: 81, }, ], ], ), ], line: 80, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"ba\"", ), ], [ Symbol( "2", ), ], ], ), ], line: 82, }, Operator( ( "==", true, ), ), Symbol( "97", ), ], ], ), ], line: 81, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\n\\n\"", ), ], [ Symbol( "2", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 83, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 82, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\n\\n\"", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 84, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 83, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\"", ), ], ], ), ], line: 85, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 84, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"hi\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 86, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 85, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"hi\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 87, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 86, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"hi\"", ), ], [ Symbol( "9", ), ], [ Symbol( "10", ), ], ], ), ], line: 88, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 87, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"hi\"", ), ], [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 89, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 88, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [], ), ], line: 90, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 89, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "255", ), ], [ Symbol( "0", ), ], ], ), ], line: 91, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\\255\\0\"", ), ], ], ), ], line: 90, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\xe4\"", ), ], ], ), ], line: 92, }, ], [ Symbol( "0", ), ], ], ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\\xe4\\0\"", ), ], ], ), ], line: 91, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\xe4l\\0óu\"", ), ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 93, }, ], ], ), ], line: 93, }, Operator( ( "==", true, ), ), Symbol( "\"\\xe4l\\0óu\"", ), ], ], ), ], line: 92, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\xe4l\\0óu\"", ), ], [ Symbol( "1", ), ], [ Symbol( "0", ), ], ], ), ], line: 94, }, ], ], ), ], line: 94, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 93, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\xe4l\\0óu\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "10", ), ], [ Symbol( "100", ), ], ], ), ], line: 95, }, ], ], ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "\"\\xe4l\\0óu\"", ), ], ], ), ], line: 94, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "upper", ), Call( [ [ Symbol( "\"ab\\0c\"", ), ], ], ), ], line: 97, }, Operator( ( "==", true, ), ), Symbol( "\"AB\\0C\"", ), ], ], ), ], line: 95, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "lower", ), Call( [ [ Symbol( "\"\\0ABCc%$\"", ), ], ], ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "\"\\0abcc%$\"", ), ], ], ), ], line: 97, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'teste'", ), ], [ Symbol( "0", ), ], ], ), ], line: 99, }, Operator( ( "==", true, ), ), Symbol( "''", ), ], ], ), ], line: 98, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'tés\\00tê'", ), ], [ Symbol( "2", ), ], ], ), ], line: 100, }, Operator( ( "==", true, ), ), Symbol( "'tés\\0têtés\\000tê'", ), ], ], ), ], line: 99, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "''", ), ], [ Symbol( "10", ), ], ], ), ], line: 101, }, Operator( ( "==", true, ), ), Symbol( "''", ), ], ], ), ], line: 100, }, IfStatement { condition: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), Call( [ [ Symbol( "\"i\"", ), ], ], ), ], line: 103, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], body: CodeBlock { start: 1026, code: [ Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too large\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), ], line: 105, }, ], [ Symbol( "'aa'", ), ], [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "30", ), ], ), Ident { expr: [], line: 105, }, ], ], ), ], line: 105, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too large\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), ], line: 106, }, ], [ Symbol( "'a'", ), ], [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "30", ), ], ), Ident { expr: [], line: 106, }, ], [ Symbol( "','", ), ], ], ), ], line: 105, }, ], end: 1061, }, next: None, line: 107, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'teste'", ), ], [ Symbol( "0", ), ], [ Symbol( "'xuxu'", ), ], ], ), ], line: 110, }, Operator( ( "==", true, ), ), Symbol( "''", ), ], ], ), ], line: 107, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'teste'", ), ], [ Symbol( "1", ), ], [ Symbol( "'xuxu'", ), ], ], ), ], line: 111, }, Operator( ( "==", true, ), ), Symbol( "'teste'", ), ], ], ), ], line: 110, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'\\1\\0\\1'", ), ], [ Symbol( "2", ), ], [ Symbol( "'\\0\\0'", ), ], ], ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "'\\1\\0\\1\\0\\0\\1\\0\\1'", ), ], ], ), ], line: 111, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "''", ), ], [ Symbol( "10", ), ], [ Symbol( "'.'", ), ], ], ), ], line: 113, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'.'", ), ], [ Symbol( "9", ), ], ], ), ], line: 113, }, ], ], ), ], line: 112, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), ], line: 114, }, ], [ Symbol( "\"aa\"", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 114, }, Operator( ( "//", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 114, }, ], ], ), ], line: 113, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), ], line: 115, }, ], [ Symbol( "\"\"", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 115, }, Operator( ( "//", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "10", ), ], [ Symbol( "\"aa\"", ), ], ], ), ], line: 115, }, ], ], ), ], line: 114, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "reverse", ), Call( [ [ Symbol( "\"\"", ), ], ], ), ], line: 117, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 115, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "reverse", ), Call( [ [ Symbol( "\"\\0\\1\\2\\3\"", ), ], ], ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "\"\\3\\2\\1\\0\"", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "reverse", ), Call( [ [ Symbol( "\"\\0001234\"", ), ], ], ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "\"4321\\0\"", ), ], ], ), ], line: 118, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Symbol( "30", ), ], step: None, code: CodeBlock { start: 1200, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'a'", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 121, }, ], ], ), ], line: 121, }, ], ], ), ], line: 121, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 121, }, ], ], ), ], line: 121, }, ], end: 1219, }, line: 121, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 123, }, ], ], ), ], line: 123, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 124, }, ], ], ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), ], ], ), ], line: 123, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Table { data: [], line: 125, column: 9, }, ], ], ), ], line: 125, }, ], [ Symbol( "'table:'", ), ], ], ), ], line: 125, }, ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 126, }, ], ], ), ], line: 126, }, ], [ Symbol( "'function:'", ), ], ], ), ], line: 126, }, ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "'\\0'", ), ], ], ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 126, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 128, }, Operator( ( "==", true, ), ), Symbol( "\"true\"", ), ], ], ), ], line: 127, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "\"false\"", ), ], ], ), ], line: 128, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1203", ), ], ], ), ], line: 130, }, Operator( ( "==", true, ), ), Symbol( "\"-1203\"", ), ], ], ), ], line: 129, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "1203.125", ), ], ], ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "\"1203.125\"", ), ], ], ), ], line: 130, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "0.5", ), ], ], ), ], line: 132, }, Operator( ( "==", true, ), ), Symbol( "\"-0.5\"", ), ], ], ), ], line: 131, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "32767", ), ], ], ), ], line: 133, }, Operator( ( "==", true, ), ), Symbol( "\"-32767\"", ), ], ], ), ], line: 132, }, IfStatement { condition: [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "tointeger", ), Call( [ [ Symbol( "2147483647", ), ], ], ), ], line: 134, }, ], body: CodeBlock { start: 1345, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2147483647", ), ], ], ), ], line: 135, }, Operator( ( "==", true, ), ), Symbol( "\"-2147483647\"", ), ], ], ), ], line: 135, }, ], end: 1356, }, next: None, line: 136, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "tointeger", ), Call( [ [ Symbol( "4611686018427387904", ), ], ], ), ], line: 137, }, ], body: CodeBlock { start: 1364, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "4611686018427387904", ), ], ], ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "\"4611686018427387904\"", ), ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "4611686018427387904", ), ], ], ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "\"-4611686018427387904\"", ), ], ], ), ], line: 138, }, ], end: 1384, }, next: None, line: 140, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "0.0", ), ], ], ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "\"0.0\"", ), ], body: CodeBlock { start: 1392, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "''", ), Operator( ( "..", true, ), ), Symbol( "12", ), Operator( ( "==", true, ), ), Symbol( "'12'", ), Operator( ( "and", true, ), ), Symbol( "12.0", ), Operator( ( "..", true, ), ), Symbol( "''", ), Operator( ( "==", true, ), ), Symbol( "'12.0'", ), ], ], ), ], line: 143, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1203", ), Operator( ( "+", true, ), ), Symbol( "0.0", ), ], ], ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "\"-1203.0\"", ), ], ], ), ], line: 143, }, ], end: 1419, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 1419, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "0.0", ), ], ], ), ], line: 146, }, Operator( ( "==", true, ), ), Symbol( "\"0\"", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "''", ), Operator( ( "..", true, ), ), Symbol( "12", ), Operator( ( "==", true, ), ), Symbol( "'12'", ), Operator( ( "and", true, ), ), Symbol( "12.0", ), Operator( ( "..", true, ), ), Symbol( "''", ), Operator( ( "==", true, ), ), Symbol( "'12'", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1203", ), Operator( ( "+", true, ), ), Symbol( "0.0", ), ], ], ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "\"-1203\"", ), ], ], ), ], line: 147, }, ], end: 1455, }, next: None, line: 149, column: 1, }, ), line: 149, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 149, }, ], values: [ [ Symbol( "'\"ílo\"\\n\\\\'", ), ], ], line: 152, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'%q%s'", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 153, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 153, }, ], ], ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "'\"\\\\\"ílo\\\\\"\\\\\\n\\\\\\\\\"\"ílo\"\\n\\\\'", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'%q'", ), ], [ Symbol( "\"\\0\"", ), ], ], ), ], line: 154, }, Operator( ( "==", true, ), ), MultilineString( "[[\"\\0\"]]", ), ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'return %q'", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 155, }, ], ], ), ], line: 155, }, ], ], ), Call( [], ), ], line: 155, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 155, }, ], ], ), ], line: 154, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 155, }, ], values: [ [ Symbol( "\"\\0\\1\\0023\\5\\0009\"", ), ], ], line: 156, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'return %q'", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 157, }, ], ], ), ], line: 157, }, ], ], ), Call( [], ), ], line: 157, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 157, }, ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"\\0%c\\0%c%x\\0\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"\\xe4\"", ), ], ], ), ], line: 158, }, ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Symbol( "\"b\"", ), ], ], ), ], line: 158, }, ], [ Symbol( "140", ), ], ], ), ], line: 158, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\\xe4\\0b8c\\0\"", ), ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "''", ), ], ], ), ], line: 160, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%c\"", ), ], [ Symbol( "34", ), ], ], ), ], line: 161, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%c\"", ), ], [ Symbol( "48", ), ], ], ), ], line: 161, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%c\"", ), ], [ Symbol( "90", ), ], ], ), ], line: 161, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%c\"", ), ], [ Symbol( "100", ), ], ], ), ], line: 161, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%c%c%c%c\"", ), ], [ Symbol( "34", ), ], [ Symbol( "48", ), ], [ Symbol( "90", ), ], [ Symbol( "100", ), ], ], ), ], line: 161, }, ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s\\0 is not \\0%s\"", ), ], [ Symbol( "'not be'", ), ], [ Symbol( "'be'", ), ], ], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "'not be\\0 is not \\0be'", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%%%d %010d\"", ), ], [ Symbol( "10", ), ], [ Symbol( "23", ), ], ], ), ], line: 164, }, Operator( ( "==", true, ), ), Symbol( "\"%10 0000000023\"", ), ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%f\"", ), ], [ Symbol( "10.3", ), ], ], ), ], line: 165, }, ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "10.3", ), ], ], ), ], line: 164, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 165, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'\"%-50s\"'", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 166, }, ], ], line: 166, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "52", ), ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 168, }, ], [ Symbol( "1", ), ], [ Symbol( "4", ), ], ], ), ], line: 168, }, Operator( ( "==", true, ), ), Symbol( "'\"a '", ), ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"-%.20s.20s\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"%\"", ), ], [ Symbol( "2000", ), ], ], ), ], line: 170, }, ], ], ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "\"-\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"%\"", ), ], [ Symbol( "20", ), ], ], ), ], line: 171, }, Operator( ( "..", true, ), ), Symbol( "\".20s\"", ), ], ], ), ], line: 168, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'\"-%20s.20s\"'", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"%\"", ), ], [ Symbol( "2000", ), ], ], ), ], line: 172, }, ], ], ), ], line: 172, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%q\"", ), ], [ Symbol( "\"-\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"%\"", ), ], [ Symbol( "2000", ), ], ], ), ], line: 173, }, Operator( ( "..", true, ), ), Symbol( "\".20s\"", ), ], ], ), ], line: 172, }, ], ], ), ], line: 171, }, DoBlock( CodeBlock { start: 1764, code: [ Function { local: true, name: [ Symbol( "checkQ", ), ], args: [ "v", ], body: CodeBlock { start: 6, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%q\"", ), ], [ Ident { expr: [ Symbol( "v", ), ], line: 177, }, ], ], ), ], line: 177, }, ], ], line: 178, column: 0, }, Variable { names: [ ( "nv", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 178, }, ], ], ), Call( [], ), ], line: 178, }, ], ], line: 178, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 179, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nv", ), ], line: 179, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 179, }, ], ], ), ], line: 179, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "nv", ), ], line: 179, }, ], ], ), ], line: 179, }, ], ], ), ], line: 178, }, ], end: 49, }, line: 180, column: 1, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Symbol( "\"\\0\\0\\1\\255\\u{234}\"", ), ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 182, }, ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mininteger", ), ], line: 183, }, ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "pi", ), ], line: 184, }, ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Symbol( "0.1", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "checkQ", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"no literal\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), ], line: 189, }, ], [ Symbol( "\"%q\"", ), ], [ Table { data: [], line: 189, column: 12, }, ], ], ), ], line: 188, }, ], end: 1865, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"\\0%s\\0\"", ), ], [ Symbol( "\"\\0\\0\\1\"", ), ], ], ), ], line: 192, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\\0\\0\\1\\0\"", ), ], ], ), ], line: 190, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"contains zeros\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), ], line: 193, }, ], [ Symbol( "\"%10s\"", ), ], [ Symbol( "\"\\0\"", ), ], ], ), ], line: 192, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s %s\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "true", ), ], ], ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "\"nil true\"", ), ], ], ), ], line: 193, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s %.4s\"", ), ], [ Symbol( "false", ), ], [ Symbol( "true", ), ], ], ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "\"false true\"", ), ], ], ), ], line: 196, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%.3s %.3s\"", ), ], [ Symbol( "false", ), ], [ Symbol( "true", ), ], ], ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "\"fal tru\"", ), ], ], ), ], line: 197, }, Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 199, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__tostring", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 1949, code: [ Return( Some( [ [ Symbol( "\"hello\"", ), ], ], ), ), ], end: 1952, }, line: 199, column: 17, }, ], ), ( Some( [ Symbol( "__name", ), ], ), [ Symbol( "\"hi\"", ), ], ), ], line: 200, column: 4, }, ], ], ), ], line: 199, }, ], ], line: 200, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s %.10s\"", ), ], [ Ident { expr: [ Symbol( "m", ), ], line: 201, }, ], [ Ident { expr: [ Symbol( "m", ), ], line: 201, }, ], ], ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "\"hello hello\"", ), ], ], ), ], line: 200, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 202, }, ], ], ), Symbol( ".", ), Symbol( "__tostring", ), ], line: 201, }, ], values: [ [ Symbol( "nil", ), ], ], line: 202, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%.4s\"", ), ], [ Ident { expr: [ Symbol( "m", ), ], line: 203, }, ], ], ), ], line: 203, }, Operator( ( "==", true, ), ), Symbol( "\"hi: \"", ), ], ], ), ], line: 202, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 205, }, ], ], ), Symbol( ".", ), Symbol( "__tostring", ), ], line: 203, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 2004, code: [ Return( Some( [ [ Table { data: [], line: 205, column: 3, }, ], ], ), ), ], end: 2008, }, line: 205, column: 14, }, ], ], line: 205, column: 14, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"'__tostring' must return a string\"", ), ], [ Ident { expr: [ Symbol( "tostring", ), ], line: 206, }, ], [ Ident { expr: [ Symbol( "m", ), ], line: 206, }, ], ], ), ], line: 205, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%x\"", ), ], [ Symbol( "0.0", ), ], ], ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "\"0\"", ), ], ], ), ], line: 206, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%02x\"", ), ], [ Symbol( "0.0", ), ], ], ), ], line: 210, }, Operator( ( "==", true, ), ), Symbol( "\"00\"", ), ], ], ), ], line: 209, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%08X\"", ), ], [ Symbol( "0xFFFFFFFF", ), ], ], ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "\"FFFFFFFF\"", ), ], ], ), ], line: 210, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%+08d\"", ), ], [ Symbol( "31501", ), ], ], ), ], line: 212, }, Operator( ( "==", true, ), ), Symbol( "\"+0031501\"", ), ], ], ), ], line: 211, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%+08d\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "30927", ), ], ], ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "\"-0030927\"", ), ], ], ), ], line: 212, }, DoBlock( CodeBlock { start: 2083, code: [ Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 218, column: 0, }, Variable { names: [ ( "j", false, ), ], values: [ [ Symbol( "10000", ), ], ], line: 219, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 219, }, ], body: CodeBlock { start: 15, code: [ Variable { names: [ ( "m", false, ), ], values: [ [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 220, }, ], ), Ident { expr: [], line: 220, }, Operator( ( "//", true, ), ), Symbol( "2", ), ], ], line: 221, column: 0, }, IfStatement { condition: [ Symbol( "10", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "m", ), ], line: 221, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "huge", ), ], line: 221, }, ], body: CodeBlock { start: 19, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 221, }, ], values: [ [ Ident { expr: [ Symbol( "m", ), ], line: 221, }, ], ], line: 221, column: 3, }, ], end: 23, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 23, code: [ Alter { names: [ Ident { expr: [ Symbol( "j", ), ], line: 221, }, ], values: [ [ Ident { expr: [ Symbol( "m", ), ], line: 221, }, ], ], line: 221, column: 3, }, ], end: 27, }, next: None, line: 221, column: 17, }, ), line: 221, column: 17, }, ], end: 43, }, line: 222, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "10", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 223, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "huge", ), ], line: 223, }, Operator( ( "and", true, ), ), Symbol( "10", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 223, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "huge", ), ], line: 223, }, ], ], ), ], line: 222, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'%.99f'", ), ], [ Operator( ( "-", false, ), ), Expr( [ Symbol( "10", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 224, }, ], ), Ident { expr: [], line: 224, }, ], ], ), ], line: 224, }, ], ], line: 224, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 225, }, ], ], ), ], line: 225, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 225, }, Operator( ( "+", true, ), ), Symbol( "101", ), ], ], ), ], line: 224, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 226, }, ], ], ), ], line: 226, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "10", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 226, }, ], ), Ident { expr: [], line: 226, }, ], ], ), ], line: 225, }, ], end: 2188, }, ), DoBlock( CodeBlock { start: 2189, code: [ Variable { names: [ ( "max", false, ), ( "min", false, ), ], values: [ [ Symbol( "0x7fffffff", ), ], [ Operator( ( "-", false, ), ), Symbol( "0x80000000", ), ], ], line: 232, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%8x\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 233, }, ], [ Operator( ( "-", false, ), ), Symbol( "8", ), ], ], ), ], line: 233, }, Operator( ( "==", true, ), ), Symbol( "\"ffffffff\"", ), ], ], ), ], line: 232, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%x\"", ), ], [ Ident { expr: [ Symbol( "max", ), ], line: 234, }, ], ], ), ], line: 234, }, Operator( ( "==", true, ), ), Symbol( "\"7fffffff\"", ), ], ], ), ], line: 233, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%x\"", ), ], [ Ident { expr: [ Symbol( "min", ), ], line: 235, }, ], ], ), ], line: 235, }, ], [ Operator( ( "-", false, ), ), Symbol( "8", ), ], ], ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "\"80000000\"", ), ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%d\"", ), ], [ Ident { expr: [ Symbol( "max", ), ], line: 236, }, ], ], ), ], line: 236, }, Operator( ( "==", true, ), ), Symbol( "\"2147483647\"", ), ], ], ), ], line: 235, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%d\"", ), ], [ Ident { expr: [ Symbol( "min", ), ], line: 237, }, ], ], ), ], line: 237, }, Operator( ( "==", true, ), ), Symbol( "\"-2147483648\"", ), ], ], ), ], line: 236, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%u\"", ), ], [ Symbol( "0xffffffff", ), ], ], ), ], line: 238, }, Operator( ( "==", true, ), ), Symbol( "\"4294967295\"", ), ], ], ), ], line: 237, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%o\"", ), ], [ Symbol( "0xABCD", ), ], ], ), ], line: 239, }, Operator( ( "==", true, ), ), Symbol( "\"125715\"", ), ], ], ), ], line: 238, }, Alter { names: [ Ident { expr: [ Symbol( "max", ), ], line: 239, }, Ident { expr: [ Symbol( "min", ), ], line: 241, }, ], values: [ [ Symbol( "0x7fffffffffffffff", ), ], [ Operator( ( "-", false, ), ), Symbol( "0x8000000000000000", ), ], ], line: 242, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "max", ), ], line: 242, }, Operator( ( ">", true, ), ), Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "53", ), ], body: CodeBlock { start: 132, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%x\"", ), ], [ Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "52", ), Operator( ( "|", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 243, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 243, }, Operator( ( "==", true, ), ), Symbol( "\"fffffffffffff\"", ), ], ], ), ], line: 243, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"0x%8X\"", ), ], [ Symbol( "0x8f000003", ), ], ], ), ], line: 244, }, Operator( ( "==", true, ), ), Symbol( "\"0x8F000003\"", ), ], ], ), ], line: 243, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%d\"", ), ], [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "53", ), ], ], ), ], line: 245, }, Operator( ( "==", true, ), ), Symbol( "\"9007199254740992\"", ), ], ], ), ], line: 244, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%i\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "53", ), ], ], ), ], line: 246, }, Operator( ( "==", true, ), ), Symbol( "\"-9007199254740992\"", ), ], ], ), ], line: 245, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%x\"", ), ], [ Ident { expr: [ Symbol( "max", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "==", true, ), ), Symbol( "\"7fffffffffffffff\"", ), ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%x\"", ), ], [ Ident { expr: [ Symbol( "min", ), ], line: 248, }, ], ], ), ], line: 248, }, Operator( ( "==", true, ), ), Symbol( "\"8000000000000000\"", ), ], ], ), ], line: 247, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%d\"", ), ], [ Ident { expr: [ Symbol( "max", ), ], line: 249, }, ], ], ), ], line: 249, }, Operator( ( "==", true, ), ), Symbol( "\"9223372036854775807\"", ), ], ], ), ], line: 248, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%d\"", ), ], [ Ident { expr: [ Symbol( "min", ), ], line: 250, }, ], ], ), ], line: 250, }, Operator( ( "==", true, ), ), Symbol( "\"-9223372036854775808\"", ), ], ], ), ], line: 249, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%u\"", ), ], [ Operator( ( "~", false, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "64", ), ], ), Ident { expr: [], line: 251, }, ], ], ), ], line: 251, }, Operator( ( "==", true, ), ), Symbol( "\"18446744073709551615\"", ), ], ], ), ], line: 250, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Symbol( "1234567890123", ), ], ], ), ], line: 252, }, Operator( ( "==", true, ), ), Symbol( "'1234567890123'", ), ], ], ), ], line: 251, }, ], end: 278, }, next: None, line: 253, column: 1, }, ], end: 2468, }, ), DoBlock( CodeBlock { start: 2469, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing 'format %a %A'\"", ), ], ], ), ], line: 257, }, Function { local: true, name: [ Symbol( "matchhexa", ), ], args: [ "n", ], body: CodeBlock { start: 10, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%a\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 259, }, ], ], ), ], line: 259, }, ], ], line: 259, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 261, }, ], [ Symbol( "\"^%-?0x[1-9a-f]%.?[0-9a-f]*p[-+]?%d+$\"", ), ], ], ), ], line: 261, }, ], ], ), ], line: 259, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 262, }, ], ], ), ], line: 262, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 262, }, ], ], ), ], line: 261, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 262, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%A\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 263, }, ], ], ), ], line: 263, }, ], ], line: 263, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 264, }, ], [ Symbol( "\"^%-?0X[1-9A-F]%.?[0-9A-F]*P[-+]?%d+$\"", ), ], ], ), ], line: 264, }, ], ], ), ], line: 263, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 265, }, ], ], ), ], line: 265, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 265, }, ], ], ), ], line: 264, }, ], end: 72, }, line: 266, column: 1, }, ForFuncLoop { iters: [ "_", "n", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Table { data: [ ( None, [ Symbol( "0.1", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "0.1", ), ], ), ( None, [ Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "3", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "3", ), ], ), ( None, [ Symbol( "1e30", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1e30", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "45", ), Operator( ( "/", true, ), ), Symbol( "247", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ), ( None, [ Symbol( "3e-20", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "3e-20", ), ], ), ], line: 268, column: 20, }, ], ], ), ], line: 267, }, ], stop: None, initial: None, code: CodeBlock { start: 119, code: [ Ident { expr: [ Symbol( "matchhexa", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 269, }, ], ], ), ], line: 269, }, ], end: 124, }, line: 270, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%A\"", ), ], [ Symbol( "0.0", ), ], ], ), ], line: 272, }, ], [ Symbol( "\"^0X0%.?0?P%+?0$\"", ), ], ], ), ], line: 272, }, ], ], ), ], line: 270, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%a\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "0.0", ), ], ], ), ], line: 273, }, ], [ Symbol( "\"^%-0x0%.?0?p%+?0$\"", ), ], ], ), ], line: 273, }, ], ], ), ], line: 272, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_port", ), ], line: 275, }, ], body: CodeBlock { start: 165, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%a\"", ), ], [ Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ], ), ], line: 276, }, ], [ Symbol( "\"^inf\"", ), ], ], ), ], line: 276, }, ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%A\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ], ), ], line: 277, }, ], [ Symbol( "\"^%-INF\"", ), ], ], ), ], line: 277, }, ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%a\"", ), ], [ Symbol( "0", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ], ), ], line: 278, }, ], [ Symbol( "\"^%-?nan\"", ), ], ], ), ], line: 278, }, ], ], ), ], line: 277, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%a\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "0.0", ), ], ], ), ], line: 279, }, ], [ Symbol( "\"^%-0x0\"", ), ], ], ), ], line: 279, }, ], ], ), ], line: 278, }, ], end: 246, }, next: None, line: 280, column: 1, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), ], line: 282, }, ], [ Symbol( "\"%.3a\"", ), ], [ Symbol( "0", ), ], ], ), ], line: 282, }, ], body: CodeBlock { start: 259, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 283, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 283, }, ], ), Ident { expr: [ Call( [ [ Symbol( "\"\\n >>> modifiers for format '%a' not available <<<\\n\"", ), ], ], ), ], line: 283, }, ], end: 268, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 268, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%+.2A\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 285, }, ], [ Symbol( "\"^%+0X%x%.%x0P%+?%d$\"", ), ], ], ), ], line: 285, }, ], ], ), ], line: 285, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%.4A\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "12", ), ], ], ), ], line: 286, }, ], [ Symbol( "\"^%-0X%x%.%x000P%+?%d$\"", ), ], ], ), ], line: 286, }, ], ], ), ], line: 285, }, ], end: 306, }, next: None, line: 287, column: 1, }, ), line: 287, column: 1, }, ], end: 2776, }, ), Function { local: true, name: [ Symbol( "check", ), ], args: [ "fmt", "msg", ], body: CodeBlock { start: 2784, code: [ Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 294, }, ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), ], line: 294, }, ], [ Ident { expr: [ Symbol( "fmt", ), ], line: 294, }, ], [ Symbol( "10", ), ], ], ), ], line: 294, }, ], end: 2797, }, line: 295, column: 1, }, Variable { names: [ ( "aux", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'0'", ), ], [ Symbol( "600", ), ], ], ), ], line: 297, }, ], ], line: 297, column: 11, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%100.3d\"", ), ], [ Symbol( "\"too long\"", ), ], ], ), ], line: 297, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%1\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "aux", ), ], line: 299, }, Operator( ( "..", true, ), ), Symbol( "\".3d\"", ), ], [ Symbol( "\"too long\"", ), ], ], ), ], line: 298, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%1.100d\"", ), ], [ Symbol( "\"too long\"", ), ], ], ), ], line: 299, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%10.1\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "aux", ), ], line: 301, }, Operator( ( "..", true, ), ), Symbol( "\"004d\"", ), ], [ Symbol( "\"too long\"", ), ], ], ), ], line: 300, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%t\"", ), ], [ Symbol( "\"invalid option\"", ), ], ], ), ], line: 301, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "aux", ), ], line: 303, }, Operator( ( "..", true, ), ), Symbol( "\"d\"", ), ], [ Symbol( "\"repeated flags\"", ), ], ], ), ], line: 302, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"%d %d\"", ), ], [ Symbol( "\"no value\"", ), ], ], ), ], line: 303, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return 1\\n--comment without ending EOL\"", ), ], ], ), Call( [], ), ], line: 307, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 304, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"table expected\"", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), ], line: 310, }, ], [ Symbol( "3", ), ], ], ), ], line: 307, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [], line: 311, column: 7, }, ], ], ), ], line: 311, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 310, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [], line: 312, column: 8, }, ], [ Symbol( "'x'", ), ], ], ), ], line: 312, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 311, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [ ( None, [ Symbol( "'\\0'", ), ], ), ( None, [ Symbol( "'\\0\\1'", ), ], ), ( None, [ Symbol( "'\\0\\1\\2'", ), ], ), ], line: 313, column: 13, }, ], [ Symbol( "'.\\0.'", ), ], ], ), ], line: 313, }, Operator( ( "==", true, ), ), Symbol( "\"\\0.\\0.\\0\\1.\\0.\\0\\1\\2\"", ), ], ], ), ], line: 312, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 314, column: 5, }, ], ], line: 314, column: 6, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "300", ), ], step: None, code: CodeBlock { start: 2939, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 314, }, ], ), Symbol( "]", ), ], line: 314, }, ], values: [ [ Symbol( "\"xuxu\"", ), ], ], line: 314, column: 6, }, ], end: 2946, }, line: 314, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 315, }, ], [ Symbol( "\"123\"", ), ], ], ), ], line: 315, }, Operator( ( "..", true, ), ), Symbol( "\"123\"", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"xuxu123\"", ), ], [ Symbol( "300", ), ], ], ), ], line: 315, }, ], ], ), ], line: 314, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 316, }, ], [ Symbol( "\"b\"", ), ], [ Symbol( "20", ), ], [ Symbol( "20", ), ], ], ), ], line: 316, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 315, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 317, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "20", ), ], [ Symbol( "21", ), ], ], ), ], line: 317, }, Operator( ( "==", true, ), ), Symbol( "\"xuxuxuxu\"", ), ], ], ), ], line: 316, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 318, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "22", ), ], [ Symbol( "21", ), ], ], ), ], line: 318, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 317, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 319, }, ], [ Symbol( "\"3\"", ), ], [ Symbol( "299", ), ], ], ), ], line: 319, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu3xuxu\"", ), ], ], ), ], line: 318, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [], line: 320, column: 8, }, ], [ Symbol( "\"x\"", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 320, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 320, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 320, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 319, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [], line: 321, column: 8, }, ], [ Symbol( "\"x\"", ), ], [ Ident { expr: [ Symbol( "mini", ), ], line: 321, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "mini", ), ], line: 321, }, ], ], ), ], line: 321, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 320, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [], line: 322, column: 8, }, ], [ Symbol( "\"x\"", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 322, }, ], [ Ident { expr: [ Symbol( "mini", ), ], line: 322, }, ], ], ), ], line: 322, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 321, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxi", ), ], line: 323, }, ], ), [ Symbol( "\"alo\"", ), ], ), ], line: 323, column: 13, }, ], [ Symbol( "\"x\"", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 323, }, ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 323, }, ], ], ), ], line: 323, }, Operator( ( "==", true, ), ), Symbol( "\"alo\"", ), ], ], ), ], line: 322, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "maxi", ), ], line: 324, }, ], ), [ Symbol( "\"alo\"", ), ], ), ( Some( [ Ident { expr: [ Symbol( "maxi", ), ], line: 324, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), [ Symbol( "\"y\"", ), ], ), ], line: 324, column: 21, }, ], [ Symbol( "\"-\"", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 324, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "maxi", ), ], line: 324, }, ], ], ), ], line: 324, }, Operator( ( "==", true, ), ), Symbol( "\"y-alo\"", ), ], ], ), ], line: 323, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), ], line: 327, }, ], [ Table { data: [ ( None, [ Symbol( "\"a\"", ), ], ), ( None, [ Symbol( "\"b\"", ), ], ), ( None, [ Table { data: [], line: 327, column: 16, }, ], ), ], line: 327, column: 17, }, ], ], ), ], line: 327, }, ], ], ), ], line: 325, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 327, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "\"a\"", ), ], ), ( None, [ Symbol( "\"b\"", ), ], ), ( None, [ Symbol( "\"c\"", ), ], ), ], line: 329, column: 9, }, ], ], line: 329, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 330, }, ], [ Symbol( "\",\"", ), ], [ Symbol( "1", ), ], [ Symbol( "0", ), ], ], ), ], line: 330, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 329, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 331, }, ], [ Symbol( "\",\"", ), ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 331, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 330, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 332, }, ], [ Symbol( "\",\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 332, }, Operator( ( "==", true, ), ), Symbol( "\"a,b\"", ), ], ], ), ], line: 331, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 333, }, ], [ Symbol( "\",\"", ), ], [ Symbol( "2", ), ], ], ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "\"b,c\"", ), ], ], ), ], line: 332, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 334, }, ], [ Symbol( "\",\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 334, }, Operator( ( "==", true, ), ), Symbol( "\"c\"", ), ], ], ), ], line: 333, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 335, }, ], [ Symbol( "\",\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 335, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 334, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_port", ), ], line: 337, }, ], body: CodeBlock { start: 3276, code: [ Variable { names: [ ( "locales", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"ptb\"", ), ], ), ( None, [ Symbol( "\"pt_BR.iso88591\"", ), ], ), ( None, [ Symbol( "\"ISO-8859-1\"", ), ], ), ], line: 339, column: 10, }, ], ], line: 340, column: 0, }, Function { local: true, name: [ Symbol( "trylocale", ), ], args: [ "w", ], body: CodeBlock { start: 16, code: [ ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "locales", ), ], line: 341, }, ], step: None, code: CodeBlock { start: 8, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Ident { expr: [ Symbol( "locales", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 342, }, ], ), Symbol( "]", ), ], line: 342, }, ], [ Ident { expr: [ Symbol( "w", ), ], line: 342, }, ], ], ), ], line: 342, }, ], body: CodeBlock { start: 13, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"'%s' locale set to '%s'\"", ), ], [ Ident { expr: [ Symbol( "w", ), ], line: 343, }, ], [ Ident { expr: [ Symbol( "locales", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 343, }, ], ), Symbol( "]", ), ], line: 343, }, ], ], ), ], line: 343, }, ], ], ), ], line: 343, }, Return( Some( [ [ Ident { expr: [ Symbol( "locales", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 344, }, ], ), Symbol( "]", ), ], line: 344, }, ], ], ), ), ], end: 35, }, next: None, line: 345, column: 1, }, ], end: 44, }, line: 346, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"'%s' locale not found\"", ), ], [ Ident { expr: [ Symbol( "w", ), ], line: 347, }, ], ], ), ], line: 347, }, ], ], ), ], line: 346, }, Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 74, }, line: 349, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "trylocale", ), Call( [ [ Symbol( "\"collate\"", ), ], ], ), ], line: 351, }, ], body: CodeBlock { start: 80, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"alo\"", ), Operator( ( "<", true, ), ), Symbol( "\"álo\"", ), Operator( ( "and", true, ), ), Symbol( "\"álo\"", ), Operator( ( "<", true, ), ), Symbol( "\"amo\"", ), ], ], ), ], line: 352, }, ], end: 91, }, next: None, line: 353, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "trylocale", ), Call( [ [ Symbol( "\"ctype\"", ), ], ], ), ], line: 355, }, ], body: CodeBlock { start: 97, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"áéíóú\"", ), ], [ Symbol( "\"%a\"", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 356, }, Operator( ( "==", true, ), ), Symbol( "\"xxxxx\"", ), ], ], ), ], line: 356, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"áÁéÉ\"", ), ], [ Symbol( "\"%l\"", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 357, }, Operator( ( "==", true, ), ), Symbol( "\"xÁxÉ\"", ), ], ], ), ], line: 356, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"áÁéÉ\"", ), ], [ Symbol( "\"%u\"", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 358, }, Operator( ( "==", true, ), ), Symbol( "\"áxéx\"", ), ], ], ), ], line: 357, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "upper", ), Call( [ [ Symbol( "\"áÁé{xuxu}ção\"", ), ], ], ), ], line: 359, }, Operator( ( "==", true, ), ), Symbol( "\"ÁÁÉ{XUXU}ÇÃO\"", ), ], ], ), ], line: 358, }, ], end: 152, }, next: None, line: 360, column: 1, }, Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"C\"", ), ], ], ), ], line: 360, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [], ), ], line: 363, }, Operator( ( "==", true, ), ), Symbol( "'C'", ), ], ], ), ], line: 362, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "\"numeric\"", ), ], ], ), ], line: 364, }, Operator( ( "==", true, ), ), Symbol( "'C'", ), ], ], ), ], line: 363, }, ], end: 3458, }, next: None, line: 366, column: 1, }, DoBlock( CodeBlock { start: 3459, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Symbol( "\"1 2 3 4 5\"", ), ], [ Symbol( "\"%d+\"", ), ], ], ), ], line: 372, }, ], ], line: 372, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 373, }, Operator( ( "==", true, ), ), Symbol( "\"1\"", ), ], ], ), ], line: 372, }, Alter { names: [ Ident { expr: [ Symbol( "co", ), ], line: 373, }, ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 374, }, ], ], ), ], line: 374, }, ], ], line: 374, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "co", ), Call( [], ), ], line: 375, }, Operator( ( "==", true, ), ), Symbol( "\"2\"", ), ], ], ), ], line: 374, }, ], end: 3495, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 376, }, ]