--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-tests/tpack.lua --- [ Variable { names: [ ( "pack", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "pack", ), ], line: 4, }, ], ], line: 5, column: 0, }, Variable { names: [ ( "packsize", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), ], line: 5, }, ], ], line: 6, column: 0, }, Variable { names: [ ( "unpack", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "unpack", ), ], line: 6, }, ], ], line: 6, column: 6, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing pack/unpack\"", ), ], ], ), ], line: 6, }, Variable { names: [ ( "NB", false, ), ], values: [ [ Symbol( "16", ), ], ], line: 13, column: 0, }, Variable { names: [ ( "sizeshort", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"h\"", ), ], ], ), ], line: 13, }, ], ], line: 14, column: 0, }, Variable { names: [ ( "sizeint", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"i\"", ), ], ], ), ], line: 14, }, ], ], line: 15, column: 0, }, Variable { names: [ ( "sizelong", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"l\"", ), ], ], ), ], line: 15, }, ], ], line: 16, column: 0, }, Variable { names: [ ( "sizesize_t", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"T\"", ), ], ], ), ], line: 16, }, ], ], line: 17, column: 0, }, Variable { names: [ ( "sizeLI", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"j\"", ), ], ], ), ], line: 17, }, ], ], line: 18, column: 0, }, Variable { names: [ ( "sizefloat", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"f\"", ), ], ], ), ], line: 18, }, ], ], line: 19, column: 0, }, Variable { names: [ ( "sizedouble", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"d\"", ), ], ], ), ], line: 19, }, ], ], line: 20, column: 0, }, Variable { names: [ ( "sizenumber", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"n\"", ), ], ], ), ], line: 20, }, ], ], line: 21, column: 0, }, Variable { names: [ ( "little", false, ), ], values: [ [ Expr( [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"i2\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 21, }, Operator( ( "==", true, ), ), Symbol( "\"\\1\\0\"", ), ], ), Ident { expr: [], line: 21, }, ], ], line: 22, column: 0, }, Variable { names: [ ( "align", false, ), ], values: [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"!xXi16\"", ), ], ], ), ], line: 22, }, ], ], line: 22, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1", ), Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "sizeshort", ), ], line: 24, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "sizeshort", ), ], line: 24, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "sizeint", ), ], line: 24, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "sizeint", ), ], line: 24, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "sizelong", ), ], line: 24, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "sizefloat", ), ], line: 24, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "sizedouble", ), ], line: 25, }, ], ], ), ], line: 22, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"platform:\"", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"\\tshort %d, int %d, long %d, size_t %d, float %d, double %d,\\n\\z\n \\tlua Integer %d, lua Number %d\"", ), ], [ Ident { expr: [ Symbol( "sizeshort", ), ], line: 30, }, ], [ Ident { expr: [ Symbol( "sizeint", ), ], line: 31, }, ], [ Ident { expr: [ Symbol( "sizelong", ), ], line: 31, }, ], [ Ident { expr: [ Symbol( "sizesize_t", ), ], line: 31, }, ], [ Ident { expr: [ Symbol( "sizefloat", ), ], line: 31, }, ], [ Ident { expr: [ Symbol( "sizedouble", ), ], line: 31, }, ], [ Ident { expr: [ Symbol( "sizeLI", ), ], line: 31, }, ], [ Ident { expr: [ Symbol( "sizenumber", ), ], line: 32, }, ], ], ), ], line: 28, }, ], ], ), ], line: 27, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\t\"", ), Operator( ( "..", true, ), ), Expr( [ Ident { expr: [ Symbol( "little", ), ], line: 33, }, Operator( ( "and", true, ), ), Symbol( "\"little\"", ), Operator( ( "or", true, ), ), Symbol( "\"big\"", ), ], ), Ident { expr: [], line: 33, }, Operator( ( "..", true, ), ), Symbol( "\" endian\"", ), ], ], ), ], line: 32, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\talignment: \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "align", ), ], line: 34, }, ], ], ), ], line: 33, }, Function { local: false, name: [ Symbol( "checkerror", ), ], args: [ "msg", "f", "...", ], body: CodeBlock { start: 176, code: [ Variable { names: [ ( "status", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 39, }, ], [ Symbol( "...", ), ], ], ), ], line: 39, }, ], ], line: 39, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "status", ), ], line: 41, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 41, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 41, }, ], ], ), ], line: 41, }, ], ], ), ], line: 39, }, ], end: 202, }, line: 42, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"B\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"B\"", ), ], [ Symbol( "0xff", ), ], ], ), ], line: 45, }, ], ], ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "0xff", ), ], ], ), ], line: 42, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"b\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"b\"", ), ], [ Symbol( "0x7f", ), ], ], ), ], line: 46, }, ], ], ), ], line: 46, }, Operator( ( "==", true, ), ), Symbol( "0x7f", ), ], ], ), ], line: 45, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"b\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"b\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "0x80", ), ], ], ), ], line: 47, }, ], ], ), ], line: 47, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "0x80", ), ], ], ), ], line: 46, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"H\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"H\"", ), ], [ Symbol( "0xffff", ), ], ], ), ], line: 49, }, ], ], ), ], line: 49, }, Operator( ( "==", true, ), ), Symbol( "0xffff", ), ], ], ), ], line: 47, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"h\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"h\"", ), ], [ Symbol( "0x7fff", ), ], ], ), ], line: 50, }, ], ], ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "0x7fff", ), ], ], ), ], line: 49, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"h\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"h\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "0x8000", ), ], ], ), ], line: 51, }, ], ], ), ], line: 51, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "0x8000", ), ], ], ), ], line: 50, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"L\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"L\"", ), ], [ Symbol( "0xffffffff", ), ], ], ), ], line: 53, }, ], ], ), ], line: 53, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 51, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"l\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"l\"", ), ], [ Symbol( "0x7fffffff", ), ], ], ), ], line: 54, }, ], ], ), ], line: 54, }, Operator( ( "==", true, ), ), Symbol( "0x7fffffff", ), ], ], ), ], line: 53, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"l\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"l\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "0x80000000", ), ], ], ), ], line: 55, }, ], ], ), ], line: 55, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "0x80000000", ), ], ], ), ], line: 54, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "NB", ), ], line: 58, }, ], step: None, code: CodeBlock { start: 359, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"\\xff\"", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 60, }, ], ], ), ], line: 60, }, ], ], line: 60, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 61, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 61, }, ], ], ), ], line: 60, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 62, }, ], ], ), ], line: 62, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 62, }, ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 63, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 63, }, ], ], ), ], line: 63, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 62, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 63, }, ], values: [ [ Symbol( "\"\\xAA\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"\\0\"", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 66, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 66, }, ], ], line: 66, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"I\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 69, }, ], [ Symbol( "0xAA", ), ], ], ), ], line: 69, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), Symbol( ":", ), Symbol( "reverse", ), Call( [], ), ], line: 69, }, ], ], ), ], line: 68, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\">I\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 70, }, ], [ Ident { expr: [ Symbol( "s", ), Symbol( ":", ), Symbol( "reverse", ), Call( [], ), ], line: 70, }, ], ], ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "0xAA", ), ], ], ), ], line: 69, }, ], end: 485, }, line: 71, column: 1, }, DoBlock( CodeBlock { start: 486, code: [ Variable { names: [ ( "lnum", false, ), ], values: [ [ Symbol( "0x13121110090807060504030201", ), ], ], line: 75, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 85, }, ], [ Expr( [ Symbol( "\"\\xFF\"", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "rep", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 85, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "sizeLI", ), ], line: 85, }, ], ], ), ], line: 85, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), Symbol( ":", ), Symbol( "reverse", ), Call( [], ), ], line: 85, }, ], ], ), ], line: 85, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "lnum", ), ], line: 85, }, ], ], ), ], line: 84, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 90, }, ], [ Symbol( "\"\\1\"", ), Operator( ( "..", true, ), ), Expr( [ Symbol( "\"\\x00\"", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "rep", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 90, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 90, }, ], ], ), ], line: 89, }, ], end: 215, }, line: 91, column: 1, }, ], end: 702, }, ), ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "sizeLI", ), ], line: 94, }, ], step: None, code: CodeBlock { start: 709, code: [ Variable { names: [ ( "lstr", false, ), ], values: [ [ Symbol( "\"\\1\\2\\3\\4\\5\\6\\7\\8\\9\\10\\11\\12\\13\"", ), ], ], line: 96, column: 0, }, Variable { names: [ ( "lnum", false, ), ], values: [ [ Symbol( "0x13121110090807060504030201", ), ], ], line: 97, column: 0, }, Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "lnum", ), ], line: 97, }, Operator( ( "&", true, ), ), Expr( [ Operator( ( "~", false, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 97, }, Operator( ( "*", true, ), ), Symbol( "8", ), ], ), Ident { expr: [], line: 97, }, ], ), Ident { expr: [], line: 97, }, ], ), Ident { expr: [], line: 97, }, ], ], line: 98, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "lstr", ), ], line: 98, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 98, }, ], ], ), ], line: 98, }, ], ], line: 98, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 100, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 100, }, ], ], ), ], line: 100, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), Symbol( ":", ), Symbol( "reverse", ), Call( [], ), ], line: 100, }, ], ], ), ], line: 99, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\">i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 101, }, ], [ Ident { expr: [ Symbol( "s", ), Symbol( ":", ), Symbol( "reverse", ), Call( [], ), ], line: 101, }, ], ], ), ], line: 101, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 101, }, ], ], ), ], line: 100, }, ], end: 796, }, line: 102, column: 1, }, DoBlock( CodeBlock { start: 797, code: [ Variable { names: [ ( "u", false, ), ], values: [ [ Symbol( "0xf0", ), ], ], line: 107, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "sizeLI", ), ], line: 107, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 13, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"I\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 109, }, ], [ Symbol( "\"\\xf0\"", ), Operator( ( "..", true, ), ), Expr( [ Symbol( "\"\\xff\"", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "rep", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 109, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 109, }, ], ], ), ], line: 109, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u", ), ], line: 109, }, ], ], ), ], line: 108, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 109, }, ], values: [ [ Ident { expr: [ Symbol( "u", ), ], line: 110, }, Operator( ( "*", true, ), ), Symbol( "256", ), Operator( ( "+", true, ), ), Symbol( "0xff", ), ], ], line: 110, column: 7, }, ], end: 70, }, line: 111, column: 1, }, ], end: 868, }, ), DoBlock( CodeBlock { start: 869, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">i2 i2\"", ), ], [ Symbol( "\"\\10\\0\\0\\20\"", ), ], ], ), ], line: 117, }, ], ], line: 117, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"=i4\"", ), ], [ Symbol( "2001", ), ], ], ), ], line: 119, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"i4\"", ), ], [ Symbol( "2001", ), ], ], ), ], line: 119, }, ], ], ), ], line: 118, }, ], end: 920, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing invalid formats\"", ), ], ], ), ], line: 120, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of limits\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 124, }, ], [ Symbol( "\"i0\"", ), ], [ Symbol( "0", ), ], ], ), ], line: 122, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of limits\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 125, }, ], [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "NB", ), ], line: 125, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Symbol( "0", ), ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of limits\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 126, }, ], [ Symbol( "\"!\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "NB", ), ], line: 126, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Symbol( "0", ), ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"%(17%) out of limits %[1,16%]\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 127, }, ], [ Symbol( "\"Xi\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "NB", ), ], line: 127, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 126, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid format option 'r'\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 128, }, ], [ Symbol( "\"i3r\"", ), ], [ Symbol( "0", ), ], ], ), ], line: 127, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"16%-byte integer\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 129, }, ], [ Symbol( "\"i16\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'\\3'", ), ], [ Symbol( "16", ), ], ], ), ], line: 129, }, ], ], ), ], line: 128, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"not power of 2\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 130, }, ], [ Symbol( "\"!4i3\"", ), ], [ Symbol( "0", ), ], ], ), ], line: 129, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"missing size\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 131, }, ], [ Symbol( "\"c\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 130, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"variable%-length format\"", ), ], [ Ident { expr: [ Symbol( "packsize", ), ], line: 132, }, ], [ Symbol( "\"s\"", ), ], ], ), ], line: 131, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"variable%-length format\"", ), ], [ Ident { expr: [ Symbol( "packsize", ), ], line: 133, }, ], [ Symbol( "\"z\"", ), ], ], ), ], line: 132, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid format\"", ), ], [ Ident { expr: [ Symbol( "packsize", ), ], line: 136, }, ], [ Symbol( "\"c1\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"0\"", ), ], [ Symbol( "40", ), ], ], ), ], line: 136, }, ], ], ), ], line: 133, }, IfStatement { condition: [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"i\"", ), ], ], ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], body: CodeBlock { start: 1063, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"c268435456\"", ), ], [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), ], ], ), ], line: 140, }, ], ], line: 140, column: 13, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too large\"", ), ], [ Ident { expr: [ Symbol( "packsize", ), ], line: 141, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 141, }, ], ], ), ], line: 140, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 141, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"c268435456\"", ), ], [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 143, }, Operator( ( "..", true, ), ), Symbol( "\"c268435455\"", ), ], ], line: 143, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 144, }, ], ], ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "0x7fffffff", ), ], ], ), ], line: 143, }, ], end: 1110, }, next: None, line: 145, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "sizeLI", ), ], line: 148, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 1119, code: [ Variable { names: [ ( "umax", false, ), ], values: [ [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 149, }, Operator( ( "*", true, ), ), Symbol( "8", ), ], ), Ident { expr: [], line: 149, }, ], ), Ident { expr: [], line: 149, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 150, column: 0, }, Variable { names: [ ( "max", false, ), ], values: [ [ Ident { expr: [ Symbol( "umax", ), ], line: 150, }, Operator( ( ">>", true, ), ), Symbol( "1", ), ], ], line: 151, column: 0, }, Variable { names: [ ( "min", false, ), ], values: [ [ Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "max", ), ], line: 151, }, ], ], line: 151, column: 5, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"overflow\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 152, }, ], [ Symbol( "\"I\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 154, }, ], [ Ident { expr: [ Symbol( "umax", ), ], line: 154, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"overflow\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 156, }, ], [ Symbol( "\">i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 156, }, ], [ Ident { expr: [ Symbol( "umax", ), ], line: 156, }, ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"overflow\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 157, }, ], [ Symbol( "\">i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 157, }, ], [ Ident { expr: [ Symbol( "max", ), ], line: 157, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"overflow\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 158, }, ], [ Symbol( "\"i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 160, }, ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">i\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 160, }, ], [ Ident { expr: [ Symbol( "max", ), ], line: 160, }, ], ], ), ], line: 160, }, ], ], ), ], line: 160, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "max", ), ], line: 160, }, ], ], ), ], line: 158, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"I\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 162, }, ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">I\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 162, }, ], [ Ident { expr: [ Symbol( "umax", ), ], line: 162, }, ], ], ), ], line: 162, }, ], ], ), ], line: 162, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "umax", ), ], line: 162, }, ], ], ), ], line: 161, }, ], end: 1284, }, line: 163, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\">j\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">j\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 166, }, ], ], ), ], line: 166, }, ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 166, }, ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"f\"", ), ], [ Symbol( "24", ), ], ], ), ], line: 173, }, ], ], ), ], line: 173, }, ], end: 1379, }, next: None, line: 174, column: 1, }, ), line: 174, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing pack/unpack of floating-point numbers\"", ), ], ], ), ], line: 174, }, ForFuncLoop { iters: [ "_", "n", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Table { data: [ ( None, [ Symbol( "0", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1.1", ), ], ), ( None, [ Symbol( "1.9", ), ], ), ( None, [ Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ), ( None, [ Symbol( "1e20", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1e20", ), ], ), ( None, [ Symbol( "0.1", ), ], ), ( None, [ Symbol( "2000.7", ), ], ), ], line: 178, column: 32, }, ], ], ), ], line: 178, }, ], stop: None, initial: None, code: CodeBlock { start: 1414, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 179, }, ], ], ), ], line: 179, }, ], ], ), ], line: 179, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 179, }, ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 181, }, ], ], ), ], line: 181, }, ], ], ), ], line: 181, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 181, }, ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"f\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 182, }, ], ], ), Symbol( ":", ), Symbol( "reverse", ), Call( [], ), ], line: 182, }, ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">d\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 183, }, ], ], ), ], line: 183, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"f\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">f\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 189, }, ], ], ), ], line: 189, }, ], ], ), ], line: 189, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 189, }, ], ], ), ], line: 188, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"d\"", ), ], [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">d\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 191, }, ], ], ), ], line: 191, }, ], ], ), ], line: 191, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 191, }, ], ], ), ], line: 190, }, ], end: 1599, }, line: 192, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing pack/unpack of strings\"", ), ], ], ), ], line: 192, }, DoBlock( CodeBlock { start: 1602, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"abc\"", ), ], [ Symbol( "1000", ), ], ], ), ], line: 196, }, ], ], line: 196, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"zB\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 197, }, ], [ Symbol( "247", ), ], ], ), ], line: 197, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 197, }, Operator( ( "..", true, ), ), Symbol( "\"\\0\\xF7\"", ), ], ], ), ], line: 196, }, Variable { names: [ ( "s1", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"zB\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 198, }, Operator( ( "..", true, ), ), Symbol( "\"\\0\\xF9\"", ), ], ], ), ], line: 198, }, ], ], line: 198, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "249", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "s1", ), ], line: 199, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 199, }, ], ], ), ], line: 198, }, Alter { names: [ Ident { expr: [ Symbol( "s1", ), ], line: 199, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"s\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 200, }, ], ], ), ], line: 200, }, ], ], line: 200, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"s\"", ), ], [ Ident { expr: [ Symbol( "s1", ), ], line: 201, }, ], ], ), ], line: 201, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 201, }, ], ], ), ], line: 200, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"does not fit\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 203, }, ], [ Symbol( "\"s1\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 203, }, ], ], ), ], line: 201, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"contains zeros\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 205, }, ], [ Symbol( "\"z\"", ), ], [ Symbol( "\"alo\\0\"", ), ], ], ), ], line: 203, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"unfinished string\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 207, }, ], [ Symbol( "\"zc10000000\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 205, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "NB", ), ], line: 209, }, ], step: None, code: CodeBlock { start: 106, code: [ Variable { names: [ ( "s1", false, ), ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"s\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 210, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 210, }, ], ], ), ], line: 210, }, ], ], line: 210, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"s\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 211, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 211, }, ], ], ), ], line: 211, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 211, }, Operator( ( "and", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s1", ), ], line: 211, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 211, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 211, }, ], ], ), ], line: 210, }, ], end: 139, }, line: 212, column: 1, }, ], end: 1742, }, ), DoBlock( CodeBlock { start: 1743, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"s\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 216, }, ], ], line: 216, column: 9, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too short\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 217, }, ], [ Symbol( "\"s\"", ), ], [ Ident { expr: [ Symbol( "x", ), Symbol( ":", ), Symbol( "sub", ), Call( [ [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 217, }, ], ], ), ], line: 216, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"too short\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 218, }, ], [ Symbol( "\"c5\"", ), ], [ Symbol( "\"abcd\"", ), ], ], ), ], line: 217, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of limits\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 219, }, ], [ Symbol( "\"s100\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 218, }, ], end: 1791, }, ), DoBlock( CodeBlock { start: 1792, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"c0\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 223, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 223, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"c0\"", ), ], ], ), ], line: 224, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 223, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"c0\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 225, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 224, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"!4 c6\"", ), ], [ Symbol( "\"abcdef\"", ), ], ], ), ], line: 228, }, Operator( ( "==", true, ), ), Symbol( "\"abcdef\"", ), ], ], ), ], line: 227, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"c3\"", ), ], [ Symbol( "\"123\"", ), ], ], ), ], line: 229, }, Operator( ( "==", true, ), ), Symbol( "\"123\"", ), ], ], ), ], line: 228, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"c0\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 230, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 229, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"c8\"", ), ], [ Symbol( "\"123456\"", ), ], ], ), ], line: 231, }, Operator( ( "==", true, ), ), Symbol( "\"123456\\0\\0\"", ), ], ], ), ], line: 230, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"c88\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 232, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"\\0\"", ), ], [ Symbol( "88", ), ], ], ), ], line: 232, }, ], ], ), ], line: 231, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"c188\"", ), ], [ Symbol( "\"ab\"", ), ], ], ), ], line: 233, }, Operator( ( "==", true, ), ), Symbol( "\"ab\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"\\0\"", ), ], [ Symbol( "188", ), Operator( ( "-", true, ), ), Symbol( "2", ), ], ], ), ], line: 233, }, ], ], ), ], line: 232, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!4 z c3\"", ), ], [ Symbol( "\"abcdefghi\\0xyz\"", ), ], ], ), ], line: 234, }, ], ], line: 234, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "\"abcdefghi\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "\"xyz\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "14", ), ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"longer than\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 236, }, ], [ Symbol( "\"c3\"", ), ], [ Symbol( "\"1234\"", ), ], ], ), ], line: 235, }, ], end: 1965, }, ), DoBlock( CodeBlock { start: 1966, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"!8 b Xh i4 i8 c1 Xi8\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "12", ), ], [ Symbol( "100", ), ], [ Symbol( "200", ), ], [ Symbol( "\"\\xEC\"", ), ], ], ), ], line: 252, }, ], ], line: 252, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 253, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\">!8 b Xh i4 i8 c1 Xi8\"", ), ], ], ), ], line: 253, }, ], ], ), ], line: 252, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 254, }, Operator( ( "==", true, ), ), Symbol( "\"\\xf4\"", ), Operator( ( "..", true, ), ), Symbol( "\"\\0\\0\\0\"", ), Operator( ( "..", true, ), ), Symbol( "\"\\0\\0\\0\\100\"", ), Operator( ( "..", true, ), ), Symbol( "\"\\0\\0\\0\\0\\0\\0\\0\\xC8\"", ), Operator( ( "..", true, ), ), Symbol( "\"\\xEC\"", ), Operator( ( "..", true, ), ), Symbol( "\"\\0\\0\\0\\0\\0\\0\\0\"", ), ], ], ), ], line: 253, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\">!8 c1 Xh i4 i8 b Xi8 XI XH\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 258, }, ], ], ), ], line: 258, }, ], ], line: 258, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 259, }, Operator( ( "==", true, ), ), Symbol( "\"\\xF4\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 259, }, Operator( ( "==", true, ), ), Symbol( "100", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 259, }, Operator( ( "==", true, ), ), Symbol( "200", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 259, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "pos", ), ], line: 259, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 259, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 259, }, ], ], ), ], line: 258, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 259, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\">!4 c3 c4 c2 z i4 c5 c2 Xi4\"", ), ], [ Symbol( "\"abc\"", ), ], [ Symbol( "\"abcd\"", ), ], [ Symbol( "\"xz\"", ), ], [ Symbol( "\"hello\"", ), ], [ Symbol( "5", ), ], [ Symbol( "\"world\"", ), ], [ Symbol( "\"xy\"", ), ], ], ), ], line: 261, }, ], ], line: 262, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "\"abcabcdxzhello\\0\\0\\0\\0\\0\\5worldxy\\0\"", ), ], ], ), ], line: 262, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ( "e", false, ), ( "f", false, ), ( "g", false, ), ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\">!4 c3 c4 c2 z i4 c5 c2 Xh Xi4\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 264, }, ], ], ), ], line: 264, }, ], ], line: 264, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "\"abc\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "\"abcd\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "\"xz\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "\"hello\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), ], line: 266, }, Operator( ( "==", true, ), ), Symbol( "\"world\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), ], line: 266, }, Operator( ( "==", true, ), ), Symbol( "\"xy\"", ), Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "pos", ), ], line: 266, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 266, }, Operator( ( "%", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 264, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 266, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\" b b Xd b Xb x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 268, }, ], ], line: 268, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\" b b Xd b Xb x\"", ), ], ], ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 268, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "\"\\1\\2\\3\\0\"", ), ], ], ), ], line: 269, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 270, }, Ident { expr: [ Symbol( "b", ), ], line: 271, }, Ident { expr: [ Symbol( "c", ), ], line: 271, }, Ident { expr: [ Symbol( "pos", ), ], line: 271, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"bbXdb\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 271, }, ], ], ), ], line: 271, }, ], ], line: 271, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "pos", ), ], line: 272, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 272, }, ], ], ), ], line: 271, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"!8 xXi8\"", ), ], ], ), ], line: 275, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 272, }, Variable { names: [ ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!8 xXi8\"", ), ], [ Symbol( "\"0123456701234567\"", ), ], ], ), ], line: 276, }, ], ], line: 276, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pos", ), ], line: 276, }, Operator( ( "==", true, ), ), Symbol( "9", ), ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"!8 xXi2\"", ), ], ], ), ], line: 277, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 276, }, Variable { names: [ ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!8 xXi2\"", ), ], [ Symbol( "\"0123456701234567\"", ), ], ], ), ], line: 278, }, ], ], line: 278, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pos", ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 278, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"!2 xXi2\"", ), ], ], ), ], line: 279, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 278, }, Variable { names: [ ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!2 xXi2\"", ), ], [ Symbol( "\"0123456701234567\"", ), ], ], ), ], line: 280, }, ], ], line: 280, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pos", ), ], line: 280, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"!2 xXi8\"", ), ], ], ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 280, }, Variable { names: [ ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!2 xXi8\"", ), ], [ Symbol( "\"0123456701234567\"", ), ], ], ), ], line: 282, }, ], ], line: 282, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pos", ), ], line: 282, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "packsize", ), Call( [ [ Symbol( "\"!16 xXi16\"", ), ], ], ), ], line: 283, }, Operator( ( "==", true, ), ), Symbol( "16", ), ], ], ), ], line: 282, }, Variable { names: [ ( "pos", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!16 xXi16\"", ), ], [ Symbol( "\"0123456701234567\"", ), ], ], ), ], line: 284, }, ], ], line: 284, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pos", ), ], line: 284, }, Operator( ( "==", true, ), ), Symbol( "17", ), ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid next option\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 286, }, ], [ Symbol( "\"X\"", ), ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid next option\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 287, }, ], [ Symbol( "\"XXi\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 286, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid next option\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 288, }, ], [ Symbol( "\"X i\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 287, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid next option\"", ), ], [ Ident { expr: [ Symbol( "pack", ), ], line: 289, }, ], [ Symbol( "\"Xc1\"", ), ], ], ), ], line: 288, }, ], end: 2471, }, ), DoBlock( CodeBlock { start: 2472, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Symbol( "\"i4i4i4i4\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 293, }, ], ], line: 294, column: 0, }, ForLoop { iter: "pos", start: [ Symbol( "1", ), ], end: [ Symbol( "16", ), ], step: Some( [ Symbol( "4", ), ], ), code: CodeBlock { start: 24, code: [ Variable { names: [ ( "i", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"i4\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 295, }, ], [ Ident { expr: [ Symbol( "pos", ), ], line: 295, }, ], ], ), ], line: 295, }, ], ], line: 295, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 296, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pos", ), ], line: 296, }, Operator( ( "//", true, ), ), Symbol( "4", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 296, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pos", ), ], line: 296, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], ], ), ], line: 295, }, ], end: 54, }, line: 297, column: 1, }, ForLoop { iter: "pos", start: [ Symbol( "0", ), ], end: [ Symbol( "12", ), ], step: None, code: CodeBlock { start: 61, code: [ Variable { names: [ ( "i", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!4 i4\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 301, }, ], [ Ident { expr: [ Symbol( "pos", ), ], line: 301, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 301, }, ], ], line: 301, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 302, }, Operator( ( "==", true, ), ), Expr( [ Ident { expr: [ Symbol( "pos", ), ], line: 302, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 302, }, Operator( ( "//", true, ), ), Symbol( "4", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 302, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 302, }, Operator( ( "*", true, ), ), Symbol( "4", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 301, }, ], end: 99, }, line: 303, column: 1, }, Variable { names: [ ( "i", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!4 i4\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 306, }, ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 306, }, ], ], line: 306, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 307, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 307, }, Operator( ( "==", true, ), ), Symbol( "17", ), ], ], ), ], line: 306, }, Variable { names: [ ( "i", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!4 i4\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 308, }, ], [ Operator( ( "-", false, ), ), Symbol( "7", ), ], ], ), ], line: 308, }, ], ], line: 308, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 309, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 309, }, Operator( ( "==", true, ), ), Symbol( "17", ), ], ], ), ], line: 308, }, Variable { names: [ ( "i", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"!4 i4\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 310, }, ], [ Operator( ( "-", false, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 310, }, ], ], ), ], line: 310, }, ], ], line: 310, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 311, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 311, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 310, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 314, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 182, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Symbol( "\"c0\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 315, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 315, }, ], ], ), ], line: 315, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 315, }, ], end: 196, }, line: 316, column: 1, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of string\"", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 317, }, ], [ Symbol( "\"c0\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 317, }, ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 317, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ], ), ], line: 316, }, ], end: 2684, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"OK\"", ), ], ], ), ], line: 319, }, ]