--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/literals.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing scanner'", ), ], ], ), ], line: 1, }, Alter { names: [ Ident { expr: [ Symbol( "debug", ), ], line: 1, }, ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 3, }, ], ], line: 6, column: 0, }, Function { local: true, name: [ Symbol( "dostring", ), ], args: [ "x", ], body: CodeBlock { start: 14, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 6, }, ], ], ), ], line: 6, }, ], ], ), Call( [], ), ], line: 6, }, ], ], ), ), ], end: 25, }, line: 6, column: 17, }, Ident { expr: [ Symbol( "dostring", ), Call( [ [ Symbol( "\"x \\v\\f = \\t\\r 'a\\0a' \\v\\f\\f\"", ), ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 9, }, Operator( ( "==", true, ), ), Symbol( "'a\\0a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 9, }, ], ], ), ], line: 9, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\n\\\"\\'\\\\'", ), Operator( ( "==", true, ), ), MultilineString( "[[\n\n\"'\\]]", ), ], ], ), ], line: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Symbol( "\"\\a\\b\\f\\n\\r\\t\\v\"", ), ], [ Symbol( "\"^%c%c%c%c%c%c%c$\"", ), ], ], ), ], line: 16, }, ], ], ), ], line: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\09912\"", ), Operator( ( "==", true, ), ), Symbol( "'c12'", ), ], ], ), ], line: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\99ab\"", ), Operator( ( "==", true, ), ), Symbol( "'cab'", ), ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\099\"", ), Operator( ( "==", true, ), ), Symbol( "'\\99'", ), ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\099\\n\"", ), Operator( ( "==", true, ), ), Symbol( "'c\\10'", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0\\0alo'", ), Operator( ( "==", true, ), ), Symbol( "'\\0'", ), Operator( ( "..", true, ), ), Symbol( "'\\0\\0'", ), Operator( ( "..", true, ), ), Symbol( "'alo'", ), ], ], ), ], line: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "010", ), Operator( ( "..", true, ), ), Symbol( "020", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Symbol( "030", ), Operator( ( "==", true, ), ), Symbol( "\"1020-30\"", ), ], ], ), ], line: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\x00\\x05\\x10\\x1f\\x3C\\xfF\\xe8\"", ), Operator( ( "==", true, ), ), Symbol( "\"\\0\\5\\16\\31\\60\\255\\232\"", ), ], ], ), ], line: 25, }, Function { local: true, name: [ Symbol( "lexstring", ), ], args: [ "x", "y", "n", ], body: CodeBlock { start: 122, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "'return '", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 31, }, Operator( ( "..", true, ), ), Symbol( "', debug.getinfo(1).currentline'", ), ], ], ), ], line: 31, }, ], ], ), ], line: 31, }, ], ], line: 32, column: 0, }, Variable { names: [ ( "s", false, ), ( "l", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 32, }, ], ], line: 32, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 33, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 33, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "l", ), ], line: 33, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 33, }, ], ], ), ], line: 32, }, ], end: 155, }, line: 34, column: 1, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"'abc\\\\z \\n efg'\"", ), ], [ Symbol( "\"abcefg\"", ), ], [ Symbol( "2", ), ], ], ), ], line: 34, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"'abc\\\\z \\n\\n\\n'\"", ), ], [ Symbol( "\"abc\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"'\\\\z \\n\\t\\f\\v\\n'\"", ), ], [ Symbol( "\"\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"[[\\nalo\\nalo\\n\\n]]\"", ), ], [ Symbol( "\"alo\\nalo\\n\\n\"", ), ], [ Symbol( "5", ), ], ], ), ], line: 38, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"[[\\nalo\\ralo\\n\\n]]\"", ), ], [ Symbol( "\"alo\\nalo\\n\\n\"", ), ], [ Symbol( "5", ), ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"[[\\nalo\\ralo\\r\\n]]\"", ), ], [ Symbol( "\"alo\\nalo\\n\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 40, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"[[\\ralo\\n\\ralo\\r\\n]]\"", ), ], [ Symbol( "\"alo\\nalo\\n\"", ), ], [ Symbol( "4", ), ], ], ), ], line: 41, }, Ident { expr: [ Symbol( "lexstring", ), Call( [ [ Symbol( "\"[[alo]\\n]alo]]\"", ), ], [ Symbol( "\"alo]\\n]alo\"", ), ], [ Symbol( "2", ), ], ], ), ], line: 42, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"abc\\z\n def\\z\n ghi\\z\n \"", ), Operator( ( "==", true, ), ), Symbol( "'abcdefghi'", ), ], ], ), ], line: 43, }, Function { local: true, name: [ Symbol( "lexerror", ), ], args: [ "s", "err", ], body: CodeBlock { start: 233, code: [ Variable { names: [ ( "st", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "'return '", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 52, }, ], ], ), ], line: 52, }, ], ], line: 53, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "err", ), ], line: 53, }, Operator( ( "~=", true, ), ), Symbol( "''", ), ], body: CodeBlock { start: 16, code: [ Alter { names: [ Ident { expr: [ Symbol( "err", ), ], line: 53, }, ], values: [ [ Symbol( "\"'\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "err", ), ], line: 53, }, Operator( ( "..", true, ), ), Symbol( "\"'\"", ), ], ], line: 53, column: 7, }, ], end: 24, }, next: None, line: 53, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "st", ), ], line: 54, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 54, }, ], [ Symbol( "\"near \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "err", ), ], line: 54, }, ], [ Symbol( "1", ), ], [ Symbol( "true", ), ], ], ), ], line: 54, }, ], ], ), ], line: 53, }, ], end: 278, }, line: 55, column: 1, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"abc\\x\"]]", ), ], [ MultilineString( "[[\\x\"]]", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"abc\\x]]", ), ], [ MultilineString( "[[\\x]]", ), ], ], ), ], line: 56, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\x]]", ), ], [ MultilineString( "[[\\x]]", ), ], ], ), ], line: 57, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\x5\"]]", ), ], [ MultilineString( "[[\\x5\"]]", ), ], ], ), ], line: 58, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\x5]]", ), ], [ MultilineString( "[[\\x5]]", ), ], ], ), ], line: 59, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\xr\"]]", ), ], [ MultilineString( "[[\\xr]]", ), ], ], ), ], line: 60, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\xr]]", ), ], [ MultilineString( "[[\\xr]]", ), ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\x.]]", ), ], [ MultilineString( "[[\\x.]]", ), ], ], ), ], line: 62, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\x8%\"]]", ), ], [ MultilineString( "[[\\x8%]]", ), ], ], ), ], line: 63, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\xAG]]", ), ], [ MultilineString( "[[\\xAG]]", ), ], ], ), ], line: 64, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\g\"]]", ), ], [ MultilineString( "[[\\g]]", ), ], ], ), ], line: 65, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\g]]", ), ], [ MultilineString( "[[\\g]]", ), ], ], ), ], line: 66, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\.\"]]", ), ], [ MultilineString( "[[\\.]]", ), ], ], ), ], line: 67, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"\\999\"]]", ), ], [ MultilineString( "[[\\999]]", ), ], ], ), ], line: 68, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\"xyz\\300\"]]", ), ], [ MultilineString( "[[\\300]]", ), ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[[\" \\256\"]]", ), ], [ MultilineString( "[[\\256]]", ), ], ], ), ], line: 71, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ Symbol( "\"[=[alo]]\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 72, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ Symbol( "\"[=[alo]=\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 76, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ Symbol( "\"[=[alo]\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 77, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ Symbol( "\"'alo\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 78, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ Symbol( "\"'alo \\\\z \\n\\n\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 79, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ Symbol( "\"'alo \\\\z\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 80, }, Ident { expr: [ Symbol( "lexerror", ), Call( [ [ MultilineString( "[['alo \\98]]", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 81, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Symbol( "255", ), ], step: None, code: CodeBlock { start: 423, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "char", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 86, }, ], ], ), ], line: 86, }, ], ], line: 86, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 87, }, ], [ Symbol( "\"[a-zA-Z_]\"", ), ], ], ), ], line: 87, }, Operator( ( "==", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 87, }, Operator( ( "..", true, ), ), Symbol( "\"=1\"", ), ], ], ), ], line: 87, }, ], ], ), ], line: 86, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 88, }, ], [ Symbol( "\"[a-zA-Z_0-9]\"", ), ], ], ), ], line: 88, }, Operator( ( "==", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 89, }, Operator( ( "..", true, ), ), Symbol( "\"1 = 1\"", ), ], ], ), ], line: 89, }, ], ], ), ], line: 87, }, ], end: 475, }, line: 90, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "var", ), ], line: 90, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'a'", ), ], [ Symbol( "15000", ), ], ], ), ], line: 95, }, ], ], line: 95, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 95, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s = 5\"", ), ], [ Ident { expr: [ Symbol( "var", ), ], line: 96, }, ], ], ), ], line: 96, }, ], ], line: 96, column: 10, }, Ident { expr: [ Symbol( "dostring", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 97, }, ], ], ), ], line: 96, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "var", ), ], line: 98, }, ], ), Symbol( "]", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 97, }, Alter { names: [ Ident { expr: [ Symbol( "var", ), ], line: 98, }, ], values: [ [ Symbol( "nil", ), ], ], line: 99, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 99, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\n\\t\"", ), Operator( ( "==", true, ), ), MultilineString( "[[\n\n\t]]", ), ], ], ), ], line: 100, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ MultilineString( "[[\n\n $debug]]", ), Operator( ( "==", true, ), ), Symbol( "\"\\n $debug\"", ), ], ], ), ], line: 105, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ MultilineString( "[[ [ ]]", ), Operator( ( "~=", true, ), ), MultilineString( "[[ ] ]]", ), ], ], ), ], line: 108, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 109, }, ], values: [ [ Symbol( "\"001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789\"", ), ], ], line: 111, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 112, }, ], ], ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "960", ), ], ], ), ], line: 111, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 112, }, ], values: [ [ MultilineString( "[=[\nprint('+')\n\na1 = [[\"isto e' um string com vรกrias 'aspas'\"]]\na2 = \"'aspas'\"\n\nassert(string.find(a1, a2) == 31)\nprint('+')\n\na1 = [==[temp = [[um valor qualquer]]; ]==]\nassert(load(a1))()\nassert(temp == 'um valor qualquer')\n-- long strings --\nb = \"001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789\"\nassert(string.len(b) == 960)\nprint('+')\n\na = [[00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n00123456789012345678901234567890123456789123456789012345678901234567890123456789\n]]\nassert(string.len(a) == 1863)\nassert(string.sub(a, 1, 40) == string.sub(b, 1, 40))\nx = 1\n]=]", ), ], ], line: 157, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 157, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 159, }, ], values: [ [ Symbol( "nil", ), ], ], line: 160, column: 3, }, Ident { expr: [ Symbol( "dostring", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 161, }, ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 162, }, ], ], ), ], line: 161, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 162, }, ], values: [ [ Symbol( "nil", ), ], ], line: 164, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 164, }, ], values: [ [ Symbol( "nil", ), ], ], line: 165, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 165, }, ], values: [ [ Symbol( "nil", ), ], ], line: 166, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 166, }, ], values: [ [ MultilineString( "[[\na = 1 -- a comment\nb = 2\n\n\nx = [=[\nhi\n]=]\ny = \"\\\nhello\\r\\n\\\n\"\nreturn debug.getinfo(1).currentline\n]]", ), ], ], line: 184, column: 0, }, ForFuncLoop { iters: [ "_", "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"\\n\"", ), ], ), ( None, [ Symbol( "\"\\r\"", ), ], ), ( None, [ Symbol( "\"\\n\\r\"", ), ], ), ( None, [ Symbol( "\"\\r\\n\"", ), ], ), ], line: 184, column: 15, }, ], ], ), ], line: 184, }, ], stop: None, initial: None, code: CodeBlock { start: 593, code: [ Variable { names: [ ( "prog", false, ), ( "nn", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 185, }, ], [ Symbol( "\"\\n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 185, }, ], ], ), ], line: 185, }, ], ], line: 185, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dostring", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 186, }, ], ], ), ], line: 186, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nn", ), ], line: 186, }, ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "\"hi\\n\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "y", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "\"\\nhello\\r\\n\\n\"", ), ], ], ), ], line: 186, }, ], end: 632, }, line: 188, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 188, }, ], values: [ [ MultilineString( "[==[]=]==]", ), ], ], line: 192, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "\"]=\"", ), ], ], ), ], line: 192, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, ], values: [ [ MultilineString( "[==[[===[[=[]]=][====[]]===]===]==]", ), ], ], line: 195, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "\"[===[[=[]]=][====[]]===]===\"", ), ], ], ), ], line: 195, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 196, }, ], values: [ [ MultilineString( "[====[[===[[=[]]=][====[]]===]===]====]", ), ], ], line: 198, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "\"[===[[=[]]=][====[]]===]===\"", ), ], ], ), ], line: 198, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 199, }, ], values: [ [ MultilineString( "[=[]]]]]]]]]=]", ), ], ], line: 201, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 202, }, Operator( ( "==", true, ), ), Symbol( "\"]]]]]]]]\"", ), ], ], ), ], line: 201, }, Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"=\"", ), ], ), ( None, [ Symbol( "\"[\"", ), ], ), ( None, [ Symbol( "\"]\"", ), ], ), ( None, [ Symbol( "\"\\n\"", ), ], ), ], line: 213, column: 12, }, ], ], line: 214, column: 0, }, Variable { names: [ ( "len", false, ), ], values: [ [ Symbol( "4", ), ], ], line: 215, column: 0, }, Function { local: true, name: [ Symbol( "gen", ), ], args: [ "c", "n", ], body: CodeBlock { start: 692, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "yield", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 216, }, ], ], ), ], line: 216, }, ], end: 12, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 12, code: [ ForFuncLoop { iters: [ "_", "a", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 218, }, ], ], ), ], line: 218, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Ident { expr: [ Symbol( "gen", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 219, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 219, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 219, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 219, }, ], end: 21, }, line: 220, column: 1, }, ], end: 34, }, next: None, line: 221, column: 1, }, ), line: 221, column: 1, }, ], end: 727, }, line: 222, column: 1, }, ForFuncLoop { iters: [ "s", ], expr: [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 737, code: [ Ident { expr: [ Symbol( "gen", ), Call( [ [ Symbol( "\"\"", ), ], [ Ident { expr: [ Symbol( "len", ), ], line: 224, }, ], ], ), ], line: 224, }, ], end: 744, }, line: 224, column: 17, }, ], ], ), ], line: 224, }, ], stop: None, initial: None, code: CodeBlock { start: 746, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 225, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return [====[\\n\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 225, }, Operator( ( "..", true, ), ), Symbol( "\"]====]\"", ), ], ], ), Call( [], ), ], line: 225, }, ], ], ), ], line: 225, }, ], end: 762, }, line: 226, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"pt_BR\"", ), ], ], ), ], line: 230, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"ptb\"", ), ], ], ), ], line: 230, }, ], body: CodeBlock { start: 777, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"รก = 3\"", ), ], ], ), ], line: 231, }, ], ], ), ], line: 231, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"a = (3,4)\"", ), ], ], ), ], line: 232, }, ], ], ), ], line: 231, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "\"3,4\"", ), ], ], ), ], line: 233, }, Operator( ( "==", true, ), ), Symbol( "3.4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "\"3.4\"", ), ], ], ), ], line: 233, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 232, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return 3.4\"", ), ], ], ), ], line: 234, }, ], ], ), Call( [], ), ], line: 234, }, Operator( ( "==", true, ), ), Symbol( "3.4", ), ], ], ), ], line: 233, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return .4,3\"", ), ], ], ), ], line: 235, }, ], ], ), Call( [], ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "0.4", ), ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return 4.\"", ), ], ], ), ], line: 236, }, ], ], ), Call( [], ), ], line: 236, }, Operator( ( "==", true, ), ), Symbol( "4.0", ), ], ], ), ], line: 235, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return 4.+.5\"", ), ], ], ), ], line: 237, }, ], ], ), Call( [], ), ], line: 237, }, Operator( ( "==", true, ), ), Symbol( "4.5", ), ], ], ), ], line: 236, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return 4.5.\"", ), ], ], ), ], line: 238, }, ], ], line: 238, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 239, }, ], [ Symbol( "\"'4%.5%.'\"", ), ], ], ), ], line: 239, }, ], ], ), ], line: 238, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"C\"", ), ], ], ), ], line: 240, }, ], ], ), ], line: 239, }, ], end: 893, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 893, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 242, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 242, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\a\\n >>> pt_BR locale not available: skipping decimal point tests <<<\\n\\a'", ), ], ], ), ], line: 242, }, ], end: 902, }, next: None, line: 244, column: 1, }, ), line: 244, column: 1, }, Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "\"a string with \\r and \\n and \\r\\n and \\n\\r\"", ), ], ], line: 249, column: 0, }, Variable { names: [ ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"return %q\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 249, }, ], ], ), ], line: 249, }, ], ], line: 249, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 250, }, ], ], ), ], line: 250, }, ], ], ), Call( [], ), ], line: 250, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 250, }, ], ], ), ], line: 249, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"a = 'non-ending string\"", ), ], ], ), ], line: 253, }, ], ], ), ], line: 250, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"a = 'non-ending string\\n'\"", ), ], ], ), ], line: 254, }, ], ], ), ], line: 253, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"a = '\\\\345'\"", ), ], ], ), ], line: 255, }, ], ], ), ], line: 254, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"a = [=x]\"", ), ], ], ), ], line: 256, }, ], ], ), ], line: 255, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 256, }, ]