--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-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: 25, column: 6, }, ], ], line: 26, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 26, }, ], step: None, code: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "ts", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 26, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 26, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"\\\\u{%x}\"", ), ], [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 26, }, ], ), Symbol( "]", ), ], line: 26, }, ], ], ), ], line: 26, }, ], ], line: 26, column: 18, }, ], end: 33, }, line: 26, column: 27, }, Alter { names: [ Ident { expr: [ Symbol( "ts", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 27, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), Symbol( "]", ), ], line: 26, }, ], values: [ [ Symbol( "\"'\"", ), ], ], line: 27, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "ts", ), ], line: 27, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "ts", ), ], line: 28, }, ], ], ), ], line: 28, }, ], ], line: 28, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "ts", ), ], line: 30, }, ], ], ), ], line: 30, }, ], ], ), Call( [], ), ], line: 30, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 30, }, ], ], ), ], line: 28, }, ], end: 145, }, line: 31, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Symbol( "\"alo\"", ), ], [ Symbol( "5", ), ], ], ), ], line: 33, }, ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Symbol( "\"alo\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 34, }, ], ], ), ], line: 33, }, Function { local: true, name: [ Symbol( "check", ), ], args: [ "s", "t", "nonstrict", ], body: CodeBlock { start: 180, code: [ Variable { names: [ ( "l", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 39, }, ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 39, }, ], ], ), ], line: 39, }, ], ], line: 39, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 40, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 40, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 40, }, ], ], ), ], line: 40, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 40, }, ], ], ), ], line: 39, }, 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: 41, }, ], ], ), ], line: 41, }, ], ], ), ], line: 41, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 41, }, ], ], ), ], line: 40, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 43, }, ], [ Symbol( "0", ), ], ], ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 41, }, Ident { expr: [ Symbol( "checksyntax", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 45, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 45, }, ], ], ), ], line: 43, }, Variable { names: [ ( "t1", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 48, }, ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 48, }, ], ], ), ], line: 48, }, ], ), ], line: 48, column: 18, }, ], ], line: 48, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 49, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t1", ), ], line: 49, }, ], ], ), ], line: 48, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 50, }, ], step: None, code: CodeBlock { start: 99, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 50, }, ], ), Symbol( "]", ), ], line: 50, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 50, }, ], ), Symbol( "]", ), ], line: 50, }, ], ], ), ], line: 50, }, ], end: 112, }, line: 50, column: 21, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "l", ), ], line: 52, }, ], step: None, code: CodeBlock { start: 119, code: [ Variable { names: [ ( "pi", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 53, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 53, }, ], ], ), ], line: 53, }, ], ], line: 54, column: 0, }, Variable { names: [ ( "pi1", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 54, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "pi", ), ], line: 54, }, ], ], ), ], line: 54, }, ], ], line: 54, 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: 55, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 55, }, ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 55, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 55, }, ], [ Ident { expr: [ Symbol( "justone", ), ], line: 55, }, ], ], ), ], line: 55, }, ], ], ), ], line: 54, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 56, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 56, }, ], ], ), ], line: 56, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 56, }, ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 57, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 57, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 57, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 57, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 57, }, ], ], ), ], line: 56, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pi1", ), ], line: 58, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 58, }, 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: 58, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 58, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 58, }, ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 58, }, ], ], ), ], line: 58, }, ], ], ), ], line: 58, }, ], ], ), ], line: 57, }, ForLoop { iter: "j", start: [ Ident { expr: [ Symbol( "pi", ), ], line: 59, }, ], end: [ Ident { expr: [ Symbol( "pi1", ), ], line: 59, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 113, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 60, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "j", ), ], line: 60, }, ], ], ), ], line: 60, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "pi", ), ], line: 60, }, ], ], ), ], line: 60, }, ], end: 129, }, line: 61, column: 1, }, ForLoop { iter: "j", start: [ Ident { expr: [ Symbol( "pi", ), ], line: 62, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "pi1", ), ], line: 62, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 140, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 63, }, ], [ Ident { expr: [ Symbol( "j", ), ], line: 63, }, ], ], ), ], line: 63, }, ], ], ), ], line: 63, }, ], end: 153, }, line: 64, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 65, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 65, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 65, }, ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 65, }, ], ], ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 64, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 66, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 66, }, ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 66, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 66, }, ], ], ), ], line: 66, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 65, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 67, }, ], [ Ident { expr: [ Symbol( "pi", ), ], line: 67, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 67, }, ], ], ), ], line: 67, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 67, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 67, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 66, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 68, }, ], [ Ident { expr: [ Symbol( "pi1", ), ], line: 68, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 68, }, ], ], ), ], line: 68, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 68, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 68, }, ], ], ), ], line: 67, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 69, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "pi", ), ], line: 69, }, ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 69, }, ], ], ), ], line: 69, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 69, }, ], ], ), ], line: 68, }, ], end: 368, }, line: 70, column: 1, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 73, column: 0, }, ForFuncLoop { iters: [ "p", "c", ], expr: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codes", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 73, }, ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 73, }, ], ], ), ], line: 73, }, ], stop: None, initial: None, code: CodeBlock { start: 386, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 74, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 74, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 74, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 75, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 75, }, ], ), Symbol( "]", ), ], line: 75, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 75, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 75, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 75, }, ], ], ), ], line: 75, }, ], ], ), ], line: 74, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 76, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 76, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 76, }, ], [ Ident { expr: [ Symbol( "nonstrict", ), ], line: 76, }, ], ], ), ], line: 76, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 76, }, ], ], ), ], line: 75, }, ], end: 429, }, line: 77, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 78, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 78, }, ], ], ), ], line: 77, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 78, }, ], values: [ [ Symbol( "0", ), ], ], line: 81, column: 0, }, ForFuncLoop { iters: [ "c", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 81, }, ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "charpattern", ), ], line: 81, }, ], ], ), ], line: 81, }, ], stop: None, initial: None, code: CodeBlock { start: 453, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 82, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 82, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 82, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 83, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 83, }, ], ), Symbol( "]", ), ], line: 83, }, ], ], ), ], line: 83, }, ], ], ), ], line: 82, }, ], end: 473, }, line: 84, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 85, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 85, }, ], ], ), ], line: 84, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "l", ), ], line: 87, }, ], step: None, code: CodeBlock { start: 487, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 88, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 88, }, ], ], ), ], line: 88, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 88, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 88, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 88, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 88, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 88, }, ], ], ), ], line: 88, }, ], end: 517, }, line: 89, column: 1, }, ], end: 698, }, line: 91, column: 1, }, DoBlock( CodeBlock { start: 699, 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: 96, }, ], ], ), ], line: 96, }, ], ], line: 96, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 97, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 97, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 97, }, ], ], ), ], line: 96, }, ], end: 29, }, line: 98, column: 1, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"abc\\xE3def\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 98, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"汉字\\x80\"", ), ], [ Operator( ( "#", false, ), ), Expr( [ Symbol( "\"汉字\"", ), ], ), Ident { expr: [], line: 100, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 99, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"\\xF4\\x9F\\xBF\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 100, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"\\xF4\\x9F\\xBF\\xBF\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 101, }, ], end: 758, }, ), DoBlock( CodeBlock { start: 759, code: [ Function { local: true, name: [ Symbol( "errorcodes", ), ], args: [ "s", ], body: CodeBlock { start: 6, code: [ Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid UTF%-8 code\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7, code: [ ForFuncLoop { iters: [ "c", ], expr: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codes", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 110, }, ], ], ), ], line: 110, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 110, }, ], ], ), ], line: 110, }, ], end: 15, }, line: 110, column: 15, }, ], end: 23, }, line: 111, column: 1, }, ], ], ), ], line: 108, }, ], end: 31, }, line: 112, column: 1, }, Ident { expr: [ Symbol( "errorcodes", ), Call( [ [ Symbol( "\"ab\\xff\"", ), ], ], ), ], line: 112, }, Ident { expr: [ Symbol( "errorcodes", ), Call( [ [ Symbol( "\"\\u{110000}\"", ), ], ], ), ], line: 113, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codes", ), Call( [ [ Symbol( "\"\"", ), ], ], ), ], line: 117, }, ], ], line: 117, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "2", ), ], ], ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"\"", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 118, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mininteger", ), ], line: 120, }, ], ], ), ], line: 120, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 119, }, ], end: 844, }, ), Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 124, }, ], [ Symbol( "\"abc\"", ), ], [ Symbol( "1", ), ], [ Symbol( "5", ), ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 125, }, ], [ Symbol( "\"abc\"", ), ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 126, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"position out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 127, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 126, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"continuation byte\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 128, }, ], [ Symbol( "\"𦧺\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 127, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"continuation byte\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 129, }, ], [ Symbol( "\"𦧺\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 128, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"continuation byte\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), ], line: 130, }, ], [ Symbol( "\"\\x80\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 129, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), ], line: 133, }, ], [ Symbol( "\"abc\"", ), ], [ Symbol( "0", ), ], [ Symbol( "2", ), ], ], ), ], line: 130, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), ], line: 134, }, ], [ Symbol( "\"abc\"", ), ], [ Symbol( "1", ), ], [ Symbol( "4", ), ], ], ), ], line: 133, }, Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"hello World\"", ), ], ], line: 138, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 138, }, ], [ Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 138, }, ], ), ], line: 138, column: 16, }, ], ], line: 139, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 139, }, ], ], ), ], line: 139, }, ], step: None, code: CodeBlock { start: 1002, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 139, }, ], ), Symbol( "]", ), ], line: 139, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "byte", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 139, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 139, }, ], ], ), ], line: 139, }, ], ], ), ], line: 139, }, ], end: 1019, }, line: 139, column: 29, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 140, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 140, }, ], ], ), ], line: 139, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"汉字/漢字\"", ), ], [ Table { data: [ ( None, [ Symbol( "27721", ), ], ), ( None, [ Symbol( "23383", ), ], ), ( None, [ Symbol( "47", ), ], ), ( None, [ Symbol( "28450", ), ], ), ( None, [ Symbol( "23383", ), ], ), ], line: 142, column: 16, }, ], ], ), ], line: 140, }, DoBlock( CodeBlock { start: 1043, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"áéí\\128\"", ), ], ], line: 146, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 146, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 146, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 146, }, ], ), ], line: 146, column: 18, }, ], ], line: 146, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "225", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "233", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "237", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid UTF%-8 code\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 148, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 148, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 148, }, ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 149, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 149, }, ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 149, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 148, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 149, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 150, }, ], [ Symbol( "4", ), ], [ Symbol( "3", ), ], ], ), ], line: 150, }, ], ), ], line: 150, column: 14, }, ], ], line: 150, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 151, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 150, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 152, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 152, }, ], [ Operator( ( "-", false, ), ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 152, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 152, }, ], [ Symbol( "1", ), ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"out of bounds\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 153, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 153, }, ], [ Symbol( "1", ), ], [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 153, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Symbol( "\"\\u{D7FF}\"", ), ], ], ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "0xD800", ), Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Symbol( "\"\\u{E000}\"", ), ], ], ), ], line: 156, }, Operator( ( "==", true, ), ), Symbol( "0xDFFF", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 155, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Symbol( "\"\\u{D800}\"", ), ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "0xD800", ), ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Symbol( "\"\\u{DFFF}\"", ), ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 158, }, Operator( ( "==", true, ), ), Symbol( "0xDFFF", ), ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Symbol( "\"\\u{7FFFFFFF}\"", ), ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "0x7FFFFFFF", ), ], ], ), ], line: 158, }, ], end: 1259, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [], ), ], line: 162, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "97", ), ], [ Symbol( "98", ), ], [ Symbol( "99", ), ], [ Symbol( "1", ), ], ], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "\"\\0abc\\1\"", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0x10FFFF", ), ], ], ), ], line: 165, }, ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "0x10FFFF", ), ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Symbol( "0x7FFFFFFF", ), ], ], ), ], line: 166, }, ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "31", ), ], ), Ident { expr: [], line: 166, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"value out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), ], line: 168, }, ], [ Symbol( "0x7FFFFFFF", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"value out of range\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "char", ), ], line: 169, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 168, }, Function { local: true, name: [ Symbol( "invalid", ), ], args: [ "s", ], body: CodeBlock { start: 1361, code: [ Ident { expr: [ Symbol( "checkerror", ), Call( [ [ Symbol( "\"invalid UTF%-8 code\"", ), ], [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "codepoint", ), ], line: 172, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 172, }, ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 173, }, ], ], ), ], line: 173, }, ], ], ), ], line: 172, }, ], end: 1382, }, line: 174, column: 1, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xF4\\x9F\\xBF\\xBF\"", ), ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\u{D800}\"", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\u{DFFF}\"", ), ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xC0\\x80\"", ), ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xC1\\xBF\"", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xE0\\x9F\\xBF\"", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xF0\\x8F\\xBF\\xBF\"", ), ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\x80\"", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xBF\"", ), ], ], ), ], line: 191, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xFE\"", ), ], ], ), ], line: 192, }, Ident { expr: [ Symbol( "invalid", ), Call( [ [ Symbol( "\"\\xFF\"", ), ], ], ), ], line: 193, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Symbol( "\"\"", ), ], [ Table { data: [], line: 198, column: 6, }, ], ], ), ], line: 194, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 198, }, ], 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: 204, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 204, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 205, }, ], [ Symbol( "\" \"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 205, }, ], ], line: 205, column: 12, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 206, }, ], [ 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: 206, column: 21, }, ], ], ), ], line: 205, }, DoBlock( CodeBlock { start: 1471, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"\\u{4000000}\\u{7FFFFFFF}\"", ), ], ], line: 210, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 210, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 212, }, ], [ Table { data: [ ( None, [ Symbol( "0x4000000", ), ], ), ( None, [ Symbol( "0x7FFFFFFF", ), ], ), ], line: 212, column: 9, }, ], [ Symbol( "true", ), ], ], ), ], line: 211, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 212, }, ], values: [ [ Symbol( "\"\\u{200000}\\u{3FFFFFF}\"", ), ], ], line: 214, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 215, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 216, }, ], [ Table { data: [ ( None, [ Symbol( "0x200000", ), ], ), ( None, [ Symbol( "0x3FFFFFF", ), ], ), ], line: 216, column: 9, }, ], [ Symbol( "true", ), ], ], ), ], line: 215, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 216, }, ], values: [ [ Symbol( "\"\\u{10000}\\u{1fffff}\"", ), ], ], line: 218, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 219, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 218, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 220, }, ], [ Table { data: [ ( None, [ Symbol( "0x10000", ), ], ), ( None, [ Symbol( "0x1FFFFF", ), ], ), ], line: 220, column: 9, }, ], [ Symbol( "true", ), ], ], ), ], line: 219, }, ], end: 1539, }, ), Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 221, }, ], values: [ [ Symbol( "\"日本語a-4\\0éó\"", ), ], ], line: 223, column: 3, }, Ident { expr: [ Symbol( "check", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 224, }, ], [ 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: 224, column: 23, }, ], ], ), ], line: 223, }, 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: 229, column: 18, }, ], ], ), ], line: 224, }, 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: 232, column: 15, }, ], ], ), ], line: 229, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 236, column: 0, }, ForFuncLoop { iters: [ "p", "c", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 236, }, ], [ Symbol( "\"()(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "charpattern", ), ], line: 236, }, Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], ], ), ], line: 236, }, ], stop: None, initial: None, code: CodeBlock { start: 1633, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 237, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 237, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 237, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "offset", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 238, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 238, }, ], ], ), ], line: 238, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 238, }, ], ], ), ], line: 237, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 239, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 239, }, ], ], ), ], line: 239, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 239, }, ], ], ), ], line: 239, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 239, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 238, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "utf8", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 240, }, ], ], ), ], line: 240, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 239, }, ForLoop { iter: "j", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 241, }, 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: 242, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 242, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "j", ), ], line: 242, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 242, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 242, }, ], ], ), ], line: 242, }, ], end: 81, }, line: 243, column: 1, }, ], end: 1715, }, line: 244, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'ok'", ), ], ], ), ], line: 244, }, ]