--- source: src/main.rs expression: parsed input_file: test-data/lua5.3-tests/utf8.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing UTF-8 library\"", ), ], ], ), ], line: 4, }, Variable { names: [ ( "utf8", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "'utf8'", ), ], ], ), ], line: 6, }, ], ], line: 9, column: 0, }, Function { local: true, name: [ Symbol( "checkerror", ), ], args: [ "msg", "f", "...", ], body: CodeBlock { start: 17, 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: 43, }, line: 12, column: 1, }, Function { local: true, name: [ Symbol( "len", ), ], args: [ "s", ], body: CodeBlock { start: 49, code: [ Return( Some( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 16, }, ], [ Symbol( "\"[\\x80-\\xBF]\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 16, }, ], ], ), ), ], end: 62, }, line: 17, column: 1, }, Variable { names: [ ( "justone", false, ), ], values: [ [ Symbol( "\"^\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "charpattern", ), ], line: 20, }, Operator( ( "..", true, ), ), Symbol( "\"$\"", ), ], ], line: 23, column: 0, }, Function { local: true, name: [ Symbol( "checksyntax", ), ], args: [ "s", "t", ], body: CodeBlock { start: 80, code: [ Variable { names: [ ( "ts", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"return '\"", ), ], ), ], line: 24, column: 6, }, ], ], line: 25, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 25, }, ], step: None, code: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "ts", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 25, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 25, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"\\\\u{%x}\"", ), ], [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 25, }, ], ), Symbol( "]", ), ], line: 25, }, ], ], ), ], line: 25, }, ], ], line: 25, column: 18, }, ], end: 33, }, line: 25, column: 27, }, Alter { names: [ Ident { expr: [ Symbol( "ts", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 26, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), Symbol( "]", ), ], line: 25, }, ], values: [ [ Symbol( "\"'\"", ), ], ], line: 26, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "ts", ), ], line: 26, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "ts", ), ], line: 27, }, ], ], ), ], line: 27, }, ], ], line: 27, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "ts", ), ], line: 28, }, ], ], ), ], line: 28, }, ], ], ), Call( [], ), ], line: 28, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 28, }, ], ], ), ], line: 27, }, ], end: 145, }, line: 29, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Symbol( "\"alo\"", ), ], [ Symbol( "5", ), ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Symbol( "\"alo\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 31, }, Function { local: true, name: [ Symbol( "check", ), ], args: [ "s", "t", ], body: CodeBlock { start: 180, code: [ Variable { names: [ ( "l", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 36, }, ], ], ), ], line: 36, }, ], ], line: 36, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 37, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 37, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 37, }, ], ], ), ], line: 37, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 37, }, ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 38, }, ], ], ), ], line: 38, }, ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 38, }, ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 40, }, ], [ Symbol( "0", ), ], ], ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 38, }, Ident { expr: [ Symbol( "checksyntax", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 42, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 42, }, ], ], ), ], line: 40, }, Variable { names: [ ( "t1", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 44, }, ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 44, }, ], ), ], line: 44, column: 16, }, ], ], line: 44, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 45, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t1", ), ], line: 45, }, ], ], ), ], line: 44, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 46, }, ], step: None, code: CodeBlock { start: 90, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 46, }, ], ), Symbol( "]", ), ], line: 46, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 46, }, ], ), Symbol( "]", ), ], line: 46, }, ], ], ), ], line: 46, }, ], end: 103, }, line: 46, column: 21, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "l", ), ], line: 48, }, ], step: None, code: CodeBlock { start: 110, code: [ Variable { names: [ ( "pi", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 49, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 49, }, ], ], ), ], line: 49, }, ], ], line: 50, column: 0, }, Variable { names: [ ( "pi1", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 50, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "pi", ), ], line: 50, }, ], ], ), ], line: 50, }, ], ], line: 50, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 51, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 51, }, ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 51, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 51, }, ], [ Ident { expr: [ Symbol( "justone", ), ], line: 51, }, ], ], ), ], line: 51, }, ], ], ), ], line: 50, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 52, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 52, }, ], ], ), ], line: 52, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 52, }, ], ], ), ], line: 51, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 53, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 53, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 53, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 53, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 53, }, ], ], ), ], line: 52, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pi1", ), ], line: 54, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 54, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 54, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 54, }, ], ], ), ], line: 54, }, ], ], ), ], line: 54, }, ], ], ), ], line: 53, }, ForLoop { iter: "j", start: [ Ident { expr: [ Symbol( "pi", ), ], line: 55, }, ], end: [ Ident { expr: [ Symbol( "pi1", ), ], line: 55, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 109, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 56, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "j", ), ], line: 56, }, ], ], ), ], line: 56, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 56, }, ], ], ), ], line: 56, }, ], end: 125, }, line: 57, column: 1, }, ForLoop { iter: "j", start: [ Ident { expr: [ Symbol( "pi", ), ], line: 58, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "pi1", ), ], line: 58, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 136, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 59, }, ], [ Ident { expr: [ Symbol( "j", ), ], line: 59, }, ], ], ), ], line: 59, }, ], ], ), ], line: 59, }, ], end: 149, }, line: 60, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 61, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 61, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 61, }, ], ], ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 60, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 62, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 62, }, ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 62, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 63, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 63, }, ], ], ), ], line: 63, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 63, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 63, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 62, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 64, }, ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 64, }, ], ], ), ], line: 64, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 64, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 64, }, ], ], ), ], line: 63, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 65, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "pi", ), ], line: 65, }, ], ], ), ], line: 65, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 65, }, ], ], ), ], line: 64, }, ], end: 339, }, line: 66, column: 1, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 69, column: 0, }, ForFuncLoop { iters: [ "p", "c", ], expr: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codes", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 69, }, ], ], ), ], line: 69, }, ], stop: None, initial: None, code: CodeBlock { start: 355, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 70, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 70, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 70, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 71, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, ], ), Symbol( "]", ), ], line: 71, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 71, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 71, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, ], ], ), ], line: 71, }, ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 72, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 72, }, ], ], ), ], line: 72, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 72, }, ], ], ), ], line: 71, }, ], end: 394, }, line: 73, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 74, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 74, }, ], ], ), ], line: 73, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 74, }, ], values: [ [ Symbol( "0", ), ], ], line: 77, column: 0, }, ForFuncLoop { iters: [ "p", "c", ], expr: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codes", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 77, }, ], ], ), ], line: 77, }, ], stop: None, initial: None, code: CodeBlock { start: 416, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 78, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 78, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 78, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 79, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 79, }, ], ), Symbol( "]", ), ], line: 79, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 79, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 79, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 79, }, ], ], ), ], line: 79, }, ], ], ), ], line: 78, }, ], end: 442, }, line: 80, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 81, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 81, }, ], ], ), ], line: 80, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 81, }, ], values: [ [ Symbol( "0", ), ], ], line: 84, column: 0, }, ForFuncLoop { iters: [ "c", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 84, }, ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "charpattern", ), ], line: 84, }, ], ], ), ], line: 84, }, ], stop: None, initial: None, code: CodeBlock { start: 466, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 85, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 85, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 85, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 86, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 86, }, ], ), Symbol( "]", ), ], line: 86, }, ], ], ), ], line: 86, }, ], ], ), ], line: 85, }, ], end: 486, }, line: 87, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 88, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 88, }, ], ], ), ], line: 87, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "l", ), ], line: 90, }, ], step: None, code: CodeBlock { start: 500, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 91, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 91, }, ], ], ), ], line: 91, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 91, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 91, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 91, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 91, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 91, }, ], ], ), ], line: 91, }, ], end: 530, }, line: 92, column: 1, }, ], end: 711, }, line: 94, column: 1, }, DoBlock( CodeBlock { start: 712, code: [ Function { local: true, name: [ Symbol( "check", ), ], args: [ "s", "p", ], body: CodeBlock { start: 8, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 99, }, ], ], ), ], line: 99, }, ], ], line: 99, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 100, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 100, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 100, }, ], ], ), ], line: 99, }, ], end: 29, }, line: 101, column: 1, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"abc\\xE3def\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 101, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"汉字\\x80\"", ), ], [ Operator( ( "#", false, ), ), Expr( [ Symbol( "\"汉字\"", ), ], ), Ident { expr: [], line: 103, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 102, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"\\xF4\\x9F\\xBF\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 103, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"\\xF4\\x9F\\xBF\\xBF\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 104, }, ], end: 771, }, ), Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid UTF%-8 code\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 778, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"ab\\xff\"", ), ], ], line: 112, column: 0, }, ForFuncLoop { iters: [ "c", ], expr: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codes", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 112, }, ], ], ), ], line: 112, }, ], stop: None, initial: None, code: CodeBlock { start: 14, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 112, }, ], ], ), ], line: 112, }, ], end: 19, }, line: 112, column: 15, }, ], end: 798, }, line: 113, column: 1, }, ], ], ), ], line: 106, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 117, }, ], [ Symbol( "\"abc\"", ), ], [ Symbol( "1", ), ], [ Symbol( "5", ), ], ], ), ], line: 113, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 118, }, ], [ Symbol( "\"abc\"", ), ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 119, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 118, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 120, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 119, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"continuation byte\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 121, }, ], [ Symbol( "\"𦧺\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 120, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"continuation byte\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 122, }, ], [ Symbol( "\"𦧺\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"continuation byte\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 123, }, ], [ Symbol( "\"\\x80\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 122, }, Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"hello World\"", ), ], ], line: 128, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 128, }, ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 128, }, ], ), ], line: 128, column: 16, }, ], ], line: 129, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 129, }, ], ], ), ], line: 129, }, ], step: None, code: CodeBlock { start: 929, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 129, }, ], ), Symbol( "]", ), ], line: 129, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 129, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 129, }, ], ], ), ], line: 129, }, ], ], ), ], line: 129, }, ], end: 946, }, line: 129, column: 29, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 130, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 130, }, ], ], ), ], line: 129, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"汉字/漢字\"", ), ], [ Table { data: [ ( None, [ Symbol( "27721", ), ], ), ( None, [ Symbol( "23383", ), ], ), ( None, [ Symbol( "47", ), ], ), ( None, [ Symbol( "28450", ), ], ), ( None, [ Symbol( "23383", ), ], ), ], line: 132, column: 16, }, ], ], ), ], line: 130, }, DoBlock( CodeBlock { start: 970, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"áéí\\128\"", ), ], ], line: 136, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 136, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 136, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 136, }, ], ), ], line: 136, column: 18, }, ], ], line: 136, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 137, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 137, }, Operator( ( "==", true, ), ), Symbol( "225", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 137, }, Operator( ( "==", true, ), ), Symbol( "233", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 137, }, Operator( ( "==", true, ), ), Symbol( "237", ), ], ], ), ], line: 136, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid UTF%-8 code\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 138, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 138, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 138, }, ], ], ), ], line: 137, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 139, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 139, }, ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 139, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 138, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 139, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 140, }, ], [ Symbol( "4", ), ], [ Symbol( "3", ), ], ], ), ], line: 140, }, ], ), ], line: 140, column: 14, }, ], ], line: 140, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 142, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 142, }, ], [ Operator( ( "-", false, ), ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 142, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 142, }, ], [ Symbol( "1", ), ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 143, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 143, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 143, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 142, }, ], end: 1109, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [], ), ], line: 146, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 144, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "97", ), ], [ Symbol( "98", ), ], [ Symbol( "99", ), ], ], ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "\"abc\"", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0x10FFFF", ), ], ], ), ], line: 149, }, ], ], ), ], line: 149, }, Operator( ( "==", true, ), ), Symbol( "0x10FFFF", ), ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"value out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), ], line: 151, }, ], [ Symbol( "0x10FFFF", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 149, }, Function { local: true, name: [ Symbol( "invalid", ), ], args: [ "s", ], body: CodeBlock { start: 1168, code: [ Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid UTF%-8 code\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 154, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 154, }, ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 155, }, ], ], ), ], line: 155, }, ], ], ), ], line: 154, }, ], end: 1189, }, line: 156, column: 1, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xF4\\x9F\\xBF\\xBF\"", ), ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xC0\\x80\"", ), ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xC1\\xBF\"", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xE0\\x9F\\xBF\"", ), ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xF0\\x8F\\xBF\\xBF\"", ), ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\x80\"", ), ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xBF\"", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xFE\"", ), ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xFF\"", ), ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"\"", ), ], [ Table { data: [], line: 176, column: 6, }, ], ], ), ], line: 172, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 176, }, ], values: [ [ Symbol( "\"\\0 \\x7F\\z\n \\xC2\\x80 \\xDF\\xBF\\z\n \\xE0\\xA0\\x80 \\xEF\\xBF\\xBF\\z\n \\xF0\\x90\\x80\\x80 \\xF4\\x8F\\xBF\\xBF\"", ), ], ], line: 182, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 182, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 183, }, ], [ Symbol( "\" \"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 183, }, ], ], line: 183, column: 12, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 184, }, ], [ Table { data: [ ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "0x7F", ), ], ), ( None, [ Symbol( "0x80", ), ], ), ( None, [ Symbol( "0x7FF", ), ], ), ( None, [ Symbol( "0x800", ), ], ), ( None, [ Symbol( "0xFFFF", ), ], ), ( None, [ Symbol( "0x10000", ), ], ), ( None, [ Symbol( "0x10FFFF", ), ], ), ], line: 184, column: 21, }, ], ], ), ], line: 183, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 184, }, ], values: [ [ Symbol( "\"日本語a-4\\0éó\"", ), ], ], line: 186, column: 3, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 187, }, ], [ Table { data: [ ( None, [ Symbol( "26085", ), ], ), ( None, [ Symbol( "26412", ), ], ), ( None, [ Symbol( "35486", ), ], ), ( None, [ Symbol( "97", ), ], ), ( None, [ Symbol( "45", ), ], ), ( None, [ Symbol( "52", ), ], ), ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "233", ), ], ), ( None, [ Symbol( "243", ), ], ), ], line: 187, column: 23, }, ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"𣲷𠜎𠱓𡁻𠵼ab𠺢\"", ), ], [ Table { data: [ ( None, [ Symbol( "0x23CB7", ), ], ), ( None, [ Symbol( "0x2070E", ), ], ), ( None, [ Symbol( "0x20C53", ), ], ), ( None, [ Symbol( "0x2107B", ), ], ), ( None, [ Symbol( "0x20D7C", ), ], ), ( None, [ Symbol( "0x61", ), ], ), ( None, [ Symbol( "0x62", ), ], ), ( None, [ Symbol( "0x20EA2", ), ], ), ], line: 192, column: 18, }, ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"𨳊𩶘𦧺𨳒𥄫𤓓\\xF4\\x8F\\xBF\\xBF\"", ), ], [ Table { data: [ ( None, [ Symbol( "0x28CCA", ), ], ), ( None, [ Symbol( "0x29D98", ), ], ), ( None, [ Symbol( "0x269FA", ), ], ), ( None, [ Symbol( "0x28CD2", ), ], ), ( None, [ Symbol( "0x2512B", ), ], ), ( None, [ Symbol( "0x244D3", ), ], ), ( None, [ Symbol( "0x10ffff", ), ], ), ], line: 195, column: 15, }, ], ], ), ], line: 192, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 199, column: 0, }, ForFuncLoop { iters: [ "p", "c", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 199, }, ], [ Symbol( "\"()(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "charpattern", ), ], line: 199, }, Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], ], ), ], line: 199, }, ], stop: None, initial: None, code: CodeBlock { start: 1363, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 200, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 200, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 200, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 201, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 201, }, ], ], ), ], line: 201, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 201, }, ], ], ), ], line: 200, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 202, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 202, }, ], ], ), ], line: 202, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 202, }, ], ], ), ], line: 202, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 202, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 201, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 203, }, ], ], ), ], line: 203, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 202, }, ForLoop { iter: "j", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 204, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 61, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 205, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 205, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 205, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 205, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 205, }, ], ], ), ], line: 205, }, ], end: 81, }, line: 206, column: 1, }, ], end: 1445, }, line: 207, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'ok'", ), ], ], ), ], line: 207, }, ]