--- source: src/main.rs expression: parsed input_file: test-data/lua5.1-tests/literals.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing scanner'", ), ], ], ), ], line: 1, }, Function { local: true, name: [ Symbol( "dostring", ), ], args: [ "x", ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 3, }, ], ], ), ], line: 3, }, ], ], ), Call( [], ), ], line: 3, }, ], ], ), ), ], end: 21, }, line: 3, column: 17, }, Ident { expr: [ Symbol( "dostring", ), Call( [ [ Symbol( "\"x = 'a\\0a'\"", ), ], ], ), ], line: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "'a\\0a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 6, }, ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\n\\\"\\'\\\\'", ), Operator( ( "==", true, ), ), MultilineString( "[[\n\n\"'\\]]", ), ], ], ), ], line: 6, }, 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: 13, }, ], ], ), ], line: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\09912\"", ), Operator( ( "==", true, ), ), Symbol( "'c12'", ), ], ], ), ], line: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\99ab\"", ), Operator( ( "==", true, ), ), Symbol( "'cab'", ), ], ], ), ], line: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\099\"", ), Operator( ( "==", true, ), ), Symbol( "'\\99'", ), ], ], ), ], line: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\099\\n\"", ), Operator( ( "==", true, ), ), Symbol( "'c\\10'", ), ], ], ), ], line: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'\\0\\0\\0alo'", ), Operator( ( "==", true, ), ), Symbol( "'\\0'", ), Operator( ( "..", true, ), ), Symbol( "'\\0\\0'", ), Operator( ( "..", true, ), ), Symbol( "'alo'", ), ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "010", ), Operator( ( "..", true, ), ), Symbol( "020", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Symbol( "030", ), Operator( ( "==", true, ), ), Symbol( "\"1020-30\"", ), ], ], ), ], line: 20, }, Alter { names: [ Ident { expr: [ Symbol( "var", ), ], line: 22, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'a'", ), ], [ Symbol( "15000", ), ], ], ), ], line: 26, }, ], ], line: 26, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 26, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s = 5\"", ), ], [ Ident { expr: [ Symbol( "var", ), ], line: 27, }, ], ], ), ], line: 27, }, ], ], line: 27, column: 10, }, Ident { expr: [ Symbol( "dostring", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 28, }, ], ], ), ], line: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "var", ), ], line: 29, }, ], ), Symbol( "]", ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 28, }, Alter { names: [ Ident { expr: [ Symbol( "var", ), ], line: 29, }, ], values: [ [ Symbol( "nil", ), ], ], line: 30, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 30, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"\\n\\t\"", ), Operator( ( "==", true, ), ), MultilineString( "[[\n\n\t]]", ), ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ MultilineString( "[[\n\n $debug]]", ), Operator( ( "==", true, ), ), Symbol( "\"\\n $debug\"", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ MultilineString( "[[ [ ]]", ), Operator( ( "~=", true, ), ), MultilineString( "[[ ] ]]", ), ], ], ), ], line: 39, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 40, }, ], values: [ [ Symbol( "\"001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789001234567890123456789012345678901234567891234567890123456789012345678901234567890012345678901234567890123456789012345678912345678901234567890123456789012345678900123456789012345678901234567890123456789123456789012345678901234567890123456789\"", ), ], ], line: 42, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 43, }, ], ], ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "960", ), ], ], ), ], line: 42, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 43, }, ], 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(loadstring(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: 88, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 88, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 90, }, ], values: [ [ Symbol( "nil", ), ], ], line: 91, column: 3, }, Ident { expr: [ Symbol( "dostring", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 92, }, ], ], ), ], line: 91, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 93, }, ], ], ), ], line: 92, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 93, }, ], values: [ [ Symbol( "nil", ), ], ], line: 95, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 95, }, ], values: [ [ Symbol( "nil", ), ], ], line: 96, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 96, }, ], values: [ [ Symbol( "nil", ), ], ], line: 97, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 97, }, ], 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: 115, 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: 115, column: 15, }, ], ], ), ], line: 115, }, ], stop: None, initial: None, code: CodeBlock { start: 220, code: [ Variable { names: [ ( "prog", false, ), ( "nn", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 116, }, ], [ Symbol( "\"\\n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], ], ), ], line: 116, }, ], ], line: 116, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dostring", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 117, }, ], ], ), ], line: 117, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nn", ), ], line: 117, }, ], ], ), ], line: 116, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "\"hi\\n\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "y", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "\"\\nhello\\r\\n\\n\"", ), ], ], ), ], line: 117, }, ], end: 259, }, line: 119, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 119, }, ], values: [ [ MultilineString( "[==[]=]==]", ), ], ], line: 123, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "\"]=\"", ), ], ], ), ], line: 123, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 124, }, ], values: [ [ MultilineString( "[==[[===[[=[]]=][====[]]===]===]==]", ), ], ], line: 126, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "\"[===[[=[]]=][====[]]===]===\"", ), ], ], ), ], line: 126, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 127, }, ], values: [ [ MultilineString( "[====[[===[[=[]]=][====[]]===]===]====]", ), ], ], line: 129, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, Operator( ( "==", true, ), ), Symbol( "\"[===[[=[]]=][====[]]===]===\"", ), ], ], ), ], line: 129, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, ], values: [ [ MultilineString( "[=[]]]]]]]]]=]", ), ], ], line: 132, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 133, }, Operator( ( "==", true, ), ), Symbol( "\"]]]]]]]]\"", ), ], ], ), ], line: 132, }, Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"=\"", ), ], ), ( None, [ Symbol( "\"[\"", ), ], ), ( None, [ Symbol( "\"]\"", ), ], ), ( None, [ Symbol( "\"\\n\"", ), ], ), ], line: 144, column: 12, }, ], ], line: 145, column: 0, }, Variable { names: [ ( "len", false, ), ], values: [ [ Symbol( "4", ), ], ], line: 146, column: 0, }, Function { local: true, name: [ Symbol( "gen", ), ], args: [ "c", "n", ], body: CodeBlock { start: 319, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "yield", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 147, }, ], ], ), ], line: 147, }, ], 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: 149, }, ], ], ), ], line: 149, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Ident { expr: [ Symbol( "gen", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 150, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 150, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 150, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 150, }, ], end: 21, }, line: 151, column: 1, }, ], end: 34, }, next: None, line: 152, column: 1, }, ), line: 152, column: 1, }, ], end: 354, }, line: 153, column: 1, }, ForFuncLoop { iters: [ "s", ], expr: [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 364, code: [ Ident { expr: [ Symbol( "gen", ), Call( [ [ Symbol( "\"\"", ), ], [ Ident { expr: [ Symbol( "len", ), ], line: 155, }, ], ], ), ], line: 155, }, ], end: 371, }, line: 155, column: 17, }, ], ], ), ], line: 155, }, ], stop: None, initial: None, code: CodeBlock { start: 373, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 156, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return [====[\\n\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 156, }, Operator( ( "..", true, ), ), Symbol( "\"]====]\"", ), ], ], ), Call( [], ), ], line: 156, }, ], ], ), ], line: 156, }, ], end: 389, }, line: 157, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"pt_BR\"", ), ], ], ), ], line: 161, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"ptb\"", ), ], ], ), ], line: 161, }, ], body: CodeBlock { start: 404, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "\"3,4\"", ), ], ], ), ], line: 162, }, Operator( ( "==", true, ), ), Symbol( "3.4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "\"3.4\"", ), ], ], ), ], line: 162, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return 3.4\"", ), ], ], ), ], line: 163, }, ], ], ), Call( [], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "3.4", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return .4,3\"", ), ], ], ), ], line: 164, }, ], ], ), Call( [], ), ], line: 164, }, Operator( ( "==", true, ), ), Symbol( "0.4", ), ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return 4.\"", ), ], ], ), ], line: 165, }, ], ], ), Call( [], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "4.0", ), ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return 4.+.5\"", ), ], ], ), ], line: 166, }, ], ], ), Call( [], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "4.5", ), ], ], ), ], line: 165, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return 4.5.\"", ), ], ], ), ], line: 167, }, ], ], line: 167, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 168, }, ], [ Symbol( "\"'4%.5%.'\"", ), ], ], ), ], line: 168, }, ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"C\"", ), ], ], ), ], line: 169, }, ], ], ), ], line: 168, }, ], end: 504, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 504, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 171, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 171, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\a\\n >>> pt_BR locale not available: skipping decimal point tests <<<\\n\\a'", ), ], ], ), ], line: 171, }, ], end: 513, }, next: None, line: 173, column: 1, }, ), line: 173, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 173, }, ]